D=document
D.body.style.margin=0
W=self.innerWidth
H=self.innerHeight
C=D.getElementById('c')
C.width=W
C.height=H
C=C.getContext('2d')
M=Math
S=M.max(W,H)
R=M.random
F=M.floor
v=0
sz=[]
function g(s1,s2,c,a,b) {
i=0
do {
sz.push(new Z(s1+R()*s2,c()))
i++
} while (i<N(a,b))
}
function N(a,b) {return a*S/10+R()*S/10*b}
function p() {return F(R()*S*1.3)}
function z() {return 120+F(R()*136)}
function m() {return 'rgb('+z()+','+z()+','+z()+')'}
function o() {return 'rgba('+z()+','+z()+','+z()+','+(0.3+R()*0.7)+')'}
function Z(s,c) {
var t=this
t.x=p()
t.y=p()
t.s=s
t.c=c
}
b="#000"
C.fillStyle=b
C.fillRect(0, 0, W, H)
g(0.6, 1.9, m, 1, 5)
g(0.4, 0.7, o, 4, 8)
d=R()>0.5?1:-1
setInterval(function() {
v+=d*0.02
C.fillStyle=b
C.fillRect(0, 0, W, H)
C.save()
C.translate(W/2,H/2)
C.rotate(v)
R=S*1.3/2
sz.forEach(function(s) {
C.beginPath()
C.arc(s.x-R,s.y-R,s.s,0,M.PI*2,1)
C.fillStyle=s.c
C.fill()
})
C.restore()
},50)
RD1kb2N1bWVudA0KRC5ib2R5LnN0eWxlLm1hcmdpbj0wDQpXPXNlbGYuaW5uZXJXaWR0aA0KSD1zZWxmLmlubmVySGVpZ2h0DQpDPUQuZ2V0RWxlbWVudEJ5SWQoJ2MnKQ0KQy53aWR0aD1XDQpDLmhlaWdodD1IDQpDPUMuZ2V0Q29udGV4dCgnMmQnKQ0KTT1NYXRoDQpTPU0ubWF4KFcsSCkNClI9TS5yYW5kb20NCkY9TS5mbG9vcg0Kdj0wDQpzej1bXQ0KZnVuY3Rpb24gZyhzMSxzMixjLGEsYikgew0KaT0wDQpkbyB7DQpzei5wdXNoKG5ldyBaKHMxK1IoKSpzMixjKCkpKQ0KaSsrDQp9IHdoaWxlIChpPE4oYSxiKSkNCn0NCmZ1bmN0aW9uIE4oYSxiKSB7cmV0dXJuIGEqUy8xMCtSKCkqUy8xMCpifQ0KZnVuY3Rpb24gcCgpIHtyZXR1cm4gRihSKCkqUyoxLjMpfQ0KZnVuY3Rpb24geigpIHtyZXR1cm4gMTIwK0YoUigpKjEzNil9DQpmdW5jdGlvbiBtKCkge3JldHVybiAncmdiKCcreigpKycsJyt6KCkrJywnK3ooKSsnKSd9DQpmdW5jdGlvbiBvKCkge3JldHVybiAncmdiYSgnK3ooKSsnLCcreigpKycsJyt6KCkrJywnKygwLjMrUigpKjAuNykrJyknfQ0KZnVuY3Rpb24gWihzLGMpIHsNCnZhciB0PXRoaXMNCnQueD1wKCkNCnQueT1wKCkNCnQucz1zDQp0LmM9Yw0KfQ0KYj0iIzAwMCINCkMuZmlsbFN0eWxlPWINCkMuZmlsbFJlY3QoMCwgMCwgVywgSCkNCmcoMC42LCAxLjksIG0sIDEsIDUpDQpnKDAuNCwgMC43LCBvLCA0LCA4KQ0KZD1SKCk+MC41PzE6LTENCnNldEludGVydmFsKGZ1bmN0aW9uKCkgew0Kdis9ZCowLjAyDQpDLmZpbGxTdHlsZT1iDQpDLmZpbGxSZWN0KDAsIDAsIFcsIEgpDQpDLnNhdmUoKQ0KQy50cmFuc2xhdGUoVy8yLEgvMikNCkMucm90YXRlKHYpDQpSPVMqMS4zLzINCnN6LmZvckVhY2goZnVuY3Rpb24ocykgew0KQy5iZWdpblBhdGgoKQ0KQy5hcmMocy54LVIscy55LVIscy5zLDAsTS5QSSoyLDEpDQpDLmZpbGxTdHlsZT1zLmMNCkMuZmlsbCgpDQp9KQ0KQy5yZXN0b3JlKCkNCn0sNTAp
Original source not submitted