Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage

Reply
 
Thread Tools Search this Thread Display Modes
Old 22nd May 2020, 05:00   #341  |  Link
JoelHruska
Registered User
 
Join Date: May 2020
Posts: 77
I avoided that one on the basis of age. The current 32-bit DGDecode.dll is from 2011. Seemed better to look for a later source than the earlier DLL based on earlier code.
JoelHruska is offline   Reply With Quote
Old 22nd May 2020, 06:01   #342  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
I will be running DS9 tests soon, but for now, I'm still using Andromeda as my guinea pig for various deinterlacing methods. Just to be ABSOLUTELY sure about the relative merits of NNEDI3+Yadifmod2 versus QTGMC, I put the following script together:

Code:
mpeg2source("212.d2v")

A=qtgmc(sourcematch=3,lossless=1).selecteven()
B=qtgmc(sourcematch=3,lossless=1).selectodd()
C=Tfm(field=1,mode=0,slow=2,mchroma=false,cthresh=1,MI=40,blockx=8,mthresh=2,clip2=A,micmatching=0)
D=Tfm(field=0,mode=0,slow=2,mchroma=false,cthresh=1,MI=40,blockx=8,mthresh=2,clip2=B,micmatching=0)

E=Interleave(C,D)

Y=nnedi3(field=-2,nsize=3,nns=4,qual=2,etype=1)

L=yadifmod2(mode=3,edeint=Y).selecteven()
M=yadifmod2(mode=3,edeint=Y).selectodd()
N=Tfm(field=1,mode=0,slow=2,mchroma=false,cthresh=1,MI=40,blockx=8,mthresh=2,clip2=L,micmatching=0)
O=Tfm(field=0,mode=0,slow=2,mchroma=false,cthresh=1,MI=40,blockx=8,mthresh=2,clip2=M,micmatching=0)
P=Interleave(N,O)

stackvertical(E,P)
(I kept the manually specified field arguments instead of using the complementparity approach because I know the field parity already)

This was the result:



Remember, that's "lossless" QTGMC at the top, and Yadifmod2+NNEDI3 at the bottom. HuRr DuRr MuH aLiAsInG.

Quote:
Originally Posted by hello_hello View Post
I didn't use something superficially similar. There's a sample encode using the exact method you posted.
No, you posted encodes using a lobotomized script that I provided for the purpose of demonstrating where Complementparity() would go. HUGE difference.

Quote:
Originally Posted by hello_hello View Post
I thought you'd be happy I showed it works. I was going to add micmatching=0 to it, to fix a glitch, but then of course I'd be accused of changing it and still calling it your method.
All of my ACTUAL methods use micmatching=0 and about a dozen other settings that I cut out of that particular bit of code because, as I stated, the complementparity demonstration code was NOT meant for actual use.

Quote:
Originally Posted by JoelHruska View Post
So what ought it be in?
For compatibility: AVI
For variable frame rate: MP4

MP4 is an official industry standard recognized by the International Organization for Standardization as ISO/IEC 14496-14:2003, whereas MKV is developed and supported by a couple of hackers in France in their spare time, so MP4 should offer slightly better compatibility than MKV. However, this is purely speculation, and I don't know of any software that works with MP4 but not MKV.

Quote:
Originally Posted by JoelHruska View Post
What app do you use for the frame-by-frame checking to see where TIVTC needs to be applied?
Just open an AVIsynth script in Virtualdub?

Not Virtualdubmod or Virtualdub2 or TheVirtualdubStrikesBack or MyOwnVirtualDubWithBlackjackAndHookers...

