Articles, Blog

Introducing Blackmagic RAW

February 15, 2020


– Hi, I’m Grant from Blackmagic Design, and today I’d love to update you on a new technology called Blackmagic RAW. Now, it’s a bit of a
technical update really, ’cause I wanted to explain, really, why we’ve developed our own RAW format and kind of all the details about it. Now, we’ve been working on
this for over two years now, and in fact, in some
ways, it sort of started with the original
Blackmagic Cinema Camera. That camera had a wide dynamic range, but it also used open standards. We felt open standards
were pretty important, and on that camera everything was open. We had an EF lens. We had an SSD. We used normal ProRes files. These are all standard things. Also, the camera used Cinema
DNG for its RAW format. Everything on that camera was open. The problem is, though, is that
when it came to Cinema DNG, that format’s a bit of a nightmare. It’s made up of still frames, and it’s really kind of a dumb
bucket-of-pixels-type format. It’s really just a container of pixels. It doesn’t really know
anything about the camera. To make it work, what we did is, it kinda looked open,
but it wasn’t, really. What we did is we got sort
of hacks into DaVinci Resolve to make Cinema DNG work. All the color science and everything was in Cinema DaVinci Resolve. The problem is when you opened up Cinema
DNG files in other apps, they looked really bad, and in fact it’s worse
because they’re open. You can open them up in
the Finder and things, and they look really clipped and bad because the color science is
all built into DaVinci Resolve. What that kinda meant was that people only really used a
RAW format when they had to, like if they’re doing high-end work like television commercials or films. It was pretty clear we
needed a new RAW format, one that was sort of easier
than the older RAW format, but better quality than video formats, and the result is Blackmagic RAW. It’s a format that’s easier to use, and much better quality
than video formats, but it’s got all the
benefits of RAW recording. It’s very easy to use. Ease of use is very important. We wanna try and open up
RAW recording to everyone, and it’d be nice if all the work had actually bypassed the
4:2:2 video filtering, ’cause that video filtering
is quite damaging. It’s quite bad. It kills half the color detail. If we could come up with a new format that could let you bypass that, you’d be able to use
RAW for a lot more work. I think what it might be
worth doing, to start with, is I might explain the design goals of what we wanted Blackmagic RAW to do. We kinda thought about
it as a larger problem, and we started to sort of think about, okay, well, what’s on our wish list of all the things we’d
really love for it to do. Obviously, the biggest item is we wanted a single file for everything. We didn’t want a folder full of frames. We really also wanted a new format to replace the RAW and video formats that we’d already been using. We also wanted better-quality images, even when running much
higher levels of compression. We wanted a format that was intelligent, and it could understand
the characteristics of both the camera and the sensor. This means Blackmagic RAW
is not just a simple codec that’s only a container for RAW data, but it’s much more intelligent. It understands the sensor in the camera. The other thing we’ve done
is, anyone can read the files. We’ve built a developer SDK library, which is like a module, a
software module, and it’s really, we’ve designed it to be very easy for anyone to add it into their
own software applications. This SDK library will be on every Blackmagic
camera installer, and you can also download it
from the Blackmagic RAW site, which actually will be on
the URSA Mini Pro’s website, as a tab on there. The other design goal that
we had was to make sure that the images look the
same between applications. We wanted complete
consistency between software, as well as Mac, Windows, and Linux, and so a really good example
is we wanted to allow, if you adjusted the RAW
settings in one app, we wanted those settings
to be carried across into every other app. That’s a pretty powerful feature. Another big thing we
were looking at doing is, we wanted to make Blackmagic
RAW extremely fast. Essentially, what we were trying to do is make the world’s
fastest RAW file format, and that’s a big thing as the
sensors are getting larger, and RAW data’s getting more complex. The other thing we wanted to
do is we wanted to eliminate the sort of expensive
hardware decoder boards, which is really important if
you’re using it on a laptop. You don’t really wanna have to plug in sort of any custom hardware. Another, really, goal for this format, for the Blackmagic RAW format, was we had to design it so it was easy to add into
the Blackmagic Design cameras. We’re gonna be starting
with URSA Mini Pro, but we’re gonna add it to other cameras, like the new Pocket Cinema
Camera 4K and other cameras soon. And lastly, obviously, is we wanted a format that
was free of patent issues, and in fact we’ve got a
bunch of patents happening on the technology we’ve
developed in Blackmagic RAW. I think that was really our design goals. Let’s take a quick look,
and see how all this works. Now, what I’ve done is I’ve got a bunch of
blocks here on the table, and I’ve made the blocks represent each stage of the image processing, that you have to go from the sensor all the way to a final image. Now, what this is representing is the older Cinema DNG file
format that we’ve been using. Now, what I’ll do is I’ll
explain what each block does. Now, this block represents the sensor, which is in the camera, obviously. This one’s the encoder, which
can add a bit of compression, or in case you’re using,
sometimes, no compression. The files here, this is the
block representing the file. In this case of Cinema DNG,
it’s a folder full of frames. Here’s the decoder, and this uncompresses
any kind of compression that might be used upstream
here in the camera, and we have a full de-mosaic, which is basically the bit that turns the sensor data into imagery. Can be quite complex, and then we have color balance and gamma. Now, this is where we have a lot of stuff in DaVinci Resolve, in
the Cinema DNG format, to do all the color science stuff. These two are very, very
difficult to do very well. Now, the way this is represented, this bit is in the camera, and
this bit is in the software. Now, the de-mosaic, as I was saying, needs really heavy processing. It’s much worse when you’re
doing lots of layers, say, in video editing, and
also lots of color correction. A good example is DaVinci Resolve will do a fast de-bayer when you’re editing, but then do a much higher quality one when it’s doing a final
output, and in fact, there’s a few different
de-bayer algorithms in DaVinci, and there’s been a lot of research done by the DaVinci Resolve team to get that quality better
and better all the time. That’s why it’s used in
most of the Hollywood films. Now, the alternative way
that we have experienced this is that we can do it all in the
camera, using a video codec. With video, pretty much the
whole lot’s done in the camera, but the problem is the
color detail gets killed because you’ve got the 4:2:2 compression, and the two and the two are
actually the color channels, and they halve the bandwidth of the black-and-white part of the image, so you get a lot of color
detail that’s killed. Also, compression artifacts are more noticeable in video files, because you’re compressing
the final image, and so you can really see if there’s any defects in
the final image itself. Now, Blackmagic RAW is different. What we’ve done is we’ve moved part of the
processing into the camera. I’ll show you what we’ve done. First step is I’ll take
out the full de-mosaic, because we’ve split this
into two processing stages. We’ve done a partial de-mosaic, and we’ve put that just after the sensor in the camera itself, and then it means we can
use a reduced de-mosaic in the software. That’s the pipeline for Blackmagic RAW. Now, what this means is,
that part is in the camera, and this part is in the software, and we’ve essentially moved the heaviest part of
the processing to the camera, where it can be hardware-accelerated. The hardware accelerating, the heavy part of the RAW
processing in the camera is why Blackmagic RAW is so fast. This processing is perfectly
optimized for the camera sensor because it’s actually
in the camera itself. Now, this is not a simple,
generic RAW processor. It doesn’t have to handle
any other type of camera, just the camera that
it’s in, just this one. And of course it would be
different on different cameras, but that bit’s built into the camera, so it knows exactly
everything about the camera, and everything about the sensor. Now, these parts of the
processing, which is the decoder, the reduced de-mosaic,
and the color science, are all processed in the software. The images are still in a very raw form, so you get all the flexibility
of the RAW adjustments, such as ISO, and white balance,
and everything like that, but the amount of work
that the software has to do is much, much less. The software doesn’t have to do all these sort of heavy calculations to get the quality of the de-bayering, but at the same time,
and also the benefits. It just doesn’t slow down
the software as much, because we’ve done part of
it in the camera itself. The other thing is we
also get deep bit depths. The sensor can provide much
more than 10-bit bit depths that the video file formats use, and so we get all that
through the pipeline. But that’s not all. The other thing we’ve done is we’ve added a whole bunch
of metadata to the file, so the software downstream knows everything about
the camera’s settings. I mean, it knows everything. What’s most important, though, is it knows the color science, and it fully understands
the sensor characteristics. It knows everything about the
color science of the camera. What this means is the SDK library can handle all the
sensor’s characteristics, so any downstream apps can
intelligently understand how the sensor responds
in different situations. Another benefit is that all the processing is
contained in that SDK, so it’s available for any developer to add to any other software. I mean, you just build the
library in and it works. Also, the processing uses
both the CPU and the GPU. Where it gets interesting is the compression is before
the RAW conversion. What this means is you get
much higher compression without degrading the image quality. You’re not compressing final imagery. You’re actually compressing the RAW data before it turns into imagery, so it’s much easier to decode
without image artifacts. What’s really interesting is we’ve been testing with
a bunch of DOP friends, and they’ve been using the
maximum 12:1 compression, and they haven’t been
able to see any artifacts, which is really quite incredible, and we’ve been quite surprised, actually. The feedback coming back
has been a bit of a shock, so I thought it might be worth, actually, pulling up a few slides. It’s not something we
normally do in a video, but I thought the feedback
from the beta testers was quite important, so let’s take a look
at some of the comments that the beta testers have
said about Blackmagic RAW, ’cause I think it’s quite interesting. Here’s a comment: Wow,
I’ve seen some tests, I’ve shot some tests this morning, deliberately aimed at picking
up compression issues, and I’m having a lot of difficulty identifying any visual difference between all the Blackmagic RAW options, which is really quite surprising. Some of this feedback kind
of shocked us a little bit, because you get so busy
with the technology, and then, when you see this
sort of feedback coming in, it’s quite good. Here’s another, if we can
cut to the other slide: Even at 12:1 and Q5, the images are absolutely
stunning quality. I’m also seeing a massive
improvement in the noise, too. This doesn’t look incremental. It’s almost as big as seeing footage from a different sensor,
which I think’s exciting. I think that shows it’s
transforming the quality. Here’s another slide,
if we can bring that up: After testing extensively, I have yet to see any
reason to avoid using 12:1. In fact, when I look at
it versus other codecs, it’s a no-brainer to use
this new camera codec, which, again, this is another thing that really kind of surprised us a bit. 12:1 is the maximum compression
level at the moment. It was a bit of a surprise to see that everyone just
started using that level, and got really small
files with a high quality, and there’s another slide:
Really loving this new codec. Such a great combination of RAW control with non-RAW file sizes, which pretty much, I think, sums up what we were trying to achieve. It shows we’re getting those
incredibly small files, plus great quality, and it’s good to see this
feedback on real-world tests. I think sometimes you don’t really know
what you’ve developed when you’re focused on the technology, and then you see people
actually use things creatively, and it’s really nice. It sort of balances out, and kind of, it almost tells you what
you’ve really achieved. Of course, we’ve got
all the RAW adjustments. It’s a professional workflow. It’s fast, easy used, small files. I think it’s a really… We think it’s achieving the goal we had, which is, it’s a great first-choice codec for shooting all kinds of work. It’s a good replacement for RAW codecs, and also video codecs. Again, you can sort of go to it as the first choice when you’re working. Now, we’ve also changed the way you use the codec. The settings are different. We haven’t used sort of names for, sort of made-up names for the settings. We’ve actually tried to use
setting names that are relevant, relevant names for the codec settings. For example, we’ve used numbers
like 3:1, 5:1, up to 12:1, which are simple ratios. I think that’s more logical. It’s better at describing what
the codec’s actually doing. Now, that’s the constant bit-rate setting. Blackmagic RAW actually
has two different ways of running the codec. Constant bit rate is the most common. That’s what most codecs do. It keeps the data rate consistent. Now, that’s really good for video work, when you’re shooting video, but I didn’t think it was
really good enough for RAW work. What happens if a shot needs more quality, but the bit rate can’t
rise to accommodate it? This could be very bad, as the codec would have to
start compressing harder, and you might not notice until
you’ve got a quality problem, until you’ve returned from
a shoot and it’s too late. We kind of felt like we
needed an alternative, so Blackmagic RAW has an alternative that we call constant quality. Now, technically this format
is a variable bit-rate format, and what it does, it encodes the data without really caring
what the file size is. It just grows, so if you’re
shooting a complex scene that requires more data to encode, then the file size will
just grow to accommodate it. It’s not gonna compress harder, as it’s not trying to
maintain a fixed data rate. Let me show you on the camera. If you can cut to this camera here, I’ll move out of the way, and I’m gonna show you what
this looks like in the menu. If I come down here
and go to the settings, and you can see we’ve
got Blackmagic RAW there. We’ve also got ProRes and DNG. Now, you can see the different quality
settings there I can change. That’s because it’s set
to constant bit rate, but I can actually
change this setting here, and go to constant quality, and you can see there’s a Q0 and a Q5, so we’ve got the two modes. As you can see, I’ve shown you that you
can change between them. Now, I changed between Q0 and Q5 because that’s kinda like the number that goes into the compressor stage, so it’s a different kind of number ’cause it’s a different format, but these are sort of relevant names back to what’s actually going on. Also differentiates,
you could say to someone that it’s Blackmagic
RAW Q0, and they’d know that it’s a constant
quality codec using the Q0, so it also helps you describe to somebody if you’re doing a shoot and you need to let the
post-production guys know what you’re working in. This is the mode that’ll
just encode at a fixed rate, and the file size will change based on the kinds of
images that you’re shooting. The file size can sort of
grow and shrink automatically, so sometimes the files
could actually be smaller if the shot allows it. The only downside to this type of encoding is that you could also get a data rate that’s so high that the
media can’t keep up. However, in that case, I think you’d probably
wanna know immediately if you’ve got an issue, and then you can investigate
what’s happening. I think it’s better to know if you’re having any problems on set, not later, kind of after the shoot, but it’s really your
choice what codec you use. The default is constant bit rate, and that’s what most codecs do, but you can experiment, and
try it out for yourself, and see which mode you think you like. It’s funny, actually, ’cause
the beta testers have suggested adding even tighter compression settings, because they can’t see
any of the artifacts. However, we think that it’s probably not something we should do straightaway, but maybe later we could check that out. That’s how the settings
work on the camera, and you see it’s pretty easy. It’s just another choice. The other thing that’s
probably worth mentioning is that there’s a bunch of
other features in Blackmagic RAW that are pretty important. There’s a lot of things it can do. I talked about some of
these in the design goals when I was mentioning that, but there’s really a lot more information on what Blackmagic RAW can do on the Blackmagic RAW page, and that’s on the URSA Mini Pro website. You can read a bit more
of the technical details, but I’ll cover a few of them here before sort of finishing the video so you can get a bit of a wrap-up on some of the extra capability, ’cause it’s kind of interesting. As I mentioned, Blackmagic
RAW is a single file, so all the images, sound, metadata, and the sensor information
are stored in a single file. So it’s very fast to
copy the media around. Copying still frame files, they’re much slower than
copying a larger file. So the media copying’s much quicker, and we have a simple Blackmagic RAW player that you can use to review clips, and if you cut over here, I’ve got a computer on the
desk here you can cut to, and I’ve got a few
Blackmagic RAW clips on here. Let’s have a quick look. If I open up, and you can see, here’s a clip here, and
you can see it’s very fast. I’ve also got a full-screen
mode that I can go to, but I’ll show you the other clips here. You can see there, and I’ve got no eGPU connected
on this machine, either. It’s just playing, and
you see they’re very fast, and here’s another one, and you see some really beautiful
cinematic-looking images. Look really, really quite amazing. You can see that it’s very fast. We’ve achieved a really great
full resolution decode speed, and from our tests, we
think that Blackmagic RAW is the fastest
non-hardware-accelerated RAW format currently available. Now, when decoding the frames, the CPU acceleration in the SDK library, it supports all the main architectures, including AVX, AVX2, and SSE41. Of course, it also
supports GPU acceleration via Apple Metal, and
NVIDIA CUDA, and OpenCL. It also works with the new Blackmagic eGPU for extra performance, but we don’t have one plugged in here. It doesn’t really need it,
which I probably shouldn’t say. We’ve also developed support
for Mac, Windows, and Linux, for the SDK library, and the Blackmagic player
that you just saw there is available on Mac, and it’ll
be on Windows soon, as well. Now, the next thing
I’d like to show you is we’ve got human-readable sidecar files that can be associated with the clips, and they have additional metadata that’s on top of the file metadata. When the camera’s recording, the camera generates its own metadata, which gets embedded into the file itself, but the sidecar files can
override the embedded metadata, so you don’t have to change
the metadata in the file. You can just add on top, and the metadata has all the RAW settings, but it’s also got things like
iris, focus, focal length, white balance, tint, color
space, project names, things like that, take
number, whole bunch of stuff. What I could do is we
could cut back to the file, and I’ll show you, these sidecar files
are actually generated, and have been used when
I opened up the clips, but if we could try removing one, and then you can see what it’s doing. If we go back to this
clip again and open it, you can see that’s the image. Now, that’s had some RAW
settings changed on it. If we close that and move the sidecar
file out of the folder, now it won’t be able to
find that sidecar file, so it’ll go back to the RAW metadata that was in the clip itself. I’ll open that up now, if we can cut back to the
computer, you can see. Now it’s a very flat
film gamma type image. You can see the effect that
the sidecar file’s having, so I’ll put it back in, and there it is, and you can see now it’s picked up the sidecar
file automatically, and the Blackmagic RAW library, the SDK library’s doing all that work. What it means is you can add this extra metadata to a file simply by sort of
adjusting the RAW settings in an application, and then you can save those RAW settings, and these clips had their
RAW settings adjusted in DaVinci Resolve, and that automatically
created these sidecar files. What I can do is I can actually now show you
that in DaVinci Resolve, so I’ll switch to DaVinci Resolve, which I’ve got running automatically
in the background here. There it is there. There’s the edit purge. You can see, actually, I’ll just play. You can see it all plays nice. We’ve got no eGPU on this machine. It’s just playing these files nicely. I’ve even got a screen, the feed you’re watching is
connected to the computer, just on the HDMI out, so if I go to the color
purge, and I click, so you can see the normal
color wheels will be here, but if I go to the camera
settings over here, and you can see all the metadata settings. What I can do, actually, is
let’s change the RAW settings, and you can see the effect it
has in the other application. What I’ll do is I’ll go into here, and I’ll change the ISO to 1600. You can see it’s made quite a change, and I can just update the RAW… Sorry, update the sidecar file. Now, any software that
supports the Blackmagic SDK would have these settings if the application vendor puts them in, but definitely you can read the files. Now that I’ve done that, I’ll hide DaVinci Resolve, and if I got back to this clip, you can see now the Blackmagic RAW player has picked up the higher
gamma level setting. Sorry, the ISO setting that I changed, and you can see it there, so if I quit this, and go
back to DaVinci Resolve, I could change it back, and
then update the sidecar, and it automatically
will have picked that up, and you’ll see that the
difference is there. You can see it’s quite
interesting how it does that. I’m not gonna really go
into a lot of details, ’cause the video will get too long, but all the changes you
do in DaVinci Resolve are saved in the sidecar file, so it means you can go back
to the original metadata, or use the sidecar metadata. It’s up to you, and that’s how
other software applications can see the metadata, because they’ll pick that up if they build in the
Blackmagic RAW library SDK. They’ll now get all this
capability for free, and it’s built in, and it
handles it all for them. Now, these sidecar files
are human readable. You can open then up in a
text editor, which I’ll do. I’ll go, if we can cut back to the screen, and I’ll open up with a text editor, which is TextEdit on a Mac, and you can there, you can see that there’s a whole bunch
of settings information, and you can kinda hack that. You can see there’s a
lot of RAW details there. Actually, I might zoom it up
a little so you can see it. Oops, there we go, oops, I’ve got the… I use the track pad the other way around than what they set to
the default these days, but you can see it there. Now, what’s also interesting is you see those timecode
values in the metadata file. You can animate the metadata over time, and that’s good when you’re
tracking a lens during a shot, and you wanna actually be
saving the lens position live into the metadata, so even
when you’re shooting… What’s really interesting, even if you’re shooting video gamma, the file stays in film gamma, so the metadata just tells
the Blackmagic RAW processing to use video gamma. That means any time you wanna pull up, like the black parts of the image, or pull down the white areas, if you’re color correcting,
the data are still there. Nothing’s ever clipped, even when you’re shooting in video gamma. Using video gamma images are great, because they don’t need color grading, so it’s very fast to work, because obviously, if
you’re shooting film gamma, you need to do color correction, but if you’re shooting in video gamma, you don’t have to do that, so it’s very fast if you’re
doing documentary work and things like that, that are quick, but the images in a
video codec are clipped, whereas in Blackmagic RAW they’re not, which means that you’ve still
got all that detail there. If you pull down the
whites, you’ve still detail. If you pull up the blacks, you’ve still got the detail there. You’ve got almost a video workflow, but hidden in the background
is always the fact that the file still has all
the dynamic range in it, and it’s always still there, and in the day you need to use that, you can instantly access
all that extra dynamic range of the file. I think it’s pretty exciting. The sidecar files here, they’re
overriding the metadata. It could be stored in the file. It gives you a lot of control, and so all this sort of combines with a new, advanced
de-bayering we’ve also got, which allows the noise and edge handling to be optimized for each sensor, ’cause it’s getting that information. This is one of the reasons why we’re seeing such big improvements in the quality of Blackmagic RAW when compared to the older
kind of Cinema DNG RAW format, and it’s because Blackmagic RAW is basically just more intelligent. That’s because it handles the de-bayering process is complex. It can tailor that to each sensor, and so you get the benefits of being able to use much
higher compression ratios without losing quality. There’s also other things in the format that are worth quickly mentioning. There’s user-customizable
color-space transforms so you can create your
own preferred color spaces with control of things like saturation, contrast, mids, and
highlights, and shadows. What else? The Blackmagic RAW SDK library also includes the generation
four color science, so you get really nice, organic
sort of cinematic images with any app that supports it. It’s really very cinematic looking. It’s really quite nice. It’s like a whole new camera. Anyway, that’s kind of a quick
overview of Blackmagic RAW and some of the details of how it works. I think it’s gonna make
RAW shooting really easy, but also, obviously, better quality. As far as supporting other brand cameras, been a bit of talk about that,
and it’s certainly possible. We’d need to do some technical
works on profiling sensors. It’s something we could work on. One thing that’s actually
probably worth noting, that I haven’t mentioned, you can also render to
the Blackmagic RAW files, so you can consolidate jobs when you need to export
out a DaVinci project, or a project with all the handles, with media with all the handles on it, so you can sort of bundle
the whole thing up, re-render the files, it
reprocesses them, plus handles, and then you can get that
whole package off to a facility if you need to send it
out to a third party, and that could be important if you get funding for a project. Maybe you start a project
as an indie project, and you get some funding for it, so you wanna move it to a larger facility so you can get it color
graded and then released. Anyway, to summarize, we’ll be releasing Blackmagic RAW today as a public beta for our
URSA Mini Pro cameras, and you can just go to our website now and download it free of charge. What this means is that
any URSA Mini Pro owner can download this update and get both the generation
four color science, and the new Blackmagic RAW free of charge. Just download it. It really transforms the
camera’s image quality, and it’s like getting a whole new camera. It is a public beta, but I definitely reckon it’s
worth going and getting it. It’s really a whole new
level of cinematic image. This is much more than a
simple RAW container format, because it’s intelligent,
and that’s required for high-level cinematic images, I think. It’s so much in there, so it’s hard to sort of explain it all, ’cause it gets quite technical. Also, we’ve posted an update
of DaVinci Resolve 15 today. I think it’s DaVinci Resolve 15.1, that includes support for Blackmagic RAW, so you can also download
that toady as well, and we’ve also got some sample
clips on the website, too. So, I hope you can download
it and give it a try, and also, let us know
what your thoughts are, and any features you
think you’d like to see added to the format. Also, I’d like to quickly,
before I finish up, thank all the beta testers
who’ve been working with us, and working with our engineers
to get this working so well. Their testing’s been invaluable, and like I was saying before, you don’t really know, sometimes, what you’ve finished until
someone uses it creatively. We’re half of the overall kind of product. The things that you can do
with it is the other half, so until you see what
creative people can do, cinematographers and photographers can do with these
technologies you generate, you often don’t know
what it all kinda means. It’s really nice to get that feedback, so thanks a lot, guys, for all your help, and of course I wanna personally
thank all the engineers here at Blackmagic who spent, I think about
two and a half years now working on this. I think when you see
the pictures coming in, I think all the guys really understand what all those thousands
of lines of code are for, and what all the
technology makes possible. It’s really exciting. Now, we’ll be working
hard to add Blackmagic RAW to the new Pocket Cinema Camera 4K, as well as some of our other cameras, as well as future updates. Look, I hope this update’s been useful, and that you’ve got everything
you kinda need to know about Blackmagic RAW, and I hope to see you
at a trade show soon, where we can continue all the exciting discussions
we normally have, but that’s about all I have for now. Thank you very much for
watching, and talk soon. Bye.

No Comments

Leave a Reply