[Music]
next talk it's about risk five versus
five firm reverse five open firm rare
and how what's what the state of open
firmware absorption rate is in regards
to the risk five ecosystem so without
further you
I've nice round of applause yeah awesome
this is a really fancy set up for me so
I was trying to figure out where do I
look on but it's so high so today I'm
going to talk we're going to talk about
role of open source formats in this five
myself
aaseesh is Alastair then we have another
colleague Ono basically which we were
walking on it and he's in India so he
couldn't make it in years so to give you
an brief outline would start with what
exactly is the describe which I hope I
don't have to tell you this audience in
2019
so let's 2019 everybody should know
what's the risk five then the industry
standard opens shows bootloaders which I
hope I don't have to tell you this
audience because it's open source
firmware so everybody must be more aware
of bootloaders from where than me so
next is the risk by boot flow which I
also hope shouldn't have to go into
details Pitts exactly works how it works
for arm or x86 or anything else then
we'll talk a little bit about what's the
describe specific things and what's the
roadmap overhead and we have two cool
demos that will go in the soap before
they start will like to acknowledge
acknowledge all these people from
different projects so I am pretty sure I
might have missed couple of them so I've
tried to put out as much as could fit in
the slides so the entire ecosystem boot
ecosystem is done by the community work
which are just trying to solve one piece
in the boot puzzle everything else is
done by you good guys cold boot guys
irrigate too and then many others so it
would be unfair to start with the slide
with our work without acknowledging them
next so what is risk 5 so let's do a
quick survey how many of you guys have
actually got anything at all about risk
by what this is like branding though ok
it's good enough but it's still seeing I
don't see all hands so I guess this Chi
foundation need to pump more and more
and more money to the marketing I
thought it's enough but I guess it's not
so you'll see more one day half day I
don't know 5 day they keep organized it
saying so it's like why do we do this
why do they do this but I guess they
still need to do this so basically and
one more thing it's not a lot of people
say this could be but actually this is 5
it's a big difference but that's what
foundation wants everybody to know it's
risk v naught is V so that has to be the
first line of every what is the describe
slide it's known as it is v naught we
just make sure keep in remember that
anyways moving on it's the open source
risk reduced instruction set
architecture which is instructional I
say so we are it's basically a modular I
say which gives you a flexibility of
customizing your application customizing
your need to provide a better solution
for your product so the base I say there
is a base ice and there is bunch of
modular or extensions on top of it the
base ice is incredibly small and it's
frozen and the mostly it's integer and
embedded and then although on top of it
it's like multiplied divided atomic
floating point and then compressed
instruction so all those are also frozen
all these forms the G which is I'm FD
see known as G and then our V 64 G C
which basically boots Linux so if you
want to boot Linux on risk 5 that's the
minimum extensions you need to support
on your hardware then we have more
feature-rich advanced extension which is
such as virtualization vector with
manipulation which are still being
drafted
there are numerous working group
committees anybody who is a member of
foundation is welcome to join or if you
can be an individual member and welcome
to join in the group and then contribute
and those are draft extends and those
are being revised and as they are being
revised we go on implement it in cameo
or if there is a PC implementation we go
out and do it in the PGA to prove that
ok this spec works then it's being gets
ratified and eventually frozen once it's
frozen
there is no looking back you you can
make extension you can make amends but
it's always should be backward
compatible so one suspect is frozen you
always have to go in a route like go
forward and your software will always be
backward compatible so there are a lot
of multiple CPU implementations
available both open-source and IP
license so remember risk 5 is an ISA so
that's open but any CPU that implements
described doesn't have to be open it
depending on the company what do they
want to do there are multiple CPUs
boondock at 64 we have a swear code from
Western Digital which are open source
available at the same time you have and
this sci-fi which basically licensed
their core IP currently will be backed
by all these companies and which sees
the growth of the ecosystem now why this
why why do we need it so we need a open
source this I say to leverage the
implementation so that you can change
modify without paying any licensing cost
as far as I remember until recently
there was no I say that you can just
take it and go and change it until to
expect when IBM announced all there is
open power so here you go open power go
and take it
sometimes I wonder what caused their
change of heart but I'm nobody to answer
so but yeah so whole point is you have
an open I say so same as this five same
as open power or any other open source I
say that allows you to don't have to
contract go to into a NDA with let's say
are more like say Intel or any other
company and you can go and modify to
your own liking
security audits become very useful you
can specific for you can do a custom
specific application specific custom CPU
that only suits your application domain
which kind of enhances the performance
it's a community driven development
approach where everybody's welcome to
contribute to the hardware design and
the spec and basically it take taken a
leaf from the open-source software
ecosystem how it is evolved and grown
over the time and we are basically
trying to adopt the same approach so
that's all the boring stuff now let's go
to the cool stuff what exactly what's
happening in the bootloader area and the
former's so this is a it's not like when
I say industry standard boot rotor this
is just an simplistic multistage
bootloader that may be much more
complicated but in the view of this talk
I wanted to present a simplistic
bootloader boot flow for how exactly all
the most of the embedded not if not all
most of the board's work so we have a
ROM which runs from the on-chip draw
which basically as it name suggests it
runs from the ROM do the associate our
append clock setup then we have a loader
which runs from the does the DDR
initialization does a your fake DD
o'clock initialization and then
typically loads all the forward stages
and the typical example would be an e
boot SPL or code boot which deals as an
loader and then there is next runtime
which provides any kind of runtime
services which will be persistent
after all this boot loader is done and
let's say your Linux or other operating
systems boots up so that will be the
persistent code ron was talking about
which shouldn't have it we shouldn't
maintain it there shouldn't be any
persistent code after Linux boots one
day yes I would also vote for it but for
now it's there so it is so it basically
typical example would be an in my arm
world it's an ATF where you do all
security services and all do run runtime
services as per whatever specification
based on the that architecture then
there is bootloader which is
Grob you boot or Linux boot which has
much more richer fetch much more richer
features which basically have file
system support network support and then
boot configuration you can do multiple
multiple OSS at the same time from a
menu or fancy stuff so this is what
almost all of the boards are
architecture follow and this is what we
try to follow which you carefully look
more or less exactly same the currently
this is in terms of hi-5 Unleashed board
the boot flow the namings are hi-5
Unleashed board because that's the only
this five platform available today but
going forward the names may be change
especially the first two stages but we
are hoping that this will continue to be
the boot flow for risk 5 so currently
have four high five on list there is
some the ROM stage basically known as
Jed SPL which is known as zero stretch
boot loader then there is FS wheel which
is first stage bootloader which again
does the same clock initialization on
all clock and DD reinstallation then it
jumps to open SP a which is the only
respite specific firmware which
basically just prove the whole objective
is to just provide the runtime services
for s 5 we'll go back to go into the
details of what exactly and what it does
then that is e boot which guess
everybody's aware of so we have complete
you would network on network and HD cut
support so you can load your image from
network or SD card how you do for let's
say excited arm any arm board or x86
then of course the Linux OS so the whole
idea is to stand follow a standard boot
flow and all of them all these
components are open-source
none of them are a vendor log or
anything I put it as a proprietary like
some of the color because going forward
there may be some jealous PL code which
may be vendor locked maybe some of SPL
but we are trying to not to habit so
that you good SPL encore boot basically
can replace FS BL and everybody just
used the entire open-source boot flow as
an default sky boot flow
now what exactly
SBI I remember some of you might be
present in the prawn stock when you
saying it's we're going back to the
legacy OS more like a legacy bias mode
and it's all not that great to some
extent I agree but this is what is in
the spec this is what is a designer's
thought it's a good idea to have it so
we have to make the software work
whenever there is an alternate method or
there is better hardware to support it
we can always get rid of it but I don't
see it in at least in near future
so let's little bit learn about what
exactly is SPI it's a supervised a
binary interface which basically an
interface between your OS which runs in
your supervisor mode and your supervisor
execution environment which is like a
bare metal hardware or hypervisor so any
of those layer have to implement that
sba layer to provide those services to
whatever running on the supervisor mode
so it can be linux freebsd or any other
operating system so it's like a system
called connivance on you put in calling
arguments in which call and what are the
arguments in on your is 0a one arguments
and then you make an a call it will trap
into your the m mode and then it will
execute that code and figure out what
needs to be done based on that call so
the advantage of sba calls a why it was
there to reduce the duplication
duplicate platform code between across
choices so you don't have to implement
something specific that is very specific
to the hardware so sba call basically
abstracts a way for you and then there
is a common drivers can be developed
common then there is the interface
direct access for hardware resources
something like misaligned load store or
a instruction that is or a csr that is
not present in the hardware but in the
spec so you can emulate or in the in
this layer so the currently we are at
the 0.1 specification which has a lot of
legacy calls and we are trying to remove
those to improve the performance the
next one is 0.2 which are being drafted
right now like it's already in the Kitab
and then there's a implementation I will
the mailing list so going forward it
will go improve to make it more profound
sensitive rather than just make it work
so what is open
SBI so open SBI is an open-source
implementation of the SBI specification
so it's unlicensed under BSD to clause
or the whole idea is to when we started
like last year when this project got
ideated we saw that there is all the
boot loaders now need to implement the
sba so the specification will go into
multiple multiple flag fragmented
implementation mode so there is a new
specification everybody has to go and
implement that then there is changes
there are bugs so everybody has to go on
fix in individual layers instead of that
we thought of okay why not having a
common open-source project which every
architecture can basically every boot
loaders or every whatever the mode
firmware can leverage it so that nobody
has to bothered about open is the
Essbase specification and if there is a
day when we need to remove it you can
just get rid of it just directly call to
Linux so it's aimed at providing runtime
services in M mode and then it provides
reference platforms for like some kind
of drivers which are bare minimum
drivers which are necessary such as your
interrupt controller local maybe
external interrupt controller then your
yacht and other any platform vendors can
use the common code so that they don't
have to write as long as they are
compatible if not they can just leverage
the SBA as in library and then before
word so the key features in it is it has
multiple layers one is it just
implements the sba specification as a
library so anybody who wants to just use
the library to this take the use it as a
library wrapper and then just use it
then there is a platform specific
library which is any platform vendors
can take a make use of it so that they
don't have to rewrite those codes same
code again and again then they have it
has the platform specific form where
which has different options which I will
follow the next slide and the platform
vendors can choose the same to take and
take advantage of the
direct former generated by openness way
if they want to if they don't want just
take the library as an use it
so apart from a space specification ml
SB a specific as an implementation also
also have different features such as
load store handling missing CSR
emulation and then protect the form
we're using physical memory protection
as known as PMP so open HP provides
different formats one is from where
payload which is straightforward your
next is payload is basically given as
and let's say next days as a you boot or
Linux given as a payload to open espy
open ice pages jumps to that address it
knows that that is it exists then there
is this is the default method which we
are using currently on the i5 unleashed
hardware that's present here and then
there is form a jump which is a static
fixed address so open ice play knows
that the next stage is at this address
and then I just jump to it that's being
the default model used for cameo ten
days from a dynamic where the previous
days such as you would SPL or coreboot
we still configures that your next days
I have loaded it for you so you don't
have to load it I have loaded it for you
it's this address it passes that address
to form a dynamic open spi just jump to
that address so there's different ways
to provide different a kind of option to
different boot order so for mass then
SOC vendor may choose either way to do
it and then currently it's done in a
different way depending on the
bootloader is done in a different
approaches which will also follow so
currently we have multiple platforms
supported in open spi we have SCI five
high five on list which is this one then
there is and s and which is I think they
don't have they have an FPGA
implementation but if I'm not wrong they
don't have an ass ik then that is Arian
a PC SOC which is from UTS Urich and
then there is supercool $20 can read
chinese board from a chinese company is
a kenda right kit okay two one zero
the problem with it is it doesn't have
one it has an S mode but it doesn't have
an MMU
so you have to run and it has six MB of
SRAM so you have to run really like
mm you Linux The Witcher the patches are
on the mailing list and then obviously
we have Q which is the best coolest
software ever available in this world
because you can go ahead implemented in
queue and then verify and speaking of Q
I'll switch to Alistar who is will go
through the rest of the slides thanks of
everything so open SBI is actively
developed and maintained we recently had
the 0.4 release like a month or two ago
and open SBI is now the default firmware
and build root and open embedded which
are two commonly used embedded
distributions it's the qmu bios option
now so Kim you has an option to pass in
basically a firmware and can you start
up an x86 so they call it BIOS and Kimmy
will ship now with the open SPI
pre-built for you and you can just point
to that and run that so if you're not
interested at all in building with five
things you just want to download fedora
from the internet and run that you can
do it now with comeyou fedora and debian
also provide images with open SPI as
well so you boot it gets a little
confusing but you boot 2019 seven which
was released in July this year has hi-5
unleash support but it only supports
booting by our network not by the MMC
and MMC support is coming in the 2019 10
release which happens in October and EFI
support is there so grub actually has a
port it was a pretty early on port so
grub bruton works on verse 5 the Linux
kernel any kind of recent ish since the
4.19 kernel will work on key mu and 5.3
next week or the week after that
whenever it comes out we'll work with
open SPI you boot and everything on the
hi-5 Unleashed and that's what we're
going to demo in a little bit at the end
of this so this is the planned boot flow
with you root SPL so it just kind of
stoked about it a little bit of this so
you root SPL has support upstream in
master today just for the Kim Yuna
Sheen's
not for the high fiving leeched but I
think that's coming along so the idea
here is Z SPL which is the wrong
can't get rid of that or boot and after
that everything is open source so we
have you boot SPL or coreboot also works
on emu and the - leash and we have a
demo of that on camera as well but you
route SPL starts and then that can load
open spi and the full you boot which
then jumps to open spi which jumps to
the full new boot and there you have a
full new boot where you can TFTP in your
images or boot MMC boot your images
whatever you want to do and you have a
full boots flow from open source code
except except for the ROM but so yeah
like I said that's in Kim you now and OH
in Master Kim you now and so II DK - so
the HPE people are working on the edk -
implementation
so they link the open spi library into e
DK - and use that for the spi runtime
services so they build it inside their
build environment which is the same way
that coreboot builds open spi for their
users and so it's getting that it runs
on the u5 40 which is the same court
it's an Unleashed but on it's a soft one
is on the FPGA platform so still stuff
to do it was always something to do so
efi stub support for you full UEFI
support so I think it's probably a lot
of people don't like that but Red Hat
people want it fedora people want it so
that people want it there this destroys
that face if they could get away with it
they would only ever support UEFI and
it's kind of what they want to do
because it simplifies everything for
them they can boot the same thing in
every architecture they don't have to
worry about it so even if you most
people don't like you if I hear it's
something that has to be done and looked
up your boot SPL support for hardware so
I again that's right almost there we
have the key mu support of step 1
it's a SMP support in coreboot although
I think someone said there were patches
for that or at least people where
someone was working on that UDK to up
streaming and then every other
bootloader that people care about
so Linux boot if anyone wants to do that
go ahead and whatever other boot loader
people are working on risk 5 should
always be supported open such books oh
well yeah or if it's awesome mostly
so I'm going work so the SPI specs are
big focus now so the current version is
just what Heights i-5 did and everyone's
can use that so the new plan is to do a
0 to 2 version which at least allows
like a framework to probe the version
information and extensions and things
like that and then on top of that power
management to turn cause or hearts they
call them on and off open spi that needs
to support the new spi aspect sequential
CPU boots supporting other boot loaders
so we've done a lot of work for the ATK
2 people anything else to support the
core boots already there and ups PL is
coming along sir hypervisor support open
spi actually needs patches or support
the hypervisor extensions so the high
price attention is has a queue
implementation of KVM implementation and
a bare-metal hypervisor implantation now
and this patches on list for open spi
support for that as well so it just
needs to become tiding up in there and
then platform so open spi this platform
dependent sort of every new platform
added organ spi has to be change the
lease for that so that always has to
happen so this is unrelated to anything
else but one of the demos is going to be
showing oh s tree so it's kind of a
mutable way to boot embedded systems so
you can update your system like a get
update basically so you pull in the
update and then reboot into your newly
updated system
it's what Fedora atomic which is now
closed Fedora silver blue is looking at
its for meta up data users which is
where it came from for here flat pack
uses Lib OS tree so it's kind of cool
I'm not gonna go into too much detail
just showing it off and the idea here is
that RIS 5 is the same as everyone else
we do the same things in boot that
everyone else does we don't have to do
anything special okay so now that demo
there yeah is that ok can people see
that people in the back can see it
yeah better yeah this other size aren't
too exciting
okay so this is the high five
this little one is the high five
unleashed
it's the first risk first and only
publicly available respite ASIC so it's
for risk five cause plus another one
doesn't do anything and it boots Linux
and then here is a micro semi expansion
board that gives you PCIe so we're not
using that today it's just attached in
the box so I was easy to bring it okay
so we just turn it on oh sorry it's like
in there okay so so it's gonna boot in a
sec so it's gonna boot through the full
or mostly full open source flows only so
it's oh yeah so okay okay I can talk it
through
so it's booting Zed SPF in F SPL and
then over an SPI so this is openness so
see sci-fi of SPL then open SPI and then
new boot so it's now running that's what
this other window is it's now running
this script and it's just my development
script so it tries to TFTP a whole heap
of different things and it's not
connected so it's just going to time out
but it's what I used to develop so
normally I put an image in there if I
want to test that and just prove that
eventually when it all times out it'll
MNC boot from a fit image which is a
flattened image g-free slide an industry
which is basically a fancy way to
package kernel images all together so
you just see it just found the kernel so
it's brooding a Linux kernel this is a
5.3 I'll see something you can see here
it started OS tree so I mounts in at
Randolph s and then puts the root of s
real word offense on top of that it
starts open embedded there we have
system D and eventually boot all the way
to use the space so this is kind of show
you how standard this is if anyone's use
you boot this is kind of how you boot
works and just running a script mm see
boots that I have to
haptic commands and then a standard
systemd boot all the way up oh well does
the type and never tell someone's less
up okay doesn't know all right so the
other one that also okay people see that
oh yeah I can use from fullscreen okay
this is cool boot so this is Q yeah so
we're just running no graphic cuz we
don't need graphics we're running the
virtus v is the the best machine it's
it's not real it doesn't model a real
board it's just a few generic thing has
a similar one of this there's some
cereal options so we're passing in the
kernel is a core boot file so this core
boot file has over an SPI compiled into
it and a kernel compiled into it so it's
gonna boot all the corporate stuff then
open SPI and then a kernel and then
we're just attaching my brood FS as a
video block device so it just like
plugging a hard drive into Kimmy that's
too quick
well fast okay yeah
so there's coreboot Donuts thing again
open spi starting and that jumps to a
Linux kernel which boosts the Linux
kernel and then the same thing we're
back to user space with system D so
let's transfer everything kind of works
in risk 5 as you would hope that that's
the plan we don't want to re-implement
everything ourselves we want to use
whatever else is doing and and get
everyone on board yeah so
any questions thank you please give a
round of applause
I think we have time for a ton of
questions really there's so much done
the thing only says one minute
yeah it's lying please go to the to the
respective microphones and line up there
and I decided to make a new policy and
I'm really sorry if anyone has a problem
with that but only one question per
person please we have time but please if
that is the case can i bypass a but each
day and then slightly boot from a spell
- you would prefer you mean from you
would M mode to e boot proper now we
still need s bi because Linux kernel
expected so at current stage you can
send I Pai pair has to through SPI your
timer program has to throw SPI so you
need some kind of runtime services
it's your beef washers have to go
through as I can then yes you don't have
to run you could jump from SPI straight
away yeah you don't need you boot proper
let's s mode you can directly from open
s where you can directly jump to Linux
as well in the linux yes for now yes
it's mandatory so you can hub you would
a mode jump to it so that's how I think
some of the people run if you want to
run you would M mode you boot in M mode
use open s PS and payload to e boot M
mode and then also load the you would
proper and I'm just continues a separate
drive in the Linux instead of having
separate it's has two nm modes so in
fact an ml so the whole point we are
using SBI in M mode SP and open SPI
because the MMI address the time of
programming the timers you cannot access
from this mode
IPS you cannot send an IP I in S mode so
it has to trap down to M mode to send it
one day when there will be hardware
support we'll get rid of it and we're
trying to get rid of it because it's
heavy performance for every timer
programming for every TLP floss for
every I pay you need to trap it to a
mode but it is what it is currently in
again the arm world it's like eel three
right so the kernel runs an eel one and
that's what s1 it is in verse five and
so the kernels there it can't do
everything from the main story needs to
call something like endure in the in the
armed we can even bypass eightieth and
we can done directly to the you would
you can then use for hot biases so yeah
so that's the seal to is the same as
esperan in R is five so your threesome
is still there which is the machine mode
so you still have to call down to eel
three basically it's the equivalent
thanks um when can we expect to see some
risk five silicon from Western Digital
we have we have our open source core
quite a venue on toasted so you can send
pool requests the humble guys are having
a lot of fun we're gonna have a question
so send of what one guy just didn't one
to replace like all the spaces with tabs
alright sorry and I just like to give a
shout-out to my token Thursday yeah
related service 5 yeah yeah he also has
a talk on Thursday at like 11 or
something in the afternoon
ok onerous 5 and FPGA right
so I usually don't stand up to to
comment but I figured I would do it it's
not a question but I figure it might be
useful for some people in the room
my company is funding development work
for to make sure that both coreboot as
well as Linux boot works on the SyFy
unleashed board so you can remove
question marks okay yeah so so there is
a Linux board Linux boot work in
progress
yes okay so there were some things with
core route that doesn't work completely
on the unleash board and that's being
worked on and then I said at this point
we probably have no good sort of working
but I heard the cover it was supposed to
work we had to flash the flash on to the
flash and
and we found that on Friday so I will
make sure that it works well yeah if
anyone is interested at that so yeah
virtually as you saw virtually all it's
pretty cool yeah all right you have time
for a lot more questions any more
questions
No Oh does that mean we did a good job
or a bad job everybody's can either
everybody's confused on good can you
talk about what's left to be done from
the firmware side on rs5 so if the from
the SBA perspective this whole if of
things where there will be new version
of SBI so which will be need to be
implemented so as if now there is a
patch both in open SP and the Linux
kernel which would basically have an
mechanism to extend any of the SBI calls
in future also will try to get it off
the legacy SBA calls which is IPI TLB
flosses and your timer programming so
we'd like to remove it from the former
so that Linux can directly handle it
then there is other bootloader such as
you boot SPL currently only works in kmu
so we need you to SPL support for
hardware like only stock whatever
hardware then and then core board
I think Phillip would correct me SMP
support is still working on it so there
will be a simpie code boot yet still
doesn't have SMP support that's one
thing then as he said there is Linux
boot which would also take care of
running into the S mode boot rotor as in
Linux boot to basically replace you boot
in the upper stack and it would be the
last stage boot rotor and UEFI and you
if I that's a big block I don't a lot of
people don't care about some of them so
so main big pissing main that's why we
didn't stress too much on EFI but
there's enough interest to at least make
it work so the main so we have grub
support and we have EFI supporting new
boot yeah but there is no if I stop
supporting Linux kernel so that's what
basically blocking the EFI one and the
ATK two patches went in like last week
in the mailing list it
to mailing list can you tell us a little
bit about how you get back the firmware
code your name mostly yeah
so we first we test and Kimmy so
hopefully whatever works in key M you
basically go and works on hardware but
as everybody know that doesn't happen
always so ideally mostly with this one
we don't have we didn't have JTAG so we
could take point on those fancy stuff so
mostly using the prints but unless
serial driver is initialized i used to
basically put one character directly
written to the serial driver to figure
out in the code flow where am i because
my serial is not initialized so i can't
print anything so that's the best devote
method i have so if if it's not just the
highway problem emu has amazing debug
powers right yeah print every line of
assembly that it runs so you can follow
it gdb back point and you gdb connect to
it and step through you can yeah so Jane
Lee handy for getting here yeah I would
say 95 percent issues issues are solved
in queue then last five percent of that
last stretch to do you won't find cache
issues and things of that sir it's not
everything
once it is booting you can lau enough
debug support in open spi so you can
just go and print it and it pretty
excited here but the key me debugging
capabilities I know that you've been
looking at adding hypervisor support yes
he using QM use debugging stuff to help
you with the development of the
hypervisor yes a lot yeah so you can
connect yes you can one print of the
assembly in from Kim you that it runs so
that's really useful if you don't have
well I'm GTV can work but it's useful to
see kind of what it's taking and where
it's going and if a brand illegal
instruction you can see what the illegal
instruction was and things like that but
gdb can also connect to Kim you and then
control I catch a type debugger
basically and so gdb can then step
through and expect everything and so we
used a lot of that to develop to develop
the hypervisor extensions and he has a
talk of in this guy workshop last in
Zurich yeah where he was showing how to
debug in different methods so he it's in
the risk 5 YouTube channel
something together the Zurich workshop
something Kim you something yeah Kimmy's
amazing yeah that's all more stuff out
problem
95 96 percent I agree
any more questions you really did a good
job so thank you never run off applause
for them thank you
[Applause]
[Music]