Quote:
Originally Posted by manono View Post
If 86% film, then that 86% is treated as if you used Force Film in DGIndex (giving you a progressive 23.976 video for those portions) and the rest undergoes a full IVTC (field-matching and decimation) with the whole thing winding up as progressive 23.976fps... If there's any real interlaced video or any progressive 29.97fps portions, that'll throw a monkey wrench into the whole procedure.
Ummm... are you assuming that the episode was encoded at 86% soft pulldown and 14% hard pulldown, just for shits and giggles? Because the DVD authors wanted to screw with us? I mean, that's not a totally insane assumption, and I've seen it before in Farscape and a few episodes of Captain Planet. It just happens to not be true in this particular case. The "real interlaced video or any progressive 29.97fps portions" make up almost the entirety of the other 14%.

Attempting to convert the whole episode to 23.976 is a very bad idea.

Quote:
Originally Posted by JoelHruska View Post
Let me break down exactly what I'm doing:

1). Rip the DVD in DVD Decrypter. This creates the following directory and populates it with VOB files: C:\DS9S6D2\VIDEO_TS
2). Load the VOB file into DGIndex. Confirm that DGIndex is set to honor pulldown flags.
3). Run the project through DGIndex. This creates a D2V file as output.
4). Load the D2V file into StaxRip. This opens the project file using MPEG2Source.
All right, cool. This is a pretty sane and simple workflow that we can replicate for the purpose of diagnosing any errors you encounter.

Quote:
Originally Posted by JoelHruska View Post
LoadPlugin("C:\Path\DGDecode.dll")
MPEG2Source("C:\Path\VTS_2_1.d2v")
Why are you manually loading an autoload plugin?

Quote:
Originally Posted by JoelHruska View Post
Can I rely on MPEG2DecPlus64.dll to provide equivalent MPEG2 decoding to DGDecode? I would prefer to use an x64 DLL if at all possible. If I need to specifically drop back to 32-bit for everything to make DGDecode work and there's no functional x64 equivalent, I can bring up a new system tomorrow.
Why are we now screwing around with 64-bit anything?
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 22nd May 2020, 06:38   #343  |  Link
manono
Moderator
 
Join Date: Oct 2001
Location: Hawaii
Posts: 7,406
Quote:
Originally Posted by Katie Boundary View Post
Ummm... are you assuming that the episode was encoded at 86% soft pulldown and 14% hard pulldown, just for shits and giggles?
As I've not seen so much as a sample, maybe it's just wishful thinking. However, I have seen combinations of hard and soft pulldown like that much more often than I've seen soft pulldown mixed with video at similar percentages.

Quote:
Attempting to convert the whole episode to 23.976 is a very bad idea.
Then you make the case for bobbing it and calling it a day. That would be a helluva lot easier, that's for sure. Either that or doing a VFR encode, something for which I, personally, have no use.

Quote:
Why are you manually loading an autoload plugin?
I do that myself. For one thing, it keeps a screwed up plugins folder from also screwing up your scripts, things such as multiple and conflicting versions of the same filter. Like you, I also thought it screwy that he was trying to do everything in 64-bit.

Last edited by manono; 22nd May 2020 at 06:43.
manono is offline   Reply With Quote
Old 22nd May 2020, 07:36   #344  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
UPDATE: I have independently confirmed the existence of at least one instance of retrograde field behavior: when the "Star Trek - Deep Space Nine" logo first fades in near the beginning of the opening credits. In addition, I'm having a hard time finding a combination of blockx and MI settings that will stop TFM from incorrectly flagging large amounts of progressive content as interlaced while still catching real interlaced content. The penalty for this is high - it causes the stars to blink in and out during space shots. I may switch to recommending blending instead of interpolation. I'll keep you all updated.

EDIT: for the sake of fairness, I tested QTGMC's performance as well. One of these images is my traditional TFM+Yadifmod2+NNEDI3 method. One of them is a variation of my method, using TFM+"Lossless" QTGMC. One of them is a variation of my method with TFM set to blend instead of bobbing/interpolation. Can you guess which is which?



Finally, I recommend adding d2v="601.d2v",flags=1 to the TFM settings in both the C and D lines. This will prevent TFM from checking for interlacing during any soft pulldown, which cuts the false positive rate dramatically. The scene that benefits from this the most, by far, is the close-up of the comet's tail.


