ETH Price: $3,492.34 (-0.31%)
Gas: 3 Gwei

Contract

0x4f32740cf412d647A622ba27C36fa4B76F71601f
 

Overview

ETH Balance

3.926276596969696969 ETH

Eth Value

$13,711.91 (@ $3,492.34/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw189738822024-01-10 3:31:23193 days ago1704857483IN
0x4f32740c...76F71601f
0 ETH0.0008623530.30603583
Withdraw185225262023-11-07 20:40:23256 days ago1699389623IN
0x4f32740c...76F71601f
0 ETH0.0008665330.45293027
Withdraw185061422023-11-05 13:35:59258 days ago1699191359IN
0x4f32740c...76F71601f
0 ETH0.000769427.03931509
Withdraw185005432023-11-04 18:45:59259 days ago1699123559IN
0x4f32740c...76F71601f
0 ETH0.0004260614.97315133
Withdraw184929812023-11-03 17:19:11260 days ago1699031951IN
0x4f32740c...76F71601f
0 ETH0.0010765237.83263129
Accept Bid184929772023-11-03 17:18:23260 days ago1699031903IN
0x4f32740c...76F71601f
0 ETH0.002146433.08833617
Place Bid184928962023-11-03 17:02:11260 days ago1699030931IN
0x4f32740c...76F71601f
2.71828 ETH0.0027442447.57627967
Withdraw184928132023-11-03 16:45:23260 days ago1699029923IN
0x4f32740c...76F71601f
0 ETH0.0007330225.76095506
Place Bid184928102023-11-03 16:44:47260 days ago1699029887IN
0x4f32740c...76F71601f
2.05 ETH0.0014679625.4497638
Withdraw184927972023-11-03 16:42:11260 days ago1699029731IN
0x4f32740c...76F71601f
0 ETH0.00068924.21375107
Place Bid184927702023-11-03 16:36:47260 days ago1699029407IN
0x4f32740c...76F71601f
2 ETH0.0016408928.4478232
Place Bid184927112023-11-03 16:24:59260 days ago1699028699IN
0x4f32740c...76F71601f
1.84206969 ETH0.0016765729.06638259
Place Bid184922172023-11-03 14:45:59260 days ago1699022759IN
0x4f32740c...76F71601f
1.6942069 ETH0.0018823232.63329914
Place Bid184784972023-11-01 16:38:23262 days ago1698856703IN
0x4f32740c...76F71601f
1.69 ETH0.0011803429.08614361
Place Bid184587792023-10-29 22:21:23265 days ago1698618083IN
0x4f32740c...76F71601f
1.5 ETH0.0008993315.59156287
Place Bid184505302023-10-28 18:37:59266 days ago1698518279IN
0x4f32740c...76F71601f
1.19 ETH0.0008175314.17342505
Withdraw184459192023-10-28 3:07:47267 days ago1698462467IN
0x4f32740c...76F71601f
0 ETH0.0003289811.56165524
Withdraw184436832023-10-27 19:38:59267 days ago1698435539IN
0x4f32740c...76F71601f
0 ETH0.0004841517.01458684
Place Bid184436722023-10-27 19:36:47267 days ago1698435407IN
0x4f32740c...76F71601f
1 ETH0.0011103119.24923572
Place Bid184436552023-10-27 19:33:23267 days ago1698435203IN
0x4f32740c...76F71601f
0.699 ETH0.0013398123.22792725
Withdraw184435342023-10-27 19:09:11267 days ago1698433751IN
0x4f32740c...76F71601f
0 ETH0.0005975120.99855503
Place Bid184434742023-10-27 18:57:11267 days ago1698433031IN
0x4f32740c...76F71601f
0.6942069 ETH0.0008791615.24192711
Withdraw184430602023-10-27 17:33:23267 days ago1698428003IN
0x4f32740c...76F71601f
0 ETH0.0008157928.6697705
Place Bid184430152023-10-27 17:24:23267 days ago1698427463IN
0x4f32740c...76F71601f
0.69 ETH0.0016533428.66365987
Withdraw184429892023-10-27 17:19:11267 days ago1698427151IN
0x4f32740c...76F71601f
0 ETH0.0010075735.40946287
View all transactions

Latest 14 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
189738822024-01-10 3:31:23193 days ago1704857483
0x4f32740c...76F71601f
0.3 ETH
185225262023-11-07 20:40:23256 days ago1699389623
0x4f32740c...76F71601f
2.5 ETH
185061422023-11-05 13:35:59258 days ago1699191359
0x4f32740c...76F71601f
1.69 ETH
185005432023-11-04 18:45:59259 days ago1699123559
0x4f32740c...76F71601f
2.05 ETH
184929812023-11-03 17:19:11260 days ago1699031951
0x4f32740c...76F71601f
2.71828 ETH
184928132023-11-03 16:45:23260 days ago1699029923
0x4f32740c...76F71601f
2 ETH
184927972023-11-03 16:42:11260 days ago1699029731
0x4f32740c...76F71601f
1.6942069 ETH
184459192023-10-28 3:07:47267 days ago1698462467
0x4f32740c...76F71601f
0.69 ETH
184436832023-10-27 19:38:59267 days ago1698435539
0x4f32740c...76F71601f
0.699 ETH
184435342023-10-27 19:09:11267 days ago1698433751
0x4f32740c...76F71601f
0.1 ETH
184430602023-10-27 17:33:23267 days ago1698428003
0x4f32740c...76F71601f
0.5 ETH
184429892023-10-27 17:19:11267 days ago1698427151
0x4f32740c...76F71601f
0.36 ETH
184429412023-10-27 17:09:35267 days ago1698426575
0x4f32740c...76F71601f
0.33 ETH
184429342023-10-27 17:08:11267 days ago1698426491
0x4f32740c...76F71601f
0.35 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DigitalSoul

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2023-10-27
*/

// ██████  ██  ██████  ██ ████████  █████  ██          ███████  ██████  ██    ██ ██      
// ██   ██ ██ ██       ██    ██    ██   ██ ██          ██      ██    ██ ██    ██ ██      
// ██   ██ ██ ██   ███ ██    ██    ███████ ██          ███████ ██    ██ ██    ██ ██      
// ██   ██ ██ ██    ██ ██    ██    ██   ██ ██               ██ ██    ██ ██    ██ ██      
// ██████  ██  ██████  ██    ██    ██   ██ ███████     ███████  ██████   ██████  ███████
//
// SPDX-License-Identifier: MIT
// Copyright Han, 2023

pragma solidity ^0.8.21;

contract DigitalSoul {
    event ArtpieceCreated(address indexed creator);
    event ArtpieceTransferred(address indexed oldOwner, address indexed newOwner);
    event BidAccepted(uint256 value, address indexed fromAddress, address indexed toAddress);
    event BidPlaced(uint256 value, address indexed fromAddress);
    event BidWithdrawn(uint256 value, address indexed fromAddress);
    event ListedForSale(uint256 value, address indexed fromAddress, address indexed toAddress);
    event SaleCanceled(uint256 value, address indexed fromAddress, address indexed toAddress);
    event SaleCompleted(uint256 value, address indexed fromAddress, address indexed toAddress);

    error FundsTransfer();
    error InsufficientFunds();
    error ListedForSaleToSpecificAddress();
    error NoBid();
    error NotForSale();
    error NotOwner();
    error NotRoyaltyRecipient();
    error NotYourBid();
    error NullAddress();
    error RoyaltyTooHigh();

    string public constant MANIFEST = (
        'We leave traces of our actions, thoughts and emotions, creating a digital reflection of our true selves.' '\n'
    );

    string public constant CORE = (
        'const DIRECTIVES=["#ifdef GL_ES","precision highp float;","#endif","#define AA 2","#define R(a)mat2(cos(a),sin(a),-sin(a),cos(a))"].map((e=>`${e}${String.fromCharCode(10)}`)).join("");let frag_piece=`${DIRECTIVES}uniform vec2 u_resolution,u_mouse;uniform float u_time;float v,x;vec3 t(vec3 v){v=vec3(dot(v,vec3(127.1,311.7,74.7)),dot(v,vec3(269.5,183.3,246.1)),dot(v,vec3(113.5,271.9,124.6)));return-1.+2.*fract(sin(v)*43758.5453123);}vec3 n(vec3 v){return clamp(v*(2.51*v+.03)/(v*(2.43*v+.59)+.14),0.,1.);}float f(vec3 v){v=fract(v*.3183099+.1);v*=17.;return fract(v.x*v.y*v.z*(v.x+v.y+v.z));}float m(vec3 v){vec3 x=floor(v),y=fract(v);y=y*y*(3.-2.*y);return mix(mix(mix(f(x+vec3(0)),f(x+vec3(1,0,0)),y.x),mix(f(x+vec3(0,1,0)),f(x+vec3(1,1,0)),y.x),y.y),mix(mix(f(x+vec3(0,0,1)),f(x+vec3(1,0,1)),y.x),mix(f(x+vec3(0,1,1)),f(x+vec3(1)),y.x),y.y),y.z);}float f(vec3 v,float x){vec3 f=v;float y=step(f.x,0.)*2.-1.,r;f.x=abs(f.x)-.8;f.x-=(sin(x)*.5+.5)*.125;r=length(f)-.4;f.zy*=R(x*2.);f.z-=.532*y;return min(r,length(f)-.132);}vec2 s(vec3 v){float y=0.,r=1e2,a=x,i=r,m;vec3 u=v;u=v.xyz;u.xy*=R(a);i=f(u,a);r=min(r,i);u=v.zxy;u.xy*=R(a);i=f(u,a);r=min(r,i);u=v.yzx;u.xy*=R(a);i=f(u,a);r=min(r,i);m=length(v)-.4;if(r>m)r=m,y=1.;i=max(-r,length(vec2(length(v.xz)-.4,v.y))-.025);return vec2(r,y);}vec3 p(vec3 v){vec2 y=vec2(.002,0);float f=s(v).x;return normalize(vec3(f-s(v-y.xyy).x,f-s(v-y.yxy).x,f-s(v-y.yyx).x));}vec2 m(vec3 v,vec3 y){float x=0.;vec2 f;for(int r=0;r<64;r++){vec3 a=v+y*x;f=s(a);x+=f.x;if(x>20.||abs(f.x)<.005)break;}x=min(x,20.);return vec2(x,f.y);}float n(vec3 v,vec3 y){float x=0.,f=1.;for(int r=0;r<4;r++){float u=.01+.033*float(r)/4.,a=s(v+u*y).x;x+=(u-a)*f;f*=.95;if(x>.35)break;}return clamp(1.-3.*x,0.,1.);}float p(vec3 v,vec3 y){float x=1.,a=(.8-v.y)/y.y,r,f;if(a>0.)x=min(x,a);r=1.;f=.01;for(int i=0;i<8;i++){float u=s(v+y*f).x,A=clamp(.5*u/f,0.,1.);r=min(r,A*A*(3.-2.*A));f+=clamp(u,.002,.05);if(r<.005||f>x)break;}return clamp(r,0.,1.);}vec4 s(vec3 v,vec3 r){vec3 y=p(v),f=vec3(0,-10,0),i;f.x+=sin(x*2.)*10.;f.z+=cos(-x)*10.;f=normalize(v-f);float a=clamp(dot(f,y),0.,1.),u=clamp(1.+dot(r,y),0.,1.),m=clamp(dot(reflect(-f,y),-r),0.,1.),A=n(v,y),z;i=mix(vec3(.6745),vec3(2),a);i+=vec3(1)*pow(u,7.);i+=vec3(1)*pow(m,2.)*.75;i*=mix(.1,1.,A);z=p(v,v+vec3(0));i=mix(i*vec3(.6941),i,z);return vec4(i,u);}vec2 t(vec3 v,vec3 y){float x=dot(v,y),r=x*x-dot(v,v)+2.25;if(r<0.)return vec2(-1);r=sqrt(r);return vec2(-x-r,-x+r);}vec4 f(vec2 x,vec2 y,float a){vec2 f=(x-.5*y)/min(y.y,y.x),r,i;vec3 u=vec3(0,10,-10),A,z,d,l,b,k;u.yz*=R(u_mouse.y/y.y*(2.*acos(-1.))*2.);u.xz*=R(u_mouse.x/y.x*(2.*acos(-1.))*2.);A=normalize(vec3(0)-u);z=normalize(vec3(A.z,0,-A.x));d=normalize(f.x*z+f.y*cross(A,z)+A/.37);r=t(u,d);i=r.x>0.?m(u,d):vec2(-1,0);l=u+d*i.x;b=vec3(0);if(i.x>.005)b=s(l,d).xyz;float c=smoothstep(3.,5.,length(l)),g=m(vec3(f*0.,v*16.));g=pow(g,1.33);k=mix(vec3(.5875),vec3(1)*3.,g);b=mix(b,k,c);b=n(b);return vec4(b,c);}float r(float v){vec3 f=fract(vec3(v)*443.8975);f+=dot(f,f.yzx+3.19);return fract((f.x+f.y)*f.z);}float c(float v){float x=floor(v);return mix(r(x),r(x+2.),smoothstep(0.,1.,fract(v)));}vec4 c(vec2 r,vec2 y){vec4 i=vec4(0,0,0,1);float a=.5+.5*sin(r.x*147.)*sin(r.y*131.),u=c(u_time*3.),A;u=pow(u,2.);u=smoothstep(.5,1.,u);A=.25*u;for(int z=0;z<AA;z++)for(int m=0;m<AA;m++){float s=u_time-.1*(float(z*AA+m)+a)/float(AA*AA);vec2 b=r+vec2(m,z)/float(AA);v=(s-A)/2.;x=2.*acos(-1.)*v;i.x+=f(b,y,-1.).x;v=s/2.;x=2.*acos(-1.)*v;i.y+=f(b,y,0.).y;v=(s+A)/2.;x=2.*acos(-1.)*v;i.z+=f(b,y,1.).z;}i/=float(AA*AA);return i;}void main(){vec2 v=gl_FragCoord.xy;gl_FragColor=vec4(c(v,u_resolution).xyz+fract(555.*sin(777.*t(v.xyy)))/256.,1);}`,vert_shader="attribute vec2 p;void main(){gl_Position=vec4(p,1.0,1.0);}",w=window,d=document,device_ratio=window.devicePixelRatio,pixel=new Uint8Array(4),is_mobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),canvas=d.querySelector("canvas");if(document.body.style.touchAction="none",document.body.style.userSelect="none",!canvas){canvas=d.createElement("canvas"),canvas.style.display="block";var body=d.body;body||(body=d.createElement("body")),body.appendChild(canvas),d.documentElement.appendChild(body)}let webglOptions={};is_mobile||(webglOptions={powerPreference:"high-performance"});let webgl=canvas.getContext("webgl",webglOptions);webgl.program=null,webgl.uniform=(e,t)=>{let r=Array.isArray(t)?t.length-1:0,a=[["uniform1f",0,"float"],["uniform2fv",[0,0],"vec2"]],i={};return i.name=e,i.type=a[r][0],i.value=t||a[r][1],i.inner_type=a[r][2],i.location="",i.dirty=!1,i},webgl.uniforms=[["u_resolution",[0,0]],["u_time",.001*performance.now()],["u_mouse",[0,0]]],webgl.uniforms.forEach(((e,t)=>webgl.uniforms[t]=webgl.uniform(e[0],e[1]))),webgl.create_shader=(e,t,r)=>{let a=e.createShader(t);return webgl.shaderSource(a,r),webgl.compileShader(a),a},webgl.resize=()=>{canvas.width=w.innerWidth*device_ratio,canvas.height=w.innerHeight*device_ratio,canvas.style.width="100%",canvas.style.height="100%";let e=webgl.uniforms[0];e.value=[canvas.width,canvas.height],e.dirty=!0},webgl.render=()=>{webgl.viewport(0,0,canvas.width,canvas.height);let e=webgl.uniforms[1];e.value=.001*performance.now(),e.dirty=!0;let t=webgl.uniforms.filter((e=>1==e.dirty));for(let e in t)webgl[t[e].type](t[e].location,t[e].value),t[e].dirty=!1;webgl.drawArrays(webgl.TRIANGLE_STRIP,0,4),webgl.readPixels(0,0,1,1,webgl.RGBA,webgl.UNSIGNED_BYTE,pixel)},webgl.is_valid=()=>null!=webgl.program,webgl.start_update=()=>{webgl.render(),webgl.frame=requestAnimationFrame(webgl.start_update)},webgl.stop_update=()=>{webgl.frame&&cancelAnimationFrame(webgl.frame)},webgl.change_aa=e=>{frag_piece=frag_piece.replace("#define AA 2",`#define AA ${e}`)};let pointer,load_shader=(e,t)=>{null==t&&(t=vert_shader);let r=webgl;r.stop_update(),r.deleteProgram(r.program),r.program=r.createProgram();const a=webgl.create_shader(r,r.VERTEX_SHADER,t),i=webgl.create_shader(r,r.FRAGMENT_SHADER,e);r.attachShader(r.program,a),r.attachShader(r.program,i),r.linkProgram(r.program);for(let e in webgl.uniforms){let t=webgl.uniforms[e];t.location=r.getUniformLocation(r.program,t.name),t.dirty=!0}let o=Float32Array.of(-1,1,-1,-1,1,1,1,-1),n=r.createBuffer(),c=r.getAttribLocation(r.program,"p");r.bindBuffer(r.ARRAY_BUFFER,n),r.bufferData(r.ARRAY_BUFFER,o,r.STATIC_DRAW),r.enableVertexAttribArray(c),r.vertexAttribPointer(c,2,r.FLOAT,!1,0,0),r.useProgram(r.program),r.resize()},start_shader=(e,t)=>{is_mobile&&webgl.change_aa(1),load_shader(e,t),webgl.start_update()};pointer=w.PointerEvent?{start:["pointerdown"],move:["pointermove"],end:["pointerup"]}:{start:["mousedown","touchstart"],move:["mousemove","touchmove"],end:["mouseup","touchend"]};let drag={update_uniform:e=>{let t=webgl.uniforms[0].value,r=webgl.uniforms[2];r.value=[e.clientX,t[1]-e.clientY],r.dirty=!0},update:e=>{drag.update_uniform(e)},start:e=>{webgl.is_valid&&(drag.update_uniform(e),pointer.move.forEach((e=>{document.addEventListener(e,drag.update)})))},stop:e=>{webgl.is_valid&&(drag.update_uniform(e),pointer.move.forEach((e=>{document.removeEventListener(e,drag.update)})))}},resize=()=>{if(!webgl.is_valid)return;let e=webgl.uniforms[0].value;webgl.resize();let t=webgl.uniforms[0].value,r=[t[0]/e[0],t[1]/e[1]],a=webgl.uniforms[2];a.value=[a.value[0]*r[0],a.value[1]*r[1]],a.dirty=!0};const SIGNATURE_SVG="data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMzguNjcgMTQ2Ljg5Jz48cGF0aCBmaWxsPSd3aGl0ZScgZD0nbTEyMS45NCAwIDIuNzMgNC4zLTQ2Ljg1IDkuNThMNi4xIDI1LjI4bC0xLjQ5LTUuMzVMMTIxLjk0IDB6Jy8+PHBhdGggZmlsbD0nd2hpdGUnIGQ9J002LjI0IDguMzMgMi45NSA1LjU1IDAgOC40OGwxNS40MyAxMDMuNzctMi44OSA0LjQ5IDIuMTEgMi4xMiA2LjM0LTUuOC0uNDYtNi41M0w2LjI0IDguMzN6TTEyOC4zIDkuMzdsMi43Ny0xLjk3IDIuODQgMS4xNC0xLjU0IDE2LjU3LTEuNzggMzguMS45NSAyMy4yOCAzLjQ4IDI1Ljk3IDMuNjUgMTkuMTEtMS45NSAzLjg3LTMuOTYtMS45My00LjUxLTI1Ljc5LTMuMDItMjQuNzEtLjg1LTI0LjQyLjk2LTI1Ljc3IDIuOTYtMjMuNDV6TTkuMjIgMTM4LjcxbC0zLjc1IDEuNDUuNDMgMy43IDkuNTMgMy4wMyAzOC41Ni03LjkyIDM1LjIxLTIuOTYgNDAuNjIgMy4xMiAyLjM5LTIuNTYtMi40NC0zLjQtMjMuNTktMi40LTI1LjA3LS4yOC0yNC44NiAyLjMzLTI2LjU0IDQuMzgtMjAuNDkgMS41MXpNNTUuNTMgODAuNTdsMi4zNSAxLjAzIDEuOTktMi42NS0xLjA5LTkuNTFMNzYuNzIgNjZsLTMuMzcgMTkuNTEtMTQuMDkgMS42My0xLjggMi4xIDMuMTkgMi40MSAxMi42NC0uNjYuNzIgMi4yMyAxLjc1LjQyIDIuNjUtMi4yMyAzLjg1LS45Ni0yLjU5LTMuODYtMi43Ny0uNTQgNS40OC0yMC44MyAxLjc1LTMuMzEtMi4zNS0xLjE0LTkuNjMgMS4xNEw1NC4zMyA2NmwtLjk3IDMuMTQgMi4xNyAxMS40M3onLz48L3N2Zz4=",appendSignature=()=>{const e=document.createElement("img");e.src=SIGNATURE_SVG.trim(),e.style.cssText="width:40px;z-index:50;position:fixed;bottom:20px;right:20px;",body.appendChild(e)};if(webgl)start_shader(frag_piece),resize(),pointer.start.forEach((e=>{document.addEventListener(e,drag.start)})),pointer.end.forEach((e=>{document.addEventListener(e,drag.stop)})),window.addEventListener("resize",resize),appendSignature();else{const e=document.createElement("div");e.style.cssText="align-items:center;background:#969696;color:#fff;display:flex;font-family:monospace;font-size:20px;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;",e.innerHTML="NOT SUPPORTED",document.body.append(e)}'
    );

    modifier onlyOwner() {
        if (owner != msg.sender) {
            revert NotOwner();
        }

        _;
    }

    modifier onlyRoyaltyRecipient() {
        if (royaltyRecipient != msg.sender) {
            revert NotRoyaltyRecipient();
        }

        _;
    }

    struct Offer {
        bool active;
        uint256 value;
        address toAddress;
    }

    struct Bid {
        bool active;
        uint256 value;
        address fromAddress;
    }

    address public owner;

    Offer public currentOffer;

    Bid public currentBid;

    address public royaltyRecipient;

    uint256 public royaltyPercentage;

    mapping (address => uint256) public pendingWithdrawals;

    constructor(uint256 _royaltyPercentage) {
        if (_royaltyPercentage >= 100) {
            revert RoyaltyTooHigh();
        }

        owner = msg.sender;
        royaltyRecipient = msg.sender;
        royaltyPercentage = _royaltyPercentage;

        emit ArtpieceCreated(msg.sender);
    }

    function name() public view virtual returns (string memory) {
        return 'DigitalSoul';
    }

    function symbol() public view virtual returns (string memory) {
        return 'DS';
    }

    function artpiece() public view virtual returns (string memory) {
        return string.concat(
            '<!DOCTYPE html>'
            '<html>'
                '<head>'
                    '<title>', 'DigitalSoul', '</title>'

                    '<meta name="viewport" content="width=device-width, initial-scale=1" />'

                    '<style>body{background:#969696;margin:0;padding:0;overflow:hidden;}</style>'
                '</head>'

                '<body>'
                    '<script type="text/javascript">',
                        CORE,
                    '</script>'
                '</body>'
            '</html>'
        );
    }

    function withdraw() public {
        uint256 amount = pendingWithdrawals[msg.sender];

        pendingWithdrawals[msg.sender] = 0;

        _sendFunds(amount);
    }

    function transferOwnership(address newOwner) public onlyOwner {
        if (newOwner == address(0)) {
            revert NullAddress();
        }

        _transferOwnership(newOwner);

        if (currentBid.fromAddress == newOwner) {
            uint256 amount = currentBid.value;

            currentBid = Bid({ active: false, value: 0, fromAddress: address(0) });

            pendingWithdrawals[newOwner] += amount;
        }

        if (currentOffer.active) {
            currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });
        }
    }

    function listForSale(uint256 salePriceInWei) public onlyOwner {
        currentOffer = Offer({ active: true, value: salePriceInWei, toAddress: address(0) });

        emit ListedForSale(salePriceInWei, msg.sender, address(0));
    }

    function listForSaleToAddress(uint256 salePriceInWei, address toAddress) public onlyOwner {
        currentOffer = Offer({ active: true, value: salePriceInWei, toAddress: toAddress });

        emit ListedForSale(salePriceInWei, msg.sender, toAddress);
    }

    function cancelFromSale() public onlyOwner {
        Offer memory oldOffer = currentOffer;

        currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });

        emit SaleCanceled(oldOffer.value, msg.sender, oldOffer.toAddress);
    }

    function buyNow() public payable {
        if (!currentOffer.active) {
            revert NotForSale();
        }

        if (currentOffer.toAddress != address(0) && currentOffer.toAddress != msg.sender) {
            revert ListedForSaleToSpecificAddress();
        }

        if (msg.value != currentOffer.value) {
            revert InsufficientFunds();
        }

        currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });

        uint256 royaltyAmount = _calcRoyalty(msg.value);

        pendingWithdrawals[owner] += msg.value - royaltyAmount;
        pendingWithdrawals[royaltyRecipient] += royaltyAmount;

        emit SaleCompleted(msg.value, owner, msg.sender);

        _transferOwnership(msg.sender);
    }

    function placeBid() public payable {
        if (msg.value <= currentBid.value) {
            revert InsufficientFunds();
        }

        if (currentBid.value > 0) {
            pendingWithdrawals[currentBid.fromAddress] += currentBid.value;
        }

        currentBid = Bid({ active: true, value: msg.value, fromAddress: msg.sender });

        emit BidPlaced(msg.value, msg.sender);
    }

    function acceptBid() public onlyOwner {
        if (!currentBid.active) {
            revert NoBid();
        }

        uint256 amount = currentBid.value;
        address bidder = currentBid.fromAddress;

        currentOffer = Offer({ active: false, value: 0, toAddress: address(0) });
        currentBid = Bid({ active: false, value: 0, fromAddress: address(0) });

        uint256 royaltyAmount = _calcRoyalty(amount);

        pendingWithdrawals[owner] += amount - royaltyAmount;
        pendingWithdrawals[royaltyRecipient] += royaltyAmount;

        emit BidAccepted(amount, owner, bidder);

        _transferOwnership(bidder);
    }

    function withdrawBid() public {
        if (msg.sender != currentBid.fromAddress) {
            revert NotYourBid();
        }

        uint256 amount = currentBid.value;

        currentBid = Bid({ active: false, value: 0, fromAddress: address(0) });

        _sendFunds(amount);

        emit BidWithdrawn(amount, msg.sender);
    }

    function setRoyaltyRecipient(address newRoyaltyRecipient) public onlyRoyaltyRecipient {
        if (newRoyaltyRecipient == address(0)) {
            revert NullAddress();
        }

        royaltyRecipient = newRoyaltyRecipient;
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = owner;

        owner = newOwner;

        emit ArtpieceTransferred(oldOwner, newOwner);
    }

    function _sendFunds(uint256 amount) internal virtual {
        (bool success, ) = msg.sender.call{value: amount}('');

        if (!success) {
            revert FundsTransfer();
        }
    }

    function _calcRoyalty(uint256 amount) internal virtual returns (uint256) {
        return (amount * royaltyPercentage) / 100;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_royaltyPercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"FundsTransfer","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"ListedForSaleToSpecificAddress","type":"error"},{"inputs":[],"name":"NoBid","type":"error"},{"inputs":[],"name":"NotForSale","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotRoyaltyRecipient","type":"error"},{"inputs":[],"name":"NotYourBid","type":"error"},{"inputs":[],"name":"NullAddress","type":"error"},{"inputs":[],"name":"RoyaltyTooHigh","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"creator","type":"address"}],"name":"ArtpieceCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ArtpieceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"BidAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"}],"name":"BidPlaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"}],"name":"BidWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"ListedForSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"SaleCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"}],"name":"SaleCompleted","type":"event"},{"inputs":[],"name":"CORE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MANIFEST","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptBid","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"artpiece","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyNow","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"cancelFromSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentBid","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"fromAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentOffer","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"salePriceInWei","type":"uint256"}],"name":"listForSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"salePriceInWei","type":"uint256"},{"internalType":"address","name":"toAddress","type":"address"}],"name":"listForSaleToAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pendingWithdrawals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"placeBid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"royaltyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royaltyRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRoyaltyRecipient","type":"address"}],"name":"setRoyaltyRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawBid","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b5060405161357038038061357083398101604081905261002e916100a2565b6064811061004f5760405163c2b03beb60e01b815260040160405180910390fd5b5f8054336001600160a01b031991821681178355600780549092168117909155600883905560405190917fcaea53471edbf6ace3d253c1bdecf4553374dd40c18148776b57bf5af0f7f02f91a2506100b9565b5f602082840312156100b2575f80fd5b5051919050565b6134aa806100c65f395ff3fe608060405260043610610126575f3560e01c80638a71bb2d116100a8578063def181011161006d578063def18101146102f0578063e52a787414610340578063ecfc7ecc14610354578063f2fde38b1461035c578063f3f437031461037b578063fa4e28f6146103a6575f80fd5b80638a71bb2d1461025e5780638da5cb5b1461028157806395d89b411461029f5780639c3962f0146102c9578063c7857fb5146102d1575f80fd5b80633ccfd60b116100ee5780633ccfd60b146101cc57806341e42f30146101e057806342c47217146101ff5780634c00de82146102135780636b6c07741461024a575f80fd5b806306fdde031461012a5780630dca550e1461016f57806337271cc71461019057806337a908fc146101a457806338739dad146101b8575b5f80fd5b348015610135575f80fd5b5060408051808201909152600b81526a111a59da5d185b14dbdd5b60aa1b60208201525b6040516101669190610d9d565b60405180910390f35b34801561017a575f80fd5b5061018e610189366004610dea565b6103d0565b005b34801561019b575f80fd5b5061018e610480565b3480156101af575f80fd5b50610159610527565b3480156101c3575f80fd5b50610159610569565b3480156101d7575f80fd5b5061018e610585565b3480156101eb575f80fd5b5061018e6101fa366004610e14565b6105a4565b34801561020a575f80fd5b5061018e610618565b34801561021e575f80fd5b50600754610232906001600160a01b031681565b6040516001600160a01b039091168152602001610166565b348015610255575f80fd5b506101596106f0565b348015610269575f80fd5b5061027360085481565b604051908152602001610166565b34801561028c575f80fd5b505f54610232906001600160a01b031681565b3480156102aa575f80fd5b50604080518082019091526002815261445360f01b6020820152610159565b61018e61070f565b3480156102dc575f80fd5b5061018e6102eb366004610e34565b610889565b3480156102fb575f80fd5b5060045460055460065461031a9260ff1691906001600160a01b031683565b60408051931515845260208401929092526001600160a01b031690820152606001610166565b34801561034b575f80fd5b5061018e610922565b61018e610ab1565b348015610367575f80fd5b5061018e610376366004610e14565b610b85565b348015610386575f80fd5b50610273610395366004610e14565b60096020525f908152604090205481565b3480156103b1575f80fd5b5060015460025460035461031a9260ff1691906001600160a01b031683565b5f546001600160a01b031633146103fa576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018590526001600160a01b038416918301829052805460ff1916811790556002849055600380546001600160a01b03191682179055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906104749086815260200190565b60405180910390a35050565b6006546001600160a01b031633146104ab5760405163173f0e6f60e21b815260040160405180910390fd5b60058054604080516060810182525f8082526020820181905291018190526004805460ff19169055909155600680546001600160a01b03191690556104ef81610ca1565b60405181815233907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a9060200160405180910390a250565b60606040518061240001604052806123cf815260200161103d6123cf91396040516020016105559190610e4b565b604051602081830303815290604052905090565b6040518060a001604052806069815260200161340c6069913981565b335f90815260096020526040812080549190556105a181610ca1565b50565b6007546001600160a01b031633146105cf57604051631229bf3760e11b815260040160405180910390fd5b6001600160a01b0381166105f65760405163e99d5ac560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610642576040516330cd747160e01b815260040160405180910390fd5b60408051606080820183526001805460ff811615158452600280546020808701918252600380546001600160a01b038082168a8c019081528b51998a018c525f808b52948a01859052988b0184905260ff1990961690965592556001600160a01b03199093169055915190519351929391169133917ff1f48fe426adbd884772d4c165015a460df54458ff7e238dff36fe3c5d341ccf916106e591815260200190565b60405180910390a350565b6040518061240001604052806123cf815260200161103d6123cf913981565b60015460ff1661073257604051631d99ddbf60e01b815260040160405180910390fd5b6003546001600160a01b03161580159061075757506003546001600160a01b03163314155b156107755760405163d6da33db60e01b815260040160405180910390fd5b60025434146107975760405163356680b760e01b815260040160405180910390fd5b604080516060810182525f8082526020820181905291018190526001805460ff191690556002819055600380546001600160a01b03191690556107d934610d0b565b90506107e58134610fe0565b5f80546001600160a01b03168152600960205260408120805490919061080c908490610ff3565b90915550506007546001600160a01b03165f908152600960205260408120805483929061083a908490610ff3565b90915550505f5460405134815233916001600160a01b0316907fdb87be53c711a1eb193f5fffddcfd85425990853a8423fa2bfd4a8620c218ed49060200160405180910390a36105a133610d2c565b5f546001600160a01b031633146108b3576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018490525f918301829052805460ff1916811790556002839055600380546001600160a01b0319169055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906106e59085815260200190565b5f546001600160a01b0316331461094c576040516330cd747160e01b815260040160405180910390fd5b60045460ff1661096f576040516313650ef160e11b815260040160405180910390fd5b600580546006805460408051606080820183525f80835260208084018290529284018190526001805460ff199081169091556002829055600380546001600160a01b031990811690915585519384018652828452938301829052919093018390526004805490911690559481905593811690915590916001600160a01b03909116906109fa83610d0b565b9050610a068184610fe0565b5f80546001600160a01b031681526009602052604081208054909190610a2d908490610ff3565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610a5b908490610ff3565b90915550505f546040518481526001600160a01b038481169216907fd32f7ef8c20232133e4dbd098b49d6b86ab580eee8a90a815925e900584749639060200160405180910390a3610aac82610d2c565b505050565b6005543411610ad35760405163356680b760e01b815260040160405180910390fd5b60055415610b0d576005546006546001600160a01b03165f9081526009602052604081208054909190610b07908490610ff3565b90915550505b604080516060810182526001808252346020808401829052339385018490526004805460ff19169093179092556005819055600680546001600160a01b03191684179055925192835290917f5445de3f4fe13efb115ec05c57e09cc0e277801d0cd2ae780457ebcd8688c391910160405180910390a2565b5f546001600160a01b03163314610baf576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610bd65760405163e99d5ac560e01b815260040160405180910390fd5b610bdf81610d2c565b6006546001600160a01b03808316911603610c5c5760058054604080516060810182525f80825260208083018290529183018190526004805460ff1916905593849055600680546001600160a01b03191690556001600160a01b0385168452600990528220805491928392610c55908490610ff3565b9091555050505b60015460ff16156105a157604080516060810182525f8082526020820181905291018190526001805460ff19169055600255600380546001600160a01b031916905550565b6040515f90339083908381818185875af1925050503d805f8114610ce0576040519150601f19603f3d011682016040523d82523d5f602084013e610ce5565b606091505b5050905080610d07576040516342bb570960e01b815260040160405180910390fd5b5050565b5f606460085483610d1c9190611006565b610d26919061101d565b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb0594827696749bdc48b310d4a5cfee5e9a89491f1c6bea2b928c2c33db414de9190a35050565b5f5b83811015610d95578181015183820152602001610d7d565b50505f910152565b602081525f8251806020840152610dbb816040850160208701610d7b565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610de5575f80fd5b919050565b5f8060408385031215610dfb575f80fd5b82359150610e0b60208401610dcf565b90509250929050565b5f60208284031215610e24575f80fd5b610e2d82610dcf565b9392505050565b5f60208284031215610e44575f80fd5b5035919050565b7f3c21444f43545950452068746d6c3e3c68746d6c3e3c686561643e3c7469746c815261329f60f11b60208201526a111a59da5d185b14dbdd5b60aa1b60228201527f3c2f7469746c653e3c6d657461206e616d653d2276696577706f72742220636f602d8201527f6e74656e743d2277696474683d6465766963652d77696474682c20696e697469604d8201527f616c2d7363616c653d3122202f3e3c7374796c653e626f64797b6261636b6772606d8201527f6f756e643a233936393639363b6d617267696e3a303b70616464696e673a303b608d8201527f6f766572666c6f773a68696464656e3b7d3c2f7374796c653e3c2f686561643e60ad8201527f3c626f64793e3c73637269707420747970653d22746578742f6a61766173637260cd8201526434b83a111f60d91b60ed8201525f8251610f938160f2850160208701610d7b565b8201610fc160f282017f3c2f7363726970743e3c2f626f64793e3c2f68746d6c3e0000000000000000009052565b610109019392505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d2657610d26610fcc565b80820180821115610d2657610d26610fcc565b8082028115828204841417610d2657610d26610fcc565b5f8261103757634e487b7160e01b5f52601260045260245ffd5b50049056fe636f6e737420444952454354495645533d5b2223696664656620474c5f4553222c22707265636973696f6e20686967687020666c6f61743b222c2223656e646966222c2223646566696e652041412032222c2223646566696e6520522861296d61743228636f732861292c73696e2861292c2d73696e2861292c636f7328612929225d2e6d61702828653d3e60247b657d247b537472696e672e66726f6d43686172436f6465283130297d6029292e6a6f696e282222293b6c657420667261675f70696563653d60247b444952454354495645537d756e69666f726d207665633220755f7265736f6c7574696f6e2c755f6d6f7573653b756e69666f726d20666c6f617420755f74696d653b666c6f617420762c783b76656333207428766563332076297b763d7665633328646f7428762c76656333283132372e312c3331312e372c37342e3729292c646f7428762c76656333283236392e352c3138332e332c3234362e3129292c646f7428762c76656333283131332e352c3237312e392c3132342e362929293b72657475726e2d312e2b322e2a66726163742873696e2876292a34333735382e35343533313233293b7d76656333206e28766563332076297b72657475726e20636c616d7028762a28322e35312a762b2e3033292f28762a28322e34332a762b2e3539292b2e3134292c302e2c312e293b7d666c6f6174206628766563332076297b763d667261637428762a2e333138333039392b2e31293b762a3d31372e3b72657475726e20667261637428762e782a762e792a762e7a2a28762e782b762e792b762e7a29293b7d666c6f6174206d28766563332076297b7665633320783d666c6f6f722876292c793d66726163742876293b793d792a792a28332e2d322e2a79293b72657475726e206d6978286d6978286d6978286628782b76656333283029292c6628782b7665633328312c302c3029292c792e78292c6d6978286628782b7665633328302c312c3029292c6628782b7665633328312c312c3029292c792e78292c792e79292c6d6978286d6978286628782b7665633328302c302c3129292c6628782b7665633328312c302c3129292c792e78292c6d6978286628782b7665633328302c312c3129292c6628782b76656333283129292c792e78292c792e79292c792e7a293b7d666c6f61742066287665633320762c666c6f61742078297b7665633320663d763b666c6f617420793d7374657028662e782c302e292a322e2d312e2c723b662e783d61627328662e78292d2e383b662e782d3d2873696e2878292a2e352b2e35292a2e3132353b723d6c656e6774682866292d2e343b662e7a792a3d5228782a322e293b662e7a2d3d2e3533322a793b72657475726e206d696e28722c6c656e6774682866292d2e313332293b7d76656332207328766563332076297b666c6f617420793d302e2c723d3165322c613d782c693d722c6d3b7665633320753d763b753d762e78797a3b752e78792a3d522861293b693d6628752c61293b723d6d696e28722c69293b753d762e7a78793b752e78792a3d522861293b693d6628752c61293b723d6d696e28722c69293b753d762e797a783b752e78792a3d522861293b693d6628752c61293b723d6d696e28722c69293b6d3d6c656e6774682876292d2e343b696628723e6d29723d6d2c793d312e3b693d6d6178282d722c6c656e6774682876656332286c656e67746828762e787a292d2e342c762e7929292d2e303235293b72657475726e207665633228722c79293b7d76656333207028766563332076297b7665633220793d76656332282e3030322c30293b666c6f617420663d732876292e783b72657475726e206e6f726d616c697a65287665633328662d7328762d792e787979292e782c662d7328762d792e797879292e782c662d7328762d792e797978292e7829293b7d76656332206d287665633320762c766563332079297b666c6f617420783d302e3b7665633220663b666f7228696e7420723d303b723c36343b722b2b297b7665633320613d762b792a783b663d732861293b782b3d662e783b696628783e32302e7c7c61627328662e78293c2e30303529627265616b3b7d783d6d696e28782c32302e293b72657475726e207665633228782c662e79293b7d666c6f6174206e287665633320762c766563332079297b666c6f617420783d302e2c663d312e3b666f7228696e7420723d303b723c343b722b2b297b666c6f617420753d2e30312b2e3033332a666c6f61742872292f342e2c613d7328762b752a79292e783b782b3d28752d61292a663b662a3d2e39353b696628783e2e333529627265616b3b7d72657475726e20636c616d7028312e2d332e2a782c302e2c312e293b7d666c6f61742070287665633320762c766563332079297b666c6f617420783d312e2c613d282e382d762e79292f792e792c722c663b696628613e302e29783d6d696e28782c61293b723d312e3b663d2e30313b666f7228696e7420693d303b693c383b692b2b297b666c6f617420753d7328762b792a66292e782c413d636c616d70282e352a752f662c302e2c312e293b723d6d696e28722c412a412a28332e2d322e2a4129293b662b3d636c616d7028752c2e3030322c2e3035293b696628723c2e3030357c7c663e7829627265616b3b7d72657475726e20636c616d7028722c302e2c312e293b7d766563342073287665633320762c766563332072297b7665633320793d702876292c663d7665633328302c2d31302c30292c693b662e782b3d73696e28782a322e292a31302e3b662e7a2b3d636f73282d78292a31302e3b663d6e6f726d616c697a6528762d66293b666c6f617420613d636c616d7028646f7428662c79292c302e2c312e292c753d636c616d7028312e2b646f7428722c79292c302e2c312e292c6d3d636c616d7028646f74287265666c656374282d662c79292c2d72292c302e2c312e292c413d6e28762c79292c7a3b693d6d69782876656333282e36373435292c766563332832292c61293b692b3d766563332831292a706f7728752c372e293b692b3d766563332831292a706f77286d2c322e292a2e37353b692a3d6d6978282e312c312e2c41293b7a3d7028762c762b76656333283029293b693d6d697828692a76656333282e36393431292c692c7a293b72657475726e207665633428692c75293b7d766563322074287665633320762c766563332079297b666c6f617420783d646f7428762c79292c723d782a782d646f7428762c76292b322e32353b696628723c302e2972657475726e2076656332282d31293b723d737172742872293b72657475726e2076656332282d782d722c2d782b72293b7d766563342066287665633220782c7665633220792c666c6f61742061297b7665633220663d28782d2e352a79292f6d696e28792e792c792e78292c722c693b7665633320753d7665633328302c31302c2d3130292c412c7a2c642c6c2c622c6b3b752e797a2a3d5228755f6d6f7573652e792f792e792a28322e2a61636f73282d312e29292a322e293b752e787a2a3d5228755f6d6f7573652e782f792e782a28322e2a61636f73282d312e29292a322e293b413d6e6f726d616c697a6528766563332830292d75293b7a3d6e6f726d616c697a65287665633328412e7a2c302c2d412e7829293b643d6e6f726d616c697a6528662e782a7a2b662e792a63726f737328412c7a292b412f2e3337293b723d7428752c64293b693d722e783e302e3f6d28752c64293a76656332282d312c30293b6c3d752b642a692e783b623d766563332830293b696628692e783e2e30303529623d73286c2c64292e78797a3b666c6f617420633d736d6f6f74687374657028332e2c352e2c6c656e677468286c29292c673d6d287665633328662a302e2c762a31362e29293b673d706f7728672c312e3333293b6b3d6d69782876656333282e35383735292c766563332831292a332e2c67293b623d6d697828622c6b2c63293b623d6e2862293b72657475726e207665633428622c63293b7d666c6f6174207228666c6f61742076297b7665633320663d667261637428766563332876292a3434332e38393735293b662b3d646f7428662c662e797a782b332e3139293b72657475726e2066726163742828662e782b662e79292a662e7a293b7d666c6f6174206328666c6f61742076297b666c6f617420783d666c6f6f722876293b72657475726e206d697828722878292c7228782b322e292c736d6f6f74687374657028302e2c312e2c667261637428762929293b7d766563342063287665633220722c766563322079297b7665633420693d7665633428302c302c302c31293b666c6f617420613d2e352b2e352a73696e28722e782a3134372e292a73696e28722e792a3133312e292c753d6328755f74696d652a332e292c413b753d706f7728752c322e293b753d736d6f6f746873746570282e352c312e2c75293b413d2e32352a753b666f7228696e74207a3d303b7a3c41413b7a2b2b29666f7228696e74206d3d303b6d3c41413b6d2b2b297b666c6f617420733d755f74696d652d2e312a28666c6f6174287a2a41412b6d292b61292f666c6f61742841412a4141293b7665633220623d722b76656332286d2c7a292f666c6f6174284141293b763d28732d41292f322e3b783d322e2a61636f73282d312e292a763b692e782b3d6628622c792c2d312e292e783b763d732f322e3b783d322e2a61636f73282d312e292a763b692e792b3d6628622c792c302e292e793b763d28732b41292f322e3b783d322e2a61636f73282d312e292a763b692e7a2b3d6628622c792c312e292e7a3b7d692f3d666c6f61742841412a4141293b72657475726e20693b7d766f6964206d61696e28297b7665633220763d676c5f46726167436f6f72642e78793b676c5f46726167436f6c6f723d76656334286328762c755f7265736f6c7574696f6e292e78797a2b6672616374283535352e2a73696e283737372e2a7428762e7879792929292f3235362e2c31293b7d602c766572745f7368616465723d22617474726962757465207665633220703b766f6964206d61696e28297b676c5f506f736974696f6e3d7665633428702c312e302c312e30293b7d222c773d77696e646f772c643d646f63756d656e742c6465766963655f726174696f3d77696e646f772e646576696365506978656c526174696f2c706978656c3d6e65772055696e743841727261792834292c69735f6d6f62696c653d2f416e64726f69647c7765624f537c6950686f6e657c695061647c69506f647c426c61636b42657272797c49454d6f62696c657c4f70657261204d696e692f692e74657374286e6176696761746f722e757365724167656e74292c63616e7661733d642e717565727953656c6563746f72282263616e76617322293b696628646f63756d656e742e626f64792e7374796c652e746f756368416374696f6e3d226e6f6e65222c646f63756d656e742e626f64792e7374796c652e7573657253656c6563743d226e6f6e65222c2163616e766173297b63616e7661733d642e637265617465456c656d656e74282263616e76617322292c63616e7661732e7374796c652e646973706c61793d22626c6f636b223b76617220626f64793d642e626f64793b626f64797c7c28626f64793d642e637265617465456c656d656e742822626f64792229292c626f64792e617070656e644368696c642863616e766173292c642e646f63756d656e74456c656d656e742e617070656e644368696c6428626f6479297d6c657420776562676c4f7074696f6e733d7b7d3b69735f6d6f62696c657c7c28776562676c4f7074696f6e733d7b706f776572507265666572656e63653a22686967682d706572666f726d616e6365227d293b6c657420776562676c3d63616e7661732e676574436f6e746578742822776562676c222c776562676c4f7074696f6e73293b776562676c2e70726f6772616d3d6e756c6c2c776562676c2e756e69666f726d3d28652c74293d3e7b6c657420723d41727261792e697341727261792874293f742e6c656e6774682d313a302c613d5b5b22756e69666f726d3166222c302c22666c6f6174225d2c5b22756e69666f726d326676222c5b302c305d2c2276656332225d5d2c693d7b7d3b72657475726e20692e6e616d653d652c692e747970653d615b725d5b305d2c692e76616c75653d747c7c615b725d5b315d2c692e696e6e65725f747970653d615b725d5b325d2c692e6c6f636174696f6e3d22222c692e64697274793d21312c697d2c776562676c2e756e69666f726d733d5b5b22755f7265736f6c7574696f6e222c5b302c305d5d2c5b22755f74696d65222c2e3030312a706572666f726d616e63652e6e6f7728295d2c5b22755f6d6f757365222c5b302c305d5d5d2c776562676c2e756e69666f726d732e666f7245616368282828652c74293d3e776562676c2e756e69666f726d735b745d3d776562676c2e756e69666f726d28655b305d2c655b315d2929292c776562676c2e6372656174655f7368616465723d28652c742c72293d3e7b6c657420613d652e6372656174655368616465722874293b72657475726e20776562676c2e736861646572536f7572636528612c72292c776562676c2e636f6d70696c655368616465722861292c617d2c776562676c2e726573697a653d28293d3e7b63616e7661732e77696474683d772e696e6e657257696474682a6465766963655f726174696f2c63616e7661732e6865696768743d772e696e6e65724865696768742a6465766963655f726174696f2c63616e7661732e7374796c652e77696474683d2231303025222c63616e7661732e7374796c652e6865696768743d2231303025223b6c657420653d776562676c2e756e69666f726d735b305d3b652e76616c75653d5b63616e7661732e77696474682c63616e7661732e6865696768745d2c652e64697274793d21307d2c776562676c2e72656e6465723d28293d3e7b776562676c2e76696577706f727428302c302c63616e7661732e77696474682c63616e7661732e686569676874293b6c657420653d776562676c2e756e69666f726d735b315d3b652e76616c75653d2e3030312a706572666f726d616e63652e6e6f7728292c652e64697274793d21303b6c657420743d776562676c2e756e69666f726d732e66696c7465722828653d3e313d3d652e646972747929293b666f72286c6574206520696e207429776562676c5b745b655d2e747970655d28745b655d2e6c6f636174696f6e2c745b655d2e76616c7565292c745b655d2e64697274793d21313b776562676c2e6472617741727261797328776562676c2e545249414e474c455f53545249502c302c34292c776562676c2e72656164506978656c7328302c302c312c312c776562676c2e524742412c776562676c2e554e5349474e45445f425954452c706978656c297d2c776562676c2e69735f76616c69643d28293d3e6e756c6c213d776562676c2e70726f6772616d2c776562676c2e73746172745f7570646174653d28293d3e7b776562676c2e72656e64657228292c776562676c2e6672616d653d72657175657374416e696d6174696f6e4672616d6528776562676c2e73746172745f757064617465297d2c776562676c2e73746f705f7570646174653d28293d3e7b776562676c2e6672616d65262663616e63656c416e696d6174696f6e4672616d6528776562676c2e6672616d65297d2c776562676c2e6368616e67655f61613d653d3e7b667261675f70696563653d667261675f70696563652e7265706c616365282223646566696e652041412032222c6023646566696e6520414120247b657d60297d3b6c657420706f696e7465722c6c6f61645f7368616465723d28652c74293d3e7b6e756c6c3d3d74262628743d766572745f736861646572293b6c657420723d776562676c3b722e73746f705f75706461746528292c722e64656c65746550726f6772616d28722e70726f6772616d292c722e70726f6772616d3d722e63726561746550726f6772616d28293b636f6e737420613d776562676c2e6372656174655f73686164657228722c722e5645525445585f5348414445522c74292c693d776562676c2e6372656174655f73686164657228722c722e465241474d454e545f5348414445522c65293b722e61747461636853686164657228722e70726f6772616d2c61292c722e61747461636853686164657228722e70726f6772616d2c69292c722e6c696e6b50726f6772616d28722e70726f6772616d293b666f72286c6574206520696e20776562676c2e756e69666f726d73297b6c657420743d776562676c2e756e69666f726d735b655d3b742e6c6f636174696f6e3d722e676574556e69666f726d4c6f636174696f6e28722e70726f6772616d2c742e6e616d65292c742e64697274793d21307d6c6574206f3d466c6f6174333241727261792e6f66282d312c312c2d312c2d312c312c312c312c2d31292c6e3d722e63726561746542756666657228292c633d722e6765744174747269624c6f636174696f6e28722e70726f6772616d2c227022293b722e62696e6442756666657228722e41525241595f4255464645522c6e292c722e6275666665724461746128722e41525241595f4255464645522c6f2c722e5354415449435f44524157292c722e656e61626c6556657274657841747472696241727261792863292c722e766572746578417474726962506f696e74657228632c322c722e464c4f41542c21312c302c30292c722e75736550726f6772616d28722e70726f6772616d292c722e726573697a6528297d2c73746172745f7368616465723d28652c74293d3e7b69735f6d6f62696c652626776562676c2e6368616e67655f61612831292c6c6f61645f73686164657228652c74292c776562676c2e73746172745f75706461746528297d3b706f696e7465723d772e506f696e7465724576656e743f7b73746172743a5b22706f696e746572646f776e225d2c6d6f76653a5b22706f696e7465726d6f7665225d2c656e643a5b22706f696e7465727570225d7d3a7b73746172743a5b226d6f757365646f776e222c22746f7563687374617274225d2c6d6f76653a5b226d6f7573656d6f7665222c22746f7563686d6f7665225d2c656e643a5b226d6f7573657570222c22746f756368656e64225d7d3b6c657420647261673d7b7570646174655f756e69666f726d3a653d3e7b6c657420743d776562676c2e756e69666f726d735b305d2e76616c75652c723d776562676c2e756e69666f726d735b325d3b722e76616c75653d5b652e636c69656e74582c745b315d2d652e636c69656e74595d2c722e64697274793d21307d2c7570646174653a653d3e7b647261672e7570646174655f756e69666f726d2865297d2c73746172743a653d3e7b776562676c2e69735f76616c6964262628647261672e7570646174655f756e69666f726d2865292c706f696e7465722e6d6f76652e666f72456163682828653d3e7b646f63756d656e742e6164644576656e744c697374656e657228652c647261672e757064617465297d2929297d2c73746f703a653d3e7b776562676c2e69735f76616c6964262628647261672e7570646174655f756e69666f726d2865292c706f696e7465722e6d6f76652e666f72456163682828653d3e7b646f63756d656e742e72656d6f76654576656e744c697374656e657228652c647261672e757064617465297d2929297d7d2c726573697a653d28293d3e7b69662821776562676c2e69735f76616c69642972657475726e3b6c657420653d776562676c2e756e69666f726d735b305d2e76616c75653b776562676c2e726573697a6528293b6c657420743d776562676c2e756e69666f726d735b305d2e76616c75652c723d5b745b305d2f655b305d2c745b315d2f655b315d5d2c613d776562676c2e756e69666f726d735b325d3b612e76616c75653d5b612e76616c75655b305d2a725b305d2c612e76616c75655b315d2a725b315d5d2c612e64697274793d21307d3b636f6e7374205349474e41545552455f5356473d22646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423462577875637a306e6148523063446f764c336433647935334d793576636d63764d6a41774d43397a646d636e49485a705a586443623367394a7a41674d4341784d7a67754e6a63674d5451324c6a67354a7a3438634746306143426d615778735053643361476c305a5363675a44306e625445794d5334354e434177494449754e7a4d674e43347a4c5451324c6a673149446b754e54684d4e693478494449314c6a4934624330784c6a51354c5455754d7a564d4d5449784c6a6b30494442364a79382b50484268644767675a6d6c736244306e643268706447556e494751394a3030324c6a4930494467754d7a4d674d6934354e5341314c6a5531494441674f4334304f4777784e5334304d7941784d444d754e7a63744d6934344f5341304c6a5135494449754d5445674d6934784d6941324c6a4d304c5455754f4330754e4459744e6934314d3077324c6a4930494467754d7a4e36545445794f43347a49446b754d7a64734d6934334e7930784c6a6b33494449754f4451674d5334784e4330784c6a5530494445324c6a55334c5445754e7a67674d7a67754d5334354e5341794d7934794f43417a4c6a5134494449314c6a6b3349444d754e6a55674d546b754d5445744d5334354e53417a4c6a67334c544d754f5459744d5334354d7930304c6a55784c5449314c6a63354c544d754d4449744d6a51754e7a45744c6a67314c5449304c6a51794c6a6b324c5449314c6a6333494449754f5459744d6a4d754e44563654546b754d6a49674d544d344c6a63786243307a4c6a6331494445754e4455754e444d674d79343349446b754e544d674d7934774d79417a4f4334314e6930334c6a6b7949444d314c6a49784c5449754f5459674e4441754e6a49674d7934784d6941794c6a4d354c5449754e5459744d6934304e43307a4c6a51744d6a4d754e546b744d6934304c5449314c6a41334c5334794f4330794e4334344e6941794c6a4d7a4c5449324c6a5530494451754d7a67744d6a41754e446b674d5334314d58704e4e5455754e544d674f4441754e5464734d69347a4e5341784c6a417a494445754f546b744d6934324e5330784c6a41354c546b754e54464d4e7a59754e7a49674e6a5a734c544d754d7a63674d546b754e5445744d5451754d446b674d5334324d7930784c6a67674d69347849444d754d546b674d6934304d5341784d6934324e4330754e6a59754e7a49674d6934794d7941784c6a63314c6a5179494449754e6a55744d6934794d79417a4c6a67314c5334354e6930794c6a55354c544d754f4459744d6934334e7930754e5451674e5334304f4330794d4334344d7941784c6a63314c544d754d7a45744d69347a4e5330784c6a45304c546b754e6a4d674d5334784e4577314e43347a4d7941324e6d77744c6a6b3349444d754d5451674d6934784e7941784d5334304d336f6e4c7a34384c334e325a7a343d222c617070656e645369676e61747572653d28293d3e7b636f6e737420653d646f63756d656e742e637265617465456c656d656e742822696d6722293b652e7372633d5349474e41545552455f5356472e7472696d28292c652e7374796c652e637373546578743d2277696474683a343070783b7a2d696e6465783a35303b706f736974696f6e3a66697865643b626f74746f6d3a323070783b72696768743a323070783b222c626f64792e617070656e644368696c642865297d3b696628776562676c2973746172745f73686164657228667261675f7069656365292c726573697a6528292c706f696e7465722e73746172742e666f72456163682828653d3e7b646f63756d656e742e6164644576656e744c697374656e657228652c647261672e7374617274297d29292c706f696e7465722e656e642e666f72456163682828653d3e7b646f63756d656e742e6164644576656e744c697374656e657228652c647261672e73746f70297d29292c77696e646f772e6164644576656e744c697374656e65722822726573697a65222c726573697a65292c617070656e645369676e617475726528293b656c73657b636f6e737420653d646f63756d656e742e637265617465456c656d656e74282264697622293b652e7374796c652e637373546578743d22616c69676e2d6974656d733a63656e7465723b6261636b67726f756e643a233936393639363b636f6c6f723a236666663b646973706c61793a666c65783b666f6e742d66616d696c793a6d6f6e6f73706163653b666f6e742d73697a653a323070783b6865696768743a31303076683b6a7573746966792d636f6e74656e743a63656e7465723b6c6566743a303b706f736974696f6e3a66697865643b746f703a303b77696474683a31303076773b222c652e696e6e657248544d4c3d224e4f5420535550504f52544544222c646f63756d656e742e626f64792e617070656e642865297d5765206c6561766520747261636573206f66206f757220616374696f6e732c2074686f756768747320616e6420656d6f74696f6e732c206372656174696e672061206469676974616c207265666c656374696f6e206f66206f757220747275652073656c7665732e0aa2646970667358221220d97431e7b94cbb6233be768b1a35b53d9381c22d29035c67589677a3b2c5608064736f6c634300081500330000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610126575f3560e01c80638a71bb2d116100a8578063def181011161006d578063def18101146102f0578063e52a787414610340578063ecfc7ecc14610354578063f2fde38b1461035c578063f3f437031461037b578063fa4e28f6146103a6575f80fd5b80638a71bb2d1461025e5780638da5cb5b1461028157806395d89b411461029f5780639c3962f0146102c9578063c7857fb5146102d1575f80fd5b80633ccfd60b116100ee5780633ccfd60b146101cc57806341e42f30146101e057806342c47217146101ff5780634c00de82146102135780636b6c07741461024a575f80fd5b806306fdde031461012a5780630dca550e1461016f57806337271cc71461019057806337a908fc146101a457806338739dad146101b8575b5f80fd5b348015610135575f80fd5b5060408051808201909152600b81526a111a59da5d185b14dbdd5b60aa1b60208201525b6040516101669190610d9d565b60405180910390f35b34801561017a575f80fd5b5061018e610189366004610dea565b6103d0565b005b34801561019b575f80fd5b5061018e610480565b3480156101af575f80fd5b50610159610527565b3480156101c3575f80fd5b50610159610569565b3480156101d7575f80fd5b5061018e610585565b3480156101eb575f80fd5b5061018e6101fa366004610e14565b6105a4565b34801561020a575f80fd5b5061018e610618565b34801561021e575f80fd5b50600754610232906001600160a01b031681565b6040516001600160a01b039091168152602001610166565b348015610255575f80fd5b506101596106f0565b348015610269575f80fd5b5061027360085481565b604051908152602001610166565b34801561028c575f80fd5b505f54610232906001600160a01b031681565b3480156102aa575f80fd5b50604080518082019091526002815261445360f01b6020820152610159565b61018e61070f565b3480156102dc575f80fd5b5061018e6102eb366004610e34565b610889565b3480156102fb575f80fd5b5060045460055460065461031a9260ff1691906001600160a01b031683565b60408051931515845260208401929092526001600160a01b031690820152606001610166565b34801561034b575f80fd5b5061018e610922565b61018e610ab1565b348015610367575f80fd5b5061018e610376366004610e14565b610b85565b348015610386575f80fd5b50610273610395366004610e14565b60096020525f908152604090205481565b3480156103b1575f80fd5b5060015460025460035461031a9260ff1691906001600160a01b031683565b5f546001600160a01b031633146103fa576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018590526001600160a01b038416918301829052805460ff1916811790556002849055600380546001600160a01b03191682179055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906104749086815260200190565b60405180910390a35050565b6006546001600160a01b031633146104ab5760405163173f0e6f60e21b815260040160405180910390fd5b60058054604080516060810182525f8082526020820181905291018190526004805460ff19169055909155600680546001600160a01b03191690556104ef81610ca1565b60405181815233907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a9060200160405180910390a250565b60606040518061240001604052806123cf815260200161103d6123cf91396040516020016105559190610e4b565b604051602081830303815290604052905090565b6040518060a001604052806069815260200161340c6069913981565b335f90815260096020526040812080549190556105a181610ca1565b50565b6007546001600160a01b031633146105cf57604051631229bf3760e11b815260040160405180910390fd5b6001600160a01b0381166105f65760405163e99d5ac560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610642576040516330cd747160e01b815260040160405180910390fd5b60408051606080820183526001805460ff811615158452600280546020808701918252600380546001600160a01b038082168a8c019081528b51998a018c525f808b52948a01859052988b0184905260ff1990961690965592556001600160a01b03199093169055915190519351929391169133917ff1f48fe426adbd884772d4c165015a460df54458ff7e238dff36fe3c5d341ccf916106e591815260200190565b60405180910390a350565b6040518061240001604052806123cf815260200161103d6123cf913981565b60015460ff1661073257604051631d99ddbf60e01b815260040160405180910390fd5b6003546001600160a01b03161580159061075757506003546001600160a01b03163314155b156107755760405163d6da33db60e01b815260040160405180910390fd5b60025434146107975760405163356680b760e01b815260040160405180910390fd5b604080516060810182525f8082526020820181905291018190526001805460ff191690556002819055600380546001600160a01b03191690556107d934610d0b565b90506107e58134610fe0565b5f80546001600160a01b03168152600960205260408120805490919061080c908490610ff3565b90915550506007546001600160a01b03165f908152600960205260408120805483929061083a908490610ff3565b90915550505f5460405134815233916001600160a01b0316907fdb87be53c711a1eb193f5fffddcfd85425990853a8423fa2bfd4a8620c218ed49060200160405180910390a36105a133610d2c565b5f546001600160a01b031633146108b3576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018490525f918301829052805460ff1916811790556002839055600380546001600160a01b0319169055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906106e59085815260200190565b5f546001600160a01b0316331461094c576040516330cd747160e01b815260040160405180910390fd5b60045460ff1661096f576040516313650ef160e11b815260040160405180910390fd5b600580546006805460408051606080820183525f80835260208084018290529284018190526001805460ff199081169091556002829055600380546001600160a01b031990811690915585519384018652828452938301829052919093018390526004805490911690559481905593811690915590916001600160a01b03909116906109fa83610d0b565b9050610a068184610fe0565b5f80546001600160a01b031681526009602052604081208054909190610a2d908490610ff3565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610a5b908490610ff3565b90915550505f546040518481526001600160a01b038481169216907fd32f7ef8c20232133e4dbd098b49d6b86ab580eee8a90a815925e900584749639060200160405180910390a3610aac82610d2c565b505050565b6005543411610ad35760405163356680b760e01b815260040160405180910390fd5b60055415610b0d576005546006546001600160a01b03165f9081526009602052604081208054909190610b07908490610ff3565b90915550505b604080516060810182526001808252346020808401829052339385018490526004805460ff19169093179092556005819055600680546001600160a01b03191684179055925192835290917f5445de3f4fe13efb115ec05c57e09cc0e277801d0cd2ae780457ebcd8688c391910160405180910390a2565b5f546001600160a01b03163314610baf576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610bd65760405163e99d5ac560e01b815260040160405180910390fd5b610bdf81610d2c565b6006546001600160a01b03808316911603610c5c5760058054604080516060810182525f80825260208083018290529183018190526004805460ff1916905593849055600680546001600160a01b03191690556001600160a01b0385168452600990528220805491928392610c55908490610ff3565b9091555050505b60015460ff16156105a157604080516060810182525f8082526020820181905291018190526001805460ff19169055600255600380546001600160a01b031916905550565b6040515f90339083908381818185875af1925050503d805f8114610ce0576040519150601f19603f3d011682016040523d82523d5f602084013e610ce5565b606091505b5050905080610d07576040516342bb570960e01b815260040160405180910390fd5b5050565b5f606460085483610d1c9190611006565b610d26919061101d565b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb0594827696749bdc48b310d4a5cfee5e9a89491f1c6bea2b928c2c33db414de9190a35050565b5f5b83811015610d95578181015183820152602001610d7d565b50505f910152565b602081525f8251806020840152610dbb816040850160208701610d7b565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610de5575f80fd5b919050565b5f8060408385031215610dfb575f80fd5b82359150610e0b60208401610dcf565b90509250929050565b5f60208284031215610e24575f80fd5b610e2d82610dcf565b9392505050565b5f60208284031215610e44575f80fd5b5035919050565b7f3c21444f43545950452068746d6c3e3c68746d6c3e3c686561643e3c7469746c815261329f60f11b60208201526a111a59da5d185b14dbdd5b60aa1b60228201527f3c2f7469746c653e3c6d657461206e616d653d2276696577706f72742220636f602d8201527f6e74656e743d2277696474683d6465766963652d77696474682c20696e697469604d8201527f616c2d7363616c653d3122202f3e3c7374796c653e626f64797b6261636b6772606d8201527f6f756e643a233936393639363b6d617267696e3a303b70616464696e673a303b608d8201527f6f766572666c6f773a68696464656e3b7d3c2f7374796c653e3c2f686561643e60ad8201527f3c626f64793e3c73637269707420747970653d22746578742f6a61766173637260cd8201526434b83a111f60d91b60ed8201525f8251610f938160f2850160208701610d7b565b8201610fc160f282017f3c2f7363726970743e3c2f626f64793e3c2f68746d6c3e0000000000000000009052565b610109019392505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d2657610d26610fcc565b80820180821115610d2657610d26610fcc565b8082028115828204841417610d2657610d26610fcc565b5f8261103757634e487b7160e01b5f52601260045260245ffd5b50049056fe636f6e737420444952454354495645533d5b2223696664656620474c5f4553222c22707265636973696f6e20686967687020666c6f61743b222c2223656e646966222c2223646566696e652041412032222c2223646566696e6520522861296d61743228636f732861292c73696e2861292c2d73696e2861292c636f7328612929225d2e6d61702828653d3e60247b657d247b537472696e672e66726f6d43686172436f6465283130297d6029292e6a6f696e282222293b6c657420667261675f70696563653d60247b444952454354495645537d756e69666f726d207665633220755f7265736f6c7574696f6e2c755f6d6f7573653b756e69666f726d20666c6f617420755f74696d653b666c6f617420762c783b76656333207428766563332076297b763d7665633328646f7428762c76656333283132372e312c3331312e372c37342e3729292c646f7428762c76656333283236392e352c3138332e332c3234362e3129292c646f7428762c76656333283131332e352c3237312e392c3132342e362929293b72657475726e2d312e2b322e2a66726163742873696e2876292a34333735382e35343533313233293b7d76656333206e28766563332076297b72657475726e20636c616d7028762a28322e35312a762b2e3033292f28762a28322e34332a762b2e3539292b2e3134292c302e2c312e293b7d666c6f6174206628766563332076297b763d667261637428762a2e333138333039392b2e31293b762a3d31372e3b72657475726e20667261637428762e782a762e792a762e7a2a28762e782b762e792b762e7a29293b7d666c6f6174206d28766563332076297b7665633320783d666c6f6f722876292c793d66726163742876293b793d792a792a28332e2d322e2a79293b72657475726e206d6978286d6978286d6978286628782b76656333283029292c6628782b7665633328312c302c3029292c792e78292c6d6978286628782b7665633328302c312c3029292c6628782b7665633328312c312c3029292c792e78292c792e79292c6d6978286d6978286628782b7665633328302c302c3129292c6628782b7665633328312c302c3129292c792e78292c6d6978286628782b7665633328302c312c3129292c6628782b76656333283129292c792e78292c792e79292c792e7a293b7d666c6f61742066287665633320762c666c6f61742078297b7665633320663d763b666c6f617420793d7374657028662e782c302e292a322e2d312e2c723b662e783d61627328662e78292d2e383b662e782d3d2873696e2878292a2e352b2e35292a2e3132353b723d6c656e6774682866292d2e343b662e7a792a3d5228782a322e293b662e7a2d3d2e3533322a793b72657475726e206d696e28722c6c656e6774682866292d2e313332293b7d76656332207328766563332076297b666c6f617420793d302e2c723d3165322c613d782c693d722c6d3b7665633320753d763b753d762e78797a3b752e78792a3d522861293b693d6628752c61293b723d6d696e28722c69293b753d762e7a78793b752e78792a3d522861293b693d6628752c61293b723d6d696e28722c69293b753d762e797a783b752e78792a3d522861293b693d6628752c61293b723d6d696e28722c69293b6d3d6c656e6774682876292d2e343b696628723e6d29723d6d2c793d312e3b693d6d6178282d722c6c656e6774682876656332286c656e67746828762e787a292d2e342c762e7929292d2e303235293b72657475726e207665633228722c79293b7d76656333207028766563332076297b7665633220793d76656332282e3030322c30293b666c6f617420663d732876292e783b72657475726e206e6f726d616c697a65287665633328662d7328762d792e787979292e782c662d7328762d792e797879292e782c662d7328762d792e797978292e7829293b7d76656332206d287665633320762c766563332079297b666c6f617420783d302e3b7665633220663b666f7228696e7420723d303b723c36343b722b2b297b7665633320613d762b792a783b663d732861293b782b3d662e783b696628783e32302e7c7c61627328662e78293c2e30303529627265616b3b7d783d6d696e28782c32302e293b72657475726e207665633228782c662e79293b7d666c6f6174206e287665633320762c766563332079297b666c6f617420783d302e2c663d312e3b666f7228696e7420723d303b723c343b722b2b297b666c6f617420753d2e30312b2e3033332a666c6f61742872292f342e2c613d7328762b752a79292e783b782b3d28752d61292a663b662a3d2e39353b696628783e2e333529627265616b3b7d72657475726e20636c616d7028312e2d332e2a782c302e2c312e293b7d666c6f61742070287665633320762c766563332079297b666c6f617420783d312e2c613d282e382d762e79292f792e792c722c663b696628613e302e29783d6d696e28782c61293b723d312e3b663d2e30313b666f7228696e7420693d303b693c383b692b2b297b666c6f617420753d7328762b792a66292e782c413d636c616d70282e352a752f662c302e2c312e293b723d6d696e28722c412a412a28332e2d322e2a4129293b662b3d636c616d7028752c2e3030322c2e3035293b696628723c2e3030357c7c663e7829627265616b3b7d72657475726e20636c616d7028722c302e2c312e293b7d766563342073287665633320762c766563332072297b7665633320793d702876292c663d7665633328302c2d31302c30292c693b662e782b3d73696e28782a322e292a31302e3b662e7a2b3d636f73282d78292a31302e3b663d6e6f726d616c697a6528762d66293b666c6f617420613d636c616d7028646f7428662c79292c302e2c312e292c753d636c616d7028312e2b646f7428722c79292c302e2c312e292c6d3d636c616d7028646f74287265666c656374282d662c79292c2d72292c302e2c312e292c413d6e28762c79292c7a3b693d6d69782876656333282e36373435292c766563332832292c61293b692b3d766563332831292a706f7728752c372e293b692b3d766563332831292a706f77286d2c322e292a2e37353b692a3d6d6978282e312c312e2c41293b7a3d7028762c762b76656333283029293b693d6d697828692a76656333282e36393431292c692c7a293b72657475726e207665633428692c75293b7d766563322074287665633320762c766563332079297b666c6f617420783d646f7428762c79292c723d782a782d646f7428762c76292b322e32353b696628723c302e2972657475726e2076656332282d31293b723d737172742872293b72657475726e2076656332282d782d722c2d782b72293b7d766563342066287665633220782c7665633220792c666c6f61742061297b7665633220663d28782d2e352a79292f6d696e28792e792c792e78292c722c693b7665633320753d7665633328302c31302c2d3130292c412c7a2c642c6c2c622c6b3b752e797a2a3d5228755f6d6f7573652e792f792e792a28322e2a61636f73282d312e29292a322e293b752e787a2a3d5228755f6d6f7573652e782f792e782a28322e2a61636f73282d312e29292a322e293b413d6e6f726d616c697a6528766563332830292d75293b7a3d6e6f726d616c697a65287665633328412e7a2c302c2d412e7829293b643d6e6f726d616c697a6528662e782a7a2b662e792a63726f737328412c7a292b412f2e3337293b723d7428752c64293b693d722e783e302e3f6d28752c64293a76656332282d312c30293b6c3d752b642a692e783b623d766563332830293b696628692e783e2e30303529623d73286c2c64292e78797a3b666c6f617420633d736d6f6f74687374657028332e2c352e2c6c656e677468286c29292c673d6d287665633328662a302e2c762a31362e29293b673d706f7728672c312e3333293b6b3d6d69782876656333282e35383735292c766563332831292a332e2c67293b623d6d697828622c6b2c63293b623d6e2862293b72657475726e207665633428622c63293b7d666c6f6174207228666c6f61742076297b7665633320663d667261637428766563332876292a3434332e38393735293b662b3d646f7428662c662e797a782b332e3139293b72657475726e2066726163742828662e782b662e79292a662e7a293b7d666c6f6174206328666c6f61742076297b666c6f617420783d666c6f6f722876293b72657475726e206d697828722878292c7228782b322e292c736d6f6f74687374657028302e2c312e2c667261637428762929293b7d766563342063287665633220722c766563322079297b7665633420693d7665633428302c302c302c31293b666c6f617420613d2e352b2e352a73696e28722e782a3134372e292a73696e28722e792a3133312e292c753d6328755f74696d652a332e292c413b753d706f7728752c322e293b753d736d6f6f746873746570282e352c312e2c75293b413d2e32352a753b666f7228696e74207a3d303b7a3c41413b7a2b2b29666f7228696e74206d3d303b6d3c41413b6d2b2b297b666c6f617420733d755f74696d652d2e312a28666c6f6174287a2a41412b6d292b61292f666c6f61742841412a4141293b7665633220623d722b76656332286d2c7a292f666c6f6174284141293b763d28732d41292f322e3b783d322e2a61636f73282d312e292a763b692e782b3d6628622c792c2d312e292e783b763d732f322e3b783d322e2a61636f73282d312e292a763b692e792b3d6628622c792c302e292e793b763d28732b41292f322e3b783d322e2a61636f73282d312e292a763b692e7a2b3d6628622c792c312e292e7a3b7d692f3d666c6f61742841412a4141293b72657475726e20693b7d766f6964206d61696e28297b7665633220763d676c5f46726167436f6f72642e78793b676c5f46726167436f6c6f723d76656334286328762c755f7265736f6c7574696f6e292e78797a2b6672616374283535352e2a73696e283737372e2a7428762e7879792929292f3235362e2c31293b7d602c766572745f7368616465723d22617474726962757465207665633220703b766f6964206d61696e28297b676c5f506f736974696f6e3d7665633428702c312e302c312e30293b7d222c773d77696e646f772c643d646f63756d656e742c6465766963655f726174696f3d77696e646f772e646576696365506978656c526174696f2c706978656c3d6e65772055696e743841727261792834292c69735f6d6f62696c653d2f416e64726f69647c7765624f537c6950686f6e657c695061647c69506f647c426c61636b42657272797c49454d6f62696c657c4f70657261204d696e692f692e74657374286e6176696761746f722e757365724167656e74292c63616e7661733d642e717565727953656c6563746f72282263616e76617322293b696628646f63756d656e742e626f64792e7374796c652e746f756368416374696f6e3d226e6f6e65222c646f63756d656e742e626f64792e7374796c652e7573657253656c6563743d226e6f6e65222c2163616e766173297b63616e7661733d642e637265617465456c656d656e74282263616e76617322292c63616e7661732e7374796c652e646973706c61793d22626c6f636b223b76617220626f64793d642e626f64793b626f64797c7c28626f64793d642e637265617465456c656d656e742822626f64792229292c626f64792e617070656e644368696c642863616e766173292c642e646f63756d656e74456c656d656e742e617070656e644368696c6428626f6479297d6c657420776562676c4f7074696f6e733d7b7d3b69735f6d6f62696c657c7c28776562676c4f7074696f6e733d7b706f776572507265666572656e63653a22686967682d706572666f726d616e6365227d293b6c657420776562676c3d63616e7661732e676574436f6e746578742822776562676c222c776562676c4f7074696f6e73293b776562676c2e70726f6772616d3d6e756c6c2c776562676c2e756e69666f726d3d28652c74293d3e7b6c657420723d41727261792e697341727261792874293f742e6c656e6774682d313a302c613d5b5b22756e69666f726d3166222c302c22666c6f6174225d2c5b22756e69666f726d326676222c5b302c305d2c2276656332225d5d2c693d7b7d3b72657475726e20692e6e616d653d652c692e747970653d615b725d5b305d2c692e76616c75653d747c7c615b725d5b315d2c692e696e6e65725f747970653d615b725d5b325d2c692e6c6f636174696f6e3d22222c692e64697274793d21312c697d2c776562676c2e756e69666f726d733d5b5b22755f7265736f6c7574696f6e222c5b302c305d5d2c5b22755f74696d65222c2e3030312a706572666f726d616e63652e6e6f7728295d2c5b22755f6d6f757365222c5b302c305d5d5d2c776562676c2e756e69666f726d732e666f7245616368282828652c74293d3e776562676c2e756e69666f726d735b745d3d776562676c2e756e69666f726d28655b305d2c655b315d2929292c776562676c2e6372656174655f7368616465723d28652c742c72293d3e7b6c657420613d652e6372656174655368616465722874293b72657475726e20776562676c2e736861646572536f7572636528612c72292c776562676c2e636f6d70696c655368616465722861292c617d2c776562676c2e726573697a653d28293d3e7b63616e7661732e77696474683d772e696e6e657257696474682a6465766963655f726174696f2c63616e7661732e6865696768743d772e696e6e65724865696768742a6465766963655f726174696f2c63616e7661732e7374796c652e77696474683d2231303025222c63616e7661732e7374796c652e6865696768743d2231303025223b6c657420653d776562676c2e756e69666f726d735b305d3b652e76616c75653d5b63616e7661732e77696474682c63616e7661732e6865696768745d2c652e64697274793d21307d2c776562676c2e72656e6465723d28293d3e7b776562676c2e76696577706f727428302c302c63616e7661732e77696474682c63616e7661732e686569676874293b6c657420653d776562676c2e756e69666f726d735b315d3b652e76616c75653d2e3030312a706572666f726d616e63652e6e6f7728292c652e64697274793d21303b6c657420743d776562676c2e756e69666f726d732e66696c7465722828653d3e313d3d652e646972747929293b666f72286c6574206520696e207429776562676c5b745b655d2e747970655d28745b655d2e6c6f636174696f6e2c745b655d2e76616c7565292c745b655d2e64697274793d21313b776562676c2e6472617741727261797328776562676c2e545249414e474c455f53545249502c302c34292c776562676c2e72656164506978656c7328302c302c312c312c776562676c2e524742412c776562676c2e554e5349474e45445f425954452c706978656c297d2c776562676c2e69735f76616c69643d28293d3e6e756c6c213d776562676c2e70726f6772616d2c776562676c2e73746172745f7570646174653d28293d3e7b776562676c2e72656e64657228292c776562676c2e6672616d653d72657175657374416e696d6174696f6e4672616d6528776562676c2e73746172745f757064617465297d2c776562676c2e73746f705f7570646174653d28293d3e7b776562676c2e6672616d65262663616e63656c416e696d6174696f6e4672616d6528776562676c2e6672616d65297d2c776562676c2e6368616e67655f61613d653d3e7b667261675f70696563653d667261675f70696563652e7265706c616365282223646566696e652041412032222c6023646566696e6520414120247b657d60297d3b6c657420706f696e7465722c6c6f61645f7368616465723d28652c74293d3e7b6e756c6c3d3d74262628743d766572745f736861646572293b6c657420723d776562676c3b722e73746f705f75706461746528292c722e64656c65746550726f6772616d28722e70726f6772616d292c722e70726f6772616d3d722e63726561746550726f6772616d28293b636f6e737420613d776562676c2e6372656174655f73686164657228722c722e5645525445585f5348414445522c74292c693d776562676c2e6372656174655f73686164657228722c722e465241474d454e545f5348414445522c65293b722e61747461636853686164657228722e70726f6772616d2c61292c722e61747461636853686164657228722e70726f6772616d2c69292c722e6c696e6b50726f6772616d28722e70726f6772616d293b666f72286c6574206520696e20776562676c2e756e69666f726d73297b6c657420743d776562676c2e756e69666f726d735b655d3b742e6c6f636174696f6e3d722e676574556e69666f726d4c6f636174696f6e28722e70726f6772616d2c742e6e616d65292c742e64697274793d21307d6c6574206f3d466c6f6174333241727261792e6f66282d312c312c2d312c2d312c312c312c312c2d31292c6e3d722e63726561746542756666657228292c633d722e6765744174747269624c6f636174696f6e28722e70726f6772616d2c227022293b722e62696e6442756666657228722e41525241595f4255464645522c6e292c722e6275666665724461746128722e41525241595f4255464645522c6f2c722e5354415449435f44524157292c722e656e61626c6556657274657841747472696241727261792863292c722e766572746578417474726962506f696e74657228632c322c722e464c4f41542c21312c302c30292c722e75736550726f6772616d28722e70726f6772616d292c722e726573697a6528297d2c73746172745f7368616465723d28652c74293d3e7b69735f6d6f62696c652626776562676c2e6368616e67655f61612831292c6c6f61645f73686164657228652c74292c776562676c2e73746172745f75706461746528297d3b706f696e7465723d772e506f696e7465724576656e743f7b73746172743a5b22706f696e746572646f776e225d2c6d6f76653a5b22706f696e7465726d6f7665225d2c656e643a5b22706f696e7465727570225d7d3a7b73746172743a5b226d6f757365646f776e222c22746f7563687374617274225d2c6d6f76653a5b226d6f7573656d6f7665222c22746f7563686d6f7665225d2c656e643a5b226d6f7573657570222c22746f756368656e64225d7d3b6c657420647261673d7b7570646174655f756e69666f726d3a653d3e7b6c657420743d776562676c2e756e69666f726d735b305d2e76616c75652c723d776562676c2e756e69666f726d735b325d3b722e76616c75653d5b652e636c69656e74582c745b315d2d652e636c69656e74595d2c722e64697274793d21307d2c7570646174653a653d3e7b647261672e7570646174655f756e69666f726d2865297d2c73746172743a653d3e7b776562676c2e69735f76616c6964262628647261672e7570646174655f756e69666f726d2865292c706f696e7465722e6d6f76652e666f72456163682828653d3e7b646f63756d656e742e6164644576656e744c697374656e657228652c647261672e757064617465297d2929297d2c73746f703a653d3e7b776562676c2e69735f76616c6964262628647261672e7570646174655f756e69666f726d2865292c706f696e7465722e6d6f76652e666f72456163682828653d3e7b646f63756d656e742e72656d6f76654576656e744c697374656e657228652c647261672e757064617465297d2929297d7d2c726573697a653d28293d3e7b69662821776562676c2e69735f76616c69642972657475726e3b6c657420653d776562676c2e756e69666f726d735b305d2e76616c75653b776562676c2e726573697a6528293b6c657420743d776562676c2e756e69666f726d735b305d2e76616c75652c723d5b745b305d2f655b305d2c745b315d2f655b315d5d2c613d776562676c2e756e69666f726d735b325d3b612e76616c75653d5b612e76616c75655b305d2a725b305d2c612e76616c75655b315d2a725b315d5d2c612e64697274793d21307d3b636f6e7374205349474e41545552455f5356473d22646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423462577875637a306e6148523063446f764c336433647935334d793576636d63764d6a41774d43397a646d636e49485a705a586443623367394a7a41674d4341784d7a67754e6a63674d5451324c6a67354a7a3438634746306143426d615778735053643361476c305a5363675a44306e625445794d5334354e434177494449754e7a4d674e43347a4c5451324c6a673149446b754e54684d4e693478494449314c6a4934624330784c6a51354c5455754d7a564d4d5449784c6a6b30494442364a79382b50484268644767675a6d6c736244306e643268706447556e494751394a3030324c6a4930494467754d7a4d674d6934354e5341314c6a5531494441674f4334304f4777784e5334304d7941784d444d754e7a63744d6934344f5341304c6a5135494449754d5445674d6934784d6941324c6a4d304c5455754f4330754e4459744e6934314d3077324c6a4930494467754d7a4e36545445794f43347a49446b754d7a64734d6934334e7930784c6a6b33494449754f4451674d5334784e4330784c6a5530494445324c6a55334c5445754e7a67674d7a67754d5334354e5341794d7934794f43417a4c6a5134494449314c6a6b3349444d754e6a55674d546b754d5445744d5334354e53417a4c6a67334c544d754f5459744d5334354d7930304c6a55784c5449314c6a63354c544d754d4449744d6a51754e7a45744c6a67314c5449304c6a51794c6a6b324c5449314c6a6333494449754f5459744d6a4d754e44563654546b754d6a49674d544d344c6a63786243307a4c6a6331494445754e4455754e444d674d79343349446b754e544d674d7934774d79417a4f4334314e6930334c6a6b7949444d314c6a49784c5449754f5459674e4441754e6a49674d7934784d6941794c6a4d354c5449754e5459744d6934304e43307a4c6a51744d6a4d754e546b744d6934304c5449314c6a41334c5334794f4330794e4334344e6941794c6a4d7a4c5449324c6a5530494451754d7a67744d6a41754e446b674d5334314d58704e4e5455754e544d674f4441754e5464734d69347a4e5341784c6a417a494445754f546b744d6934324e5330784c6a41354c546b754e54464d4e7a59754e7a49674e6a5a734c544d754d7a63674d546b754e5445744d5451754d446b674d5334324d7930784c6a67674d69347849444d754d546b674d6934304d5341784d6934324e4330754e6a59754e7a49674d6934794d7941784c6a63314c6a5179494449754e6a55744d6934794d79417a4c6a67314c5334354e6930794c6a55354c544d754f4459744d6934334e7930754e5451674e5334304f4330794d4334344d7941784c6a63314c544d754d7a45744d69347a4e5330784c6a45304c546b754e6a4d674d5334784e4577314e43347a4d7941324e6d77744c6a6b3349444d754d5451674d6934784e7941784d5334304d336f6e4c7a34384c334e325a7a343d222c617070656e645369676e61747572653d28293d3e7b636f6e737420653d646f63756d656e742e637265617465456c656d656e742822696d6722293b652e7372633d5349474e41545552455f5356472e7472696d28292c652e7374796c652e637373546578743d2277696474683a343070783b7a2d696e6465783a35303b706f736974696f6e3a66697865643b626f74746f6d3a323070783b72696768743a323070783b222c626f64792e617070656e644368696c642865297d3b696628776562676c2973746172745f73686164657228667261675f7069656365292c726573697a6528292c706f696e7465722e73746172742e666f72456163682828653d3e7b646f63756d656e742e6164644576656e744c697374656e657228652c647261672e7374617274297d29292c706f696e7465722e656e642e666f72456163682828653d3e7b646f63756d656e742e6164644576656e744c697374656e657228652c647261672e73746f70297d29292c77696e646f772e6164644576656e744c697374656e65722822726573697a65222c726573697a65292c617070656e645369676e617475726528293b656c73657b636f6e737420653d646f63756d656e742e637265617465456c656d656e74282264697622293b652e7374796c652e637373546578743d22616c69676e2d6974656d733a63656e7465723b6261636b67726f756e643a233936393639363b636f6c6f723a236666663b646973706c61793a666c65783b666f6e742d66616d696c793a6d6f6e6f73706163653b666f6e742d73697a653a323070783b6865696768743a31303076683b6a7573746966792d636f6e74656e743a63656e7465723b6c6566743a303b706f736974696f6e3a66697865643b746f703a303b77696474683a31303076773b222c652e696e6e657248544d4c3d224e4f5420535550504f52544544222c646f63756d656e742e626f64792e617070656e642865297d5765206c6561766520747261636573206f66206f757220616374696f6e732c2074686f756768747320616e6420656d6f74696f6e732c206372656174696e672061206469676974616c207265666c656374696f6e206f66206f757220747275652073656c7665732e0aa2646970667358221220d97431e7b94cbb6233be768b1a35b53d9381c22d29035c67589677a3b2c5608064736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _royaltyPercentage (uint256): 0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.