EDIT #2: Get ready because this next script is going to REALLY blow your damn minds...

Code:
Mpeg2source("601.d2v")

A=Tfm(field=1,mode=0,slow=2,pp=2,mchroma=false,cthresh=-1,micmatching=0).converttorgb().generalconvolution(matrix = "0 -1 0 0 4 0 0 -1 0",divisor=2,auto=false).converttoyv12()
B=Tfm(field=0,mode=0,slow=2,pp=2,mchroma=false,cthresh=-1,micmatching=0).converttorgb().generalconvolution(matrix = "0 -1 0 0 4 0 0 -1 0",divisor=2,auto=false).converttoyv12()
C=Tfm(field=1,mode=0,slow=2,mchroma=false,cthresh=-1,clip2=A,d2v="601.d2v",flags=1,micmatching=0)
D=Tfm(field=0,mode=0,slow=2,mchroma=false,cthresh=-1,clip2=B,d2v="601.d2v",flags=1,micmatching=0)

interleave(C,D)
Film content is, as usual, properly field-matched and then left the goddamn hell alone. Orphaned fields get blended with their nearest matches, then vertically sharpened to undo the resulting softness. This prevents the image from suddenly getting blurrier and sharper when transitioning between film content and interlaced content.

It will, of course, still spoil any true 60 hz content by creating ghosting and cutting the effective frame rate, but I think that's a fair price to pay here.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.

Last edited by Katie Boundary; 24th May 2020 at 05:09.
Katie Boundary is offline   Reply With Quote
Old 22nd May 2020, 09:15   #345  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by Katie Boundary View Post
I will be running DS9 tests soon, but for now, I'm still using Andromeda as my guinea pig for various deinterlacing methods. Just to be ABSOLUTELY sure about the relative merits of NNEDI3+Yadifmod2 versus QTGMC, I put the following script together:
(I kept the manually specified field arguments instead of using the complementparity approach because I know the field parity already)

This was the result:
It seems you found a frame where yadif/nnedi3 looks better while using ridiculously low threshold settings and sourcermatch etc for QTGMC. Well done. Here it is again, same TFM settings, no sourcematch or lossless for QTGMC.
Similar aliasing, and a tad sharper than Yadif/nnedi3.
Most of the time when QTGMC looks less sharp it'll be because it's removed noise, as it did for the example I posted earlier.



Quote:
Originally Posted by Katie Boundary View Post
No, you posted encodes using a lobotomized script that I provided for the purpose of demonstrating where Complementparity() would go. HUGE difference.
So I'll ask again. What difference would it have made using a non lobotomised version? Would TFM have taken more pixels from nnedi3 or less? Where's the sample of how you'd do it to show it's improved?

Quote:
Originally Posted by Katie Boundary View Post
All of my ACTUAL methods use micmatching=0 and about a dozen other settings that I cut out of that particular bit of code because, as I stated, the complementparity demonstration code was NOT meant for actual use.
And I already said micmatching=0 would have fixed a glitch towards the end. That's it.
Lets be fair though and check out the huge difference you can expect to see with Katie's TFM settings vs the defaults, with the exception of micmatching=0 both times. I'll confess I've only checked the same frame again. I'm sure you'll be able to post screenshots where your settings are a vast improvement, won't you?

Katie TFM, Yadif/nnedi3, vs Default TFM, Yadif/nnedi3.
http://www.framecompare.com/image-co...rison/77DPLNNX
I assume there's a difference, as the png files are slightly different sizes.

Are you not answering my question as to how you decimate for a VFR due to a lack of reading skills or because you're ignoring it?

Quote:
Originally Posted by Katie Boundary View Post
All of my ACTUAL methods use micmatching=0 and about a dozen other settings that I cut out of that particular bit of code because, as I stated, the complementparity demonstration code was NOT meant for actual use.
So I'll ask again. What difference would it have made. Shouldn't you check a non lobotomised version is going to look better before complaining? Where's your sample encode?

Last edited by hello_hello; 22nd May 2020 at 12:02. Reason: spelling
hello_hello is offline   Reply With Quote
Old 22nd May 2020, 09:18   #346  |  Link
manono
Moderator
 
Join Date: Oct 2001
Location: Hawaii
Posts: 7,406
Quote:
Originally Posted by Katie Boundary View Post
Finally, I recommend adding d2v="601.d2v",flags=1 to the TFM settings in both the C and D lines. This will prevent TFM from checking for interlacing during any soft pulldown, which cuts the false positive rate dramatically. The scene that benefits from this the most, by far, is the close-up of the comet's tail.
Stereodude said something similar a couple of pages ago, except he likes Flags=5:

Quote:
Originally Posted by Stereodude View Post
The problem is that TFM sees combing where there is none and deinterlaces large areas of the frames despite it being progressive with no real combing. 5 puts an end to that. I didn't seen any examples of combing (except in the occasional scene change) which 5 still checks and addresses.
manono is offline   Reply With Quote
Old 22nd May 2020, 10:30   #347  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by Katie Boundary View Post
UPDATE: I have independently confirmed the existence of at least one instance of retrograde field behavior: when the "Star Trek - Deep Space Nine" logo first fades in near the beginning of the opening credits.
I can't see it. It looks fine to me if I change the field order.

N=Tfm(field=0,mode=0,micmatching=0)
O=Tfm(field=1,mode=0,micmatching=0)
Interleave(N,O)

I've no idea how you make your field order work at all for the DS9 sample.

Quote:
Originally Posted by Katie Boundary View Post
Film content is, as usual, properly field-matched and then left the goddamn hell alone. Orphaned fields get blended with their nearest matches, then vertically sharpened to undo the resulting softness. This prevents the image from suddenly getting blurrier and sharper when transitioning between film content and interlaced content.
The comet tail is noticeably mushy. The CGI shot just before it switches to film has horrible quality pumping. The quality pumping seems worse in general. The sharpening makes the aliasing more noticeable.
I'm looking at an encode using your exact settings, including the field order. I don't think switching the field order to stop the frames bouncing back and forth would change that. Edit: I checked and it didn't.

I assume the transitions between shots have been de-interlaced by TFM and treated as video, so the transitions need to be kept at 29.97fps to stay smooth for a VFR. How do you do about picking them out if you decimate?

Last edited by hello_hello; 22nd May 2020 at 11:39.
hello_hello is offline   Reply With Quote
Old 22nd May 2020, 10:31   #348  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
All right, time to feed the troll one last time.

Quote:
Originally Posted by hello_hello View Post
Are you not answering my question as to how you decimate for a VFR due to a lack of reading skills or because you're ignoring it?
I'm ignoring it because I don't give a tenth of a rat's ass about VFR, and have been advocating against VFR from the very beginning.

Quote:
Originally Posted by hello_hello View Post
So I'll ask again. What difference would it have made.
The difference is that one is my method and the other isn't.

And now, back to serious discussion:

Quote:
Originally Posted by manono View Post
Stereodude said something similar a couple of pages ago, except he likes Flags=5
Flags=1 is even stricter than 5, because 5 will look for scene changes and then perform deinterlacing around those, whereas 1 will not look for interlacing in film content ever. If there are any orphaned fields around scene changes, then there will also be an interruption in the pulldown pattern, and TFM will start checking for interlacing again anyway. I'm therefore not sure what 5 would accomplish other than getting false positives around scene changes.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 22nd May 2020, 11:23   #349  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by Katie Boundary View Post
All right, time to feed the troll one last time.
Ah.... a Katie classic. When the discussion doesn't go her way, out come the troll accusations. Why not participate in a discussion like an adult?

Quote:
Originally Posted by Katie Boundary View Post
I'm ignoring it because I don't give a tenth of a rat's ass about VFR, and have been advocating against VFR from the very beginning.
You've advised JoelHruska to output MP4 for a VFR. Where's the rest of the workflow? I'm sure you've even mentioned doing it yourself.

Quote:
Originally Posted by Katie Boundary View Post
The difference is that one is my method and the other isn't.
So lets ignore the screenshot showing the lack of difference shall we? And lets avoid explaining any specific differences while you're at it.

Quote:
Originally Posted by Katie Boundary View Post
And now, back to serious discussion:
Are you leaving the thread, or planning to finally upload a sample encode?

Last edited by hello_hello; 22nd May 2020 at 11:43.
hello_hello is offline   Reply With Quote
Old 22nd May 2020, 11:56   #350  |  Link
videoh
Useful n00b
 
Join Date: Jul 2014
Posts: 1,667
Quote:
Originally Posted by JoelHruska View Post
If I need to specifically drop back to 32-bit for everything to make DGDecode work and there's no functional x64 equivalent, I can bring up a new system tomorrow.
Don't you know that you can run 32-bit stuff on a 64-bit system? Or did I misunderstand you?
videoh is offline   Reply With Quote
Old 22nd May 2020, 12:25   #351  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by manono View Post
I do that myself. For one thing, it keeps a screwed up plugins folder from also screwing up your scripts, things such as multiple and conflicting versions of the same filter. Like you, I also thought it screwy that he was trying to do everything in 64-bit.
Not to mention that most GUI's have their own collection of plugins and load them automatically in scripts so they don't require Avisynth to be installed. The newer StaxRip comes in a 64 bit flavour only, with Avisynth and plugins to match, as far as I know, so I assume that's why he needs 64 bit plugins.

There's a 64 bit version of DGDecode here.
I know nothing about MPEG2DecPlus. I don't know which one StaxRip uses.
I guess videoh would know more about the different flavours.

Quote:
Originally Posted by manono View Post
Then you make the case for bobbing it and calling it a day. That would be a helluva lot easier, that's for sure. Either that or doing a VFR encode, something for which I, personally, have no use.
What's the disadvantage of VFR?
Avisynth outputs the average frame rate when you use TFM for the process, so you can still apply filtering to the output using a program that only supports a CFR if need be. It doesn't become VFR until the final encoding/muxing stage.

Last edited by hello_hello; 22nd May 2020 at 12:48.
hello_hello is offline   Reply With Quote
Old 22nd May 2020, 12:36   #352  |  Link
videoh
Useful n00b
 
Join Date: Jul 2014
Posts: 1,667
manono didn't say there were disadvantages, only that he has no personal use for it.
videoh is offline   Reply With Quote
Old 22nd May 2020, 12:51   #353  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by videoh View Post
manono didn't say there were disadvantages, only that he has no personal use for it.
His comment implied a bobbed CFR output suits him better, and therefore logically offers some advantage, even if it's only specific for his needs, so I found myself wondering what that might be.
Of course he may do something entirely different again, such as always converting to a 23.976 or 29.97 CFR, but as his comment implied otherwise, I thought I'd ask.

PS In case you missed the edit of my previous post, can you provide any insight regarding the different flavours of 64 bit DGDecode?

Last edited by hello_hello; 22nd May 2020 at 13:05.
hello_hello is offline   Reply With Quote
Old 22nd May 2020, 13:26   #354  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,922
if you bob it you should do 60 fps.
if you have a problem with 3:2 judder in the source then you are totally doomed with 30 fps because it's not even possible to get a 3:2 judder in 30 progressive with 24p source you get something far worse.
in fields is 4:2:2:2.
huhn is offline   Reply With Quote
Old 22nd May 2020, 13:50   #355  |  Link
Boulder
Pig on the wing
 
Boulder's Avatar
 
Join Date: Mar 2002
Location: Finland
Posts: 5,731
NTSC VFR is a problem if you playback content using Kodi.
__________________
And if the band you're in starts playing different tunes
I'll see you on the dark side of the Moon...
Boulder is offline   Reply With Quote
Old 22nd May 2020, 14:49   #356  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Quote:
Originally Posted by videoh View Post
Don't you know that you can run 32-bit stuff on a 64-bit system? Or did I misunderstand you?
Joel writes for ExtremeTech about such topics as microwaves with built-in Wi-fi and smart toilets with personal butthole recognition so I assume he's aware that 64-bit versions of Windows have a 32-bit application compatibility layer.

Quote:
Originally Posted by huhn View Post
if you bob it you should do 60 fps.
if you have a problem with 3:2 judder in the source then you are totally doomed with 30 fps because it's not even possible to get a 3:2 judder in 30 progressive with 24p source you get something far worse. in fields is 4:2:2:2.
I've never found either to be noticeable, but it may be moot. If Joel goes with my blend approach, then there won't be any true 60 hz content left, and he might be able to safely decimate down to 48 without losing any unique frames.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 22nd May 2020, 15:04   #357  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by huhn View Post
if you bob it you should do 60 fps.
if you have a problem with 3:2 judder in the source then you are totally doomed with 30 fps because it's not even possible to get a 3:2 judder in 30 progressive with 24p source you get something far worse.
in fields is 4:2:2:2.
Doesn't that depend how it was telecined?

ie a 3:3:2:2 pattern vs 3:2:3:2

https://en.wikipedia.org/wiki/Telecine#2:3_pulldown

This results in a 3:2 pattern using a progressive source.

AssumeFrameBased
SeparateFields
SelectEvery(8, 0,1, 2,3,2, 5,4, 7,6,7)
Weave
Yadif(mode=1)

Last edited by hello_hello; 22nd May 2020 at 15:09.
hello_hello is offline   Reply With Quote
Old 22nd May 2020, 15:09   #358  |  Link
videoh
Useful n00b
 
Join Date: Jul 2014
Posts: 1,667
Quote:
Originally Posted by hello_hello View Post
can you provide any insight regarding the different flavours of 64 bit DGDecode?
I haven't looked at any of them or tried them until now. I just now played around with the one here: https://github.com/Asd-g/MPEG2DecPlus (version 8). It seems to work very fine and I am impressed by the amount of work put in to create it. Bravo Chikuzen and others!

Last edited by videoh; 23rd May 2020 at 01:16.
videoh is offline   Reply With Quote
Old 22nd May 2020, 15:09   #359  |  Link
huhn
Registered User
 
Join Date: Oct 2012
Posts: 7,922
doesn't matter if the end product is progressive.

these 3:3:2:2 stuff is in field don't forget in progressive we don't have fields so they have to be a power of 2.

3:2 judder in 720p60 is a used term but it is meant in progressive frames.
huhn is offline   Reply With Quote
Old 22nd May 2020, 15:18   #360  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,829
Quote:
Originally Posted by Katie Boundary View Post
I've never found either to be noticeable, but it may be moot. If Joel goes with my blend approach, then there won't be any true 60 hz content left, and he might be able to safely decimate down to 48 without losing any unique frames.
I suspect he'll see it looks horrible. And probably wonder why the picture jitters back and forth.

PP=5 isn't blend de-interlacing as such.

Some of the CGI sections need to be treated as video to make them smooth, during fades between shots, or probably during some text overlays, even though they're technically hard telecine. That's exactly what your method is designed to achieve isn't it?
You can't bob them to 59.94fps and decimate to 48fps. Wouldn't that be much the same as de-interlacing them to 29.97 fps and decimating to 23.976?

Have you tried decimating your "blend approach" to 48fps to see how it looks?
hello_hello is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 07:21.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.