ETH Price: $3,503.46 (-0.17%)
Gas: 2 Gwei

Contract

0xf7AEe95ca219D446EF35a28e6b2bae9c4E51fF07
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Bid196288262024-04-11 0:31:47101 days ago1712795507IN
0xf7AEe95c...c4E51fF07
0 ETH0.0004308611.98592034
Withdraw195632262024-04-01 20:01:59110 days ago1712001719IN
0xf7AEe95c...c4E51fF07
0 ETH0.0008898731.27298343
Buy Now195608792024-04-01 12:08:47110 days ago1711973327IN
0xf7AEe95c...c4E51fF07
1.5 ETH0.001228321.0828012
List For Sale To...195582032024-04-01 3:04:23111 days ago1711940663IN
0xf7AEe95c...c4E51fF07
0 ETH0.0017485218.91423223
Place Bid195144302024-03-25 22:24:35117 days ago1711405475IN
0xf7AEe95c...c4E51fF07
0.25 ETH0.0023670926.51045444
0x60806040195135952024-03-25 19:35:35117 days ago1711395335IN
 Create: Prodigy
0 ETH0.0921753629.4781282

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
196288262024-04-11 0:31:47101 days ago1712795507
0xf7AEe95c...c4E51fF07
0.25 ETH
195632262024-04-01 20:01:59110 days ago1712001719
0xf7AEe95c...c4E51fF07
1.5 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Prodigy

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2024-03-25
*/

//    _ \                   | _)               
//   |   |   __|  _ \    _` |  |   _` |  |   | 
//   ___/   |    (   |  (   |  |  (   |  |   | 
//  _|     _|   \___/  \__,_| _| \__, | \__, | 
//                               |___/   ____/ 
//
// SPDX-License-Identifier: MIT
// Copyright Han, 2023

pragma solidity ^0.8.25;

contract Prodigy {
    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 = (
        'Am I a criminal now?' '\n'
    );

    string public constant CORE = (
        '"use strict";const credits="wwwtyro sphere intersect, iq pyramid, bigwings normal";let s={signature:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjE2IiBoZWlnaHQ9IjIxNiIgdmlld0JveD0iMCAwIDIxNiAyMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0wIDBIMTZWMTZIMFYwWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTAgMjAwSDE2VjIxNkgwVjIwMFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMTYgMEgyMDBWMTZIMjE2VjBaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNOTYgOTZIMTIwVjEyMEg5NlY5NloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMTYgMjAwSDIwMFYyMTZIMjE2VjIwMFoiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0zMiAwSDE4NFYxNkgzMlYwWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTE4NCAyMDBIMzJWMjE2SDE4NFYyMDBaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjE2IDMyVjE4NEgyMDBWMzJIMjE2WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTE2IDE4NFYzMkgwVjE4NEgxNloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=",mouse_sensitivity:1,mouse_limit:.4,color_offset_frames:60,frame:0,res:[0,0],save_frames:0},h={newline:String.fromCharCode(10),parser:new URL(window.location)};const mobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);let w=window,d=document;d.body.style.touchAction="none",d.body.style.userSelect="none";let b=d.body,wrapper=d.createElement("div");wrapper.style.cssText="position: relative; margin: 0 auto",d.body.appendChild(wrapper);let c=d.createElement("canvas");c.style.display="block",wrapper.appendChild(c);const image=d.createElement("img");image.src=s.signature.trim(),image.style.cssText="width:40px;z-index:50;position:absolute;bottom:20px;right:20px;",wrapper.appendChild(image);const glOptions={powerPreference:"high-performance"};mobile&&delete glOptions.powerPreference,w.gl=c.getContext("webgl2",glOptions),h.uniform1i=(e,r)=>h.uniform(e,r,"uniform1i"),h.uniform=(e,r,t)=>{s.uniforms||={};(s.uniforms[e]||=(()=>{const i=gl.getUniformLocation(s.current_program,e),o=t||(Array.isArray(r)?"uniform2fv":"uniform1f");return{update:e=>gl[o](i,e)}})()).update(r)},h.resize=()=>{let e,r,t,i={x:h.ix.mouse.x/s.res[0],y:h.ix.mouse.y/s.res[1]};const o=h.parser.searchParams.get("res",r);o?(e=r=o,t=1):(e=w.innerWidth,r=w.innerHeight,s.aspect&&(e>r*s.aspect?e=r*s.aspect:r=e/s.aspect),t=w.devicePixelRatio),s.res[0]=c.width=e*t,s.res[1]=c.height=r*t,wrapper.style.width=c.style.width=e+"px",wrapper.style.height=c.style.height=r+"px",h.ix.set(c.width*i.x,c.height*i.y)},h.ix={start:{x:0,y:0},mouse:{x:0,y:0}},h.ix.set=(e,r)=>{h.ix.mouse={x:e,y:r}},h.ix.start=e=>{h.ix.start.x=e.clientX,h.ix.start.y=e.clientY,d.addEventListener("pointermove",h.ix.move)},h.clamp=(e,r,t)=>Math.max(r,Math.min(t,e)),h.ix.move=e=>{h.ix.mouse.x+=(e.clientX-h.ix.start.x)*window.devicePixelRatio*s.mouse_sensitivity,h.ix.mouse.y-=(e.clientY-h.ix.start.y)*window.devicePixelRatio*s.mouse_sensitivity,h.ix.start.x=e.clientX,h.ix.start.y=e.clientY,h.ix.mouse.x=h.clamp(h.ix.mouse.x,s.res[0]*s.mouse_limit,s.res[0]*(1-s.mouse_limit)),h.ix.mouse.y=h.clamp(h.ix.mouse.y,s.res[1]*s.mouse_limit,s.res[1]*(1-s.mouse_limit))},h.ix.stop=()=>{d.removeEventListener("pointermove",h.ix.move)},h.save={},h.save.toImage=()=>{const e=new Date;let r=String(e.getFullYear()).slice(2,4)+"-"+e.getMonth()+"-"+e.getDate()+" ("+s.frame+").png",t=document.createElement("a");t.setAttribute("download",r);let i=c.toDataURL("image/png").replace("data:image/png","data:application/octet-stream");t.setAttribute("href",i),t.click(),t.remove()},h.buildShader=(e,r)=>{let t=gl.createShader(e);return gl.shaderSource(t,r),gl.compileShader(t),t},h.initProgram=(e,r,t)=>{const i=gl.createProgram(),o=h.buildShader(gl.VERTEX_SHADER,r),s=h.buildShader(gl.FRAGMENT_SHADER,e);gl.attachShader(i,o),gl.attachShader(i,s),gl.linkProgram(i),gl.getShaderParameter(o,gl.COMPILE_STATUS)||console.error("V: "+gl.getShaderInfoLog(o)),gl.getShaderParameter(s,gl.COMPILE_STATUS)||console.error("F: "+gl.getShaderInfoLog(s)),gl.getProgramParameter(i,gl.LINK_STATUS)||console.error("P: "+gl.getProgramInfoLog(i));let a=gl.createBuffer(),n=gl.getAttribLocation(i,"p");return gl.bindBuffer(gl.ARRAY_BUFFER,a),gl.bufferData(gl.ARRAY_BUFFER,t,gl.STATIC_DRAW),gl.enableVertexAttribArray(n),gl.vertexAttribPointer(n,2,gl.FLOAT,!1,0,0),i},s.pixel=new Uint8Array(4),h.render=()=>{gl.viewport(0,0,c.width,c.height),gl.useProgram(s.program),s.current_program=s.program,s.frame<s.save_frames?h.uniform("u_time",.01667*s.frame):h.uniform("u_time",.001*performance.now()),h.uniform("u_resolution",s.res),h.uniform("u_mouse",[h.ix.mouse.x,h.ix.mouse.y]),gl.drawArrays(gl.TRIANGLE_STRIP,0,4),gl.readPixels(0,0,1,1,gl.RGBA,gl.UNSIGNED_BYTE,s.pixel),(h.save.queued||s.frame<s.save_frames&&s.frame>3)&&(h.save.queued=!1,h.save.toImage()),s.frame++,requestAnimationFrame(h.render)};const init=async()=>{if(gl){h.resize(),h.ix.set(c.width/2,c.height/2),d.addEventListener("pointerdown",h.ix.start),d.addEventListener("pointerup",h.ix.stop),w.addEventListener("resize",h.resize),s.save_frames=h.parser.searchParams.get("frames")||0,d.addEventListener("keyup",(e=>{if(!(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey))switch(e.key){case"f":const e=prompt("Frames to render",s.save_frames);h.parser.searchParams.set("frames",e),window.location=h.parser.href;break;case"r":const r=prompt("Canvas size in pixels (max 8192)",c.height);r>=8&&r<=8192&&(h.parser.searchParams.set("res",r),window.location=h.parser.href);break;case"s":h.save.queued=!0}}));let e=Float32Array.of(-1,1,-1,-1,1,1,1,-1);const r="#version 300 es"+h.newline+"precision highp float; in vec2 p; void main(){ gl_Position =vec4(p,1.0,1.0); }";let t="precision highp float;out vec4 fragColor;const int u_aa=2;uniform vec2 u_resolution;uniform float u_time;uniform vec2 u_mouse;const vec3 v=vec3(.941176470588235),f=vec3(.745098039215686);const vec3 d=vec3(0,0,-.5);const vec3 m=vec3(.980392156862745),x=vec3(.941176470588235);vec3 n(vec3 v,vec4 u){return v+2.*cross(u.xyz,cross(u.xyz,v)+v*u.w);}vec3 s(vec3 v,float u){return n(v,vec4(0,sin(u/2.),0,cos(u/2.)));}vec3 t(vec3 v,float u){return n(v,vec4(0,0,sin(u/2.),cos(u/2.)));}float n(vec3 v){if(v.y<=0.)return length(max(abs(v)-vec3(.5,0,.5),0.));float f,u;v.xz=abs(v.xz);v.xz=v.z>v.x?v.zx:v.xz;v.xz-=.5;vec3 d=vec3(v.z,v.y-.5*v.x,v.x+.5*v.y);f=max(-d.x,0.);u=clamp((d.y-.5*d.x)/1.5,0.,1.);return sqrt(((max(-d.y,d.x*1.25+d.y*.5)<0.?0.:min(1.25*(d.x+f)*(d.x+f)+d.y*d.y,1.25*(d.x+.5*u)*(d.x+.5*u)+(d.y-1.25*u)*(d.y-1.25*u)))+d.z*d.z)/1.25)*sign(max(d.z,-v.y));}vec2 u(vec3 v,float u){float f=1e2,d,x,y,z,r,c,m,i;v=t(v,u);d=.12;x=mix(0.,.2,.5+.5*sin(u*2.));x+=1.+d;vec3 a=v-vec3(0,-x-.15,0),g,e,k;a.x*=.675;a=s(a,-u*3.);y=n(a)-.15;f=min(f,y);g=-v-vec3(0,-x-.15,0);g.x*=.675;g=s(g,u*3.);z=n(g)-.15;f=min(f,z);e=v;e-=vec3(-x-.15,0,0);e.y*=.675;e=t(e,1.570795);e=s(e,u*3.);r=n(e)-.15;f=min(f,r);k=v;k-=vec3(x+.15,0,0);k.y*=.675;k=t(k,-1.570795);k=s(k,u*3.);c=n(k)-.15;f=min(f,c);m=length(v-vec3(0))-d;f=min(f,m);i=1.;if(f==m)i=2.;return vec2(f,i);}vec2 n(vec3 v,vec3 f,float d){float x=0.,r=-1.;for(int e=0;e<128;e++){vec3 m=v+x*f;vec2 n=u(m,d);float i=n.x;r=n.y;if(i<.001||x>1e2)break;x+=i;}return vec2(x,r);}vec3 e(vec3 v,float f){vec2 d=vec2(.001,0);vec3 m=u(v,f).x-vec3(u(v-d.xyy,f).x,u(v-d.yxy,f).x,u(v-d.yyx,f));return normalize(m);}vec3 e(){vec3 v=gl_FragCoord.xyy,f;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)));f=-1.+2.*fract(sin(v)*43758.5453123);return fract(555.*sin(777.*f))/256.;}vec3 e(vec3 v){v+=e();return v;}float s(vec3 v){v=fract(v*.3183099+.1);v*=17.;return fract(v.x*v.y*v.z*(v.x+v.y+v.z));}float t(vec3 v){vec3 f=floor(v),d=fract(v);d=d*d*(3.-2.*d);return mix(mix(mix(s(f+vec3(0)),s(f+vec3(1,0,0)),d.x),mix(s(f+vec3(0,1,0)),s(f+vec3(1,1,0)),d.x),d.y),mix(mix(s(f+vec3(0,0,1)),s(f+vec3(1,0,1)),d.x),mix(s(f+vec3(0,1,1)),s(f+vec3(1)),d.x),d.y),d.z);}vec3 e(inout vec3 u,inout vec3 y,float z,float s){vec2 i=n(u,y,s);vec3 r=vec3(0);if(i.x>=1e2){vec2 a=(gl_FragCoord.xy-.5*u_resolution.xy)*.0968287165617335/min(u_resolution.x,u_resolution.y);float c=t(vec3(a*0.,cos(s*0.)));c*=1.01;c=pow(c,1.33);vec3 k=mix(m,x,c);r=k;}else{vec3 a=u+i.x*y,c=e(u+i.x*y,s),k,g,o;float h=1.2*pow(1.-dot(c,-y),2.),w,C;h=max(0.,h);vec2 l=vec2(u_mouse/u_resolution);k=vec3(60.*(l.x-.5),-60.*(l.y-.5),0);w=4.*(s-2.*acos(-1.)*z);g=k+vec3(cos(w),sin(w),d.z)*10.;o=normalize(g-a);C=max(0.,dot(c,o));r.x=mix(f,v,C+h).x;w=4.*s;g=k+vec3(cos(w),sin(w),d.z)*10.;o=normalize(g-a);C=max(0.,dot(c,o));r.y=mix(f,v,C+h).y;w=4.*(s+2.*acos(-1.)*z);g=k+vec3(cos(w),sin(w),d.z)*10.;o=normalize(g-a);C=max(0.,dot(c,o));r.z=mix(f,v,C+h).z;}return r;}vec3 r(float v,float f){float u=sin(f);return vec3(12.*u*cos(v),12.*cos(f),12.*u*sin(v));}vec3 r(vec2 v){return r(-2.*acos(-1.)*v.y-1.570795,v.x*3.14159);}mat3 h(vec3 v,vec2 d){vec3 f=normalize(vec3(0)-v),u=normalize(cross(vec3(0,floor(mod(d.y,2.))==0.?-1.:1.,0),f));return mat3(u,normalize(cross(f,u)),f);}void main(){float v=u_time,f,d;vec2 u=vec2(.5),c;vec3 m=r(u),x;mat3 a=h(m,u);c=gl_FragCoord.xy;f=.5+.5*sin(c.x*147.)*sin(c.y*131.);d=.4*smoothstep(0.,1.,2.*sin(2.*acos(-1.)*v/(20./3.)));v+=0.;int y=int(u_aa);x=vec3(0);for(int g=0;g<y;g++)for(int i=0;i<y;i++){vec2 k=vec2(g,i)/float(u_aa)-.5,z=(gl_FragCoord.xy+k-.5*u_resolution.xy)*.0968287165617335/min(u_resolution.x,u_resolution.y);vec3 s=normalize(a*vec3(z,1));float o=v-.125*(float(i*y+g)+f)/float(y*y),w;o/=20.;w=2.*acos(-1.)*o;x+=e(m,s,d/20.,w);}x/=float(u_aa*u_aa);x=e(x);fragColor=vec4(x,1);}";if(t="#version 300 es"+h.newline+t,mobile){const e="const int u_aa=2";t=t.replace(e,"const int u_aa=1")}window.program=s.program=h.initProgram(t,r,e),h.render()}else{const e=d.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="Your browser does not support WebGL.",b.append(e)}};init();'
    );

    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 'Prodigy';
    }

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

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

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

                    '<style>html,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"}]

6080604052348015600e575f80fd5b5060405161375a38038061375a833981016040819052602b91609d565b60648110604b5760405163c2b03beb60e01b815260040160405180910390fd5b5f8054336001600160a01b031991821681178355600780549092168117909155600883905560405190917fcaea53471edbf6ace3d253c1bdecf4553374dd40c18148776b57bf5af0f7f02f91a25060b3565b5f6020828403121560ac575f80fd5b5051919050565b61369a806100c05f395ff3fe608060405260043610610126575f3560e01c80638a71bb2d116100a8578063def181011161006d578063def1810114610317578063e52a787414610367578063ecfc7ecc1461037b578063f2fde38b14610383578063f3f43703146103a2578063fa4e28f6146103cd575f80fd5b80638a71bb2d146102865780638da5cb5b146102a957806395d89b41146102c75780639c3962f0146102f0578063c7857fb5146102f8575f80fd5b80633ccfd60b116100ee5780633ccfd60b146101f457806341e42f301461020857806342c47217146102275780634c00de821461023b5780636b6c077414610272575f80fd5b806306fdde031461012a5780630dca550e1461016b57806337271cc71461018c57806337a908fc146101a057806338739dad146101b4575b5f80fd5b348015610135575f80fd5b5060408051808201909152600781526650726f6469677960c81b60208201525b6040516101629190610d86565b60405180910390f35b348015610176575f80fd5b5061018a610185366004610dd6565b6103f7565b005b348015610197575f80fd5b5061018a6104a7565b3480156101ab575f80fd5b5061015561054e565b3480156101bf575f80fd5b506101556040518060400160405280601581526020017420b6902490309031b934b6b4b730b6103737bb9f8560591b81525081565b3480156101ff575f80fd5b5061018a610590565b348015610213575f80fd5b5061018a610222366004610e00565b6105af565b348015610232575f80fd5b5061018a610623565b348015610246575f80fd5b5060075461025a906001600160a01b031681565b6040516001600160a01b039091168152602001610162565b34801561027d575f80fd5b506101556106fb565b348015610291575f80fd5b5061029b60085481565b604051908152602001610162565b3480156102b4575f80fd5b505f5461025a906001600160a01b031681565b3480156102d2575f80fd5b506040805180820190915260018152600560fc1b6020820152610155565b61018a61071a565b348015610303575f80fd5b5061018a610312366004610e20565b610894565b348015610322575f80fd5b506004546005546006546103419260ff1691906001600160a01b031683565b60408051931515845260208401929092526001600160a01b031690820152606001610162565b348015610372575f80fd5b5061018a61092d565b61018a610abc565b34801561038e575f80fd5b5061018a61039d366004610e00565b610b90565b3480156103ad575f80fd5b5061029b6103bc366004610e00565b60096020525f908152604090205481565b3480156103d8575f80fd5b506001546002546003546103419260ff1691906001600160a01b031683565b5f546001600160a01b03163314610421576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018590526001600160a01b038416918301829052805460ff1916811790556002849055600380546001600160a01b03191682179055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a09061049b9086815260200190565b60405180910390a35050565b6006546001600160a01b031633146104d25760405163173f0e6f60e21b815260040160405180910390fd5b60058054604080516060810182525f8082526020820181905291018190526004805460ff19169055909155600680546001600160a01b031916905561051681610cac565b60405181815233907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a9060200160405180910390a250565b6060604051806126800160405280612646815260200161101f612646913960405160200161057c9190610e37565b604051602081830303815290604052905090565b335f90815260096020526040812080549190556105ac81610cac565b50565b6007546001600160a01b031633146105da57604051631229bf3760e11b815260040160405180910390fd5b6001600160a01b0381166106015760405163e99d5ac560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461064d576040516330cd747160e01b815260040160405180910390fd5b60408051606080820183526001805460ff811615158452600280546020808701918252600380546001600160a01b038082168a8c019081528b51998a018c525f808b52948a01859052988b0184905260ff1990961690965592556001600160a01b03199093169055915190519351929391169133917ff1f48fe426adbd884772d4c165015a460df54458ff7e238dff36fe3c5d341ccf916106f091815260200190565b60405180910390a350565b604051806126800160405280612646815260200161101f612646913981565b60015460ff1661073d57604051631d99ddbf60e01b815260040160405180910390fd5b6003546001600160a01b03161580159061076257506003546001600160a01b03163314155b156107805760405163d6da33db60e01b815260040160405180910390fd5b60025434146107a25760405163356680b760e01b815260040160405180910390fd5b604080516060810182525f8082526020820181905291018190526001805460ff191690556002819055600380546001600160a01b03191690556107e434610d16565b90506107f08134610fc2565b5f80546001600160a01b031681526009602052604081208054909190610817908490610fd5565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610845908490610fd5565b90915550505f5460405134815233916001600160a01b0316907fdb87be53c711a1eb193f5fffddcfd85425990853a8423fa2bfd4a8620c218ed49060200160405180910390a36105ac33610d37565b5f546001600160a01b031633146108be576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018490525f918301829052805460ff1916811790556002839055600380546001600160a01b0319169055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906106f09085815260200190565b5f546001600160a01b03163314610957576040516330cd747160e01b815260040160405180910390fd5b60045460ff1661097a576040516313650ef160e11b815260040160405180910390fd5b600580546006805460408051606080820183525f80835260208084018290529284018190526001805460ff199081169091556002829055600380546001600160a01b031990811690915585519384018652828452938301829052919093018390526004805490911690559481905593811690915590916001600160a01b0390911690610a0583610d16565b9050610a118184610fc2565b5f80546001600160a01b031681526009602052604081208054909190610a38908490610fd5565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610a66908490610fd5565b90915550505f546040518481526001600160a01b038481169216907fd32f7ef8c20232133e4dbd098b49d6b86ab580eee8a90a815925e900584749639060200160405180910390a3610ab782610d37565b505050565b6005543411610ade5760405163356680b760e01b815260040160405180910390fd5b60055415610b18576005546006546001600160a01b03165f9081526009602052604081208054909190610b12908490610fd5565b90915550505b604080516060810182526001808252346020808401829052339385018490526004805460ff19169093179092556005819055600680546001600160a01b03191684179055925192835290917f5445de3f4fe13efb115ec05c57e09cc0e277801d0cd2ae780457ebcd8688c391910160405180910390a2565b5f546001600160a01b03163314610bba576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610be15760405163e99d5ac560e01b815260040160405180910390fd5b610bea81610d37565b6006546001600160a01b03808316911603610c675760058054604080516060810182525f80825260208083018290529183018190526004805460ff1916905593849055600680546001600160a01b03191690556001600160a01b0385168452600990528220805491928392610c60908490610fd5565b9091555050505b60015460ff16156105ac57604080516060810182525f8082526020820181905291018190526001805460ff19169055600255600380546001600160a01b031916905550565b6040515f90339083908381818185875af1925050503d805f8114610ceb576040519150601f19603f3d011682016040523d82523d5f602084013e610cf0565b606091505b5050905080610d12576040516342bb570960e01b815260040160405180910390fd5b5050565b5f606460085483610d279190610fe8565b610d319190610fff565b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb0594827696749bdc48b310d4a5cfee5e9a89491f1c6bea2b928c2c33db414de9190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610dd1575f80fd5b919050565b5f8060408385031215610de7575f80fd5b82359150610df760208401610dbb565b90509250929050565b5f60208284031215610e10575f80fd5b610e1982610dbb565b9392505050565b5f60208284031215610e30575f80fd5b5035919050565b7f3c21444f43545950452068746d6c3e3c68746d6c3e3c686561643e3c7469746c815261329f60f11b60208201526650726f6469677960c81b60228201527f3c2f7469746c653e3c6d657461206e616d653d2276696577706f72742220636f60298201527f6e74656e743d2277696474683d6465766963652d77696474682c20696e69746960498201527f616c2d7363616c653d3122202f3e3c7374796c653e68746d6c2c626f64797b6260698201527f61636b67726f756e643a233936393639363b6d617267696e3a303b706164646960898201527f6e673a303b6f766572666c6f773a68696464656e3b7d3c2f7374796c653e3c2f60a98201527f686561643e3c626f64793e3c73637269707420747970653d22746578742f6a6160c9820152693b30b9b1b934b83a111f60b11b60e98201525f8251806020850160f385015e7f3c2f7363726970743e3c2f626f64793e3c2f68746d6c3e000000000000000000920160f38101929092525061010a01919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d3157610d31610fae565b80820180821115610d3157610d31610fae565b8082028115828204841417610d3157610d31610fae565b5f8261101957634e487b7160e01b5f52601260045260245ffd5b50049056fe2275736520737472696374223b636f6e737420637265646974733d227777777479726f2073706865726520696e746572736563742c20697120707972616d69642c2062696777696e6773206e6f726d616c223b6c657420733d7b7369676e61747572653a22646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d6a45324969426f5a576c6e61485139496a49784e694967646d6c6c64304a76654430694d434177494449784e6941794d54596949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b436a78775958526f49475139496b3077494442494d545a574d545a494d465977576949675a6d6c736244306964326870644755694c7a344b50484268644767675a443069545441674d6a417753444532566a49784e6b6777566a49774d466f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475139496b30794d5459674d4567794d4442574d545a494d6a4532566a42614969426d6157787350534a3361476c305a53497650676f38634746306143426b50534a4e4f5459674f545a494d544977566a45794d4567354e6c59354e6c6f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475139496b30794d5459674d6a4177534449774d4659794d545a494d6a4532566a49774d466f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475139496b307a4d694177534445344e4659784e6b677a4d6c5977576949675a6d6c736244306964326870644755694c7a344b50484268644767675a443069545445344e4341794d4442494d7a4a574d6a4532534445344e4659794d4442614969426d6157787350534a3361476c305a53497650676f38634746306143426b50534a4e4d6a453249444d79566a45344e4567794d4442574d7a4a494d6a4532576949675a6d6c736244306964326870644755694c7a344b50484268644767675a44306954544532494445344e46597a4d6b6777566a45344e4567784e6c6f6949475a7062477739496e646f6158526c4969382b436a777663335a6e50676f3d222c6d6f7573655f73656e73697469766974793a312c6d6f7573655f6c696d69743a2e342c636f6c6f725f6f66667365745f6672616d65733a36302c6672616d653a302c7265733a5b302c305d2c736176655f6672616d65733a307d2c683d7b6e65776c696e653a537472696e672e66726f6d43686172436f6465283130292c7061727365723a6e65772055524c2877696e646f772e6c6f636174696f6e297d3b636f6e7374206d6f62696c653d2f416e64726f69647c7765624f537c6950686f6e657c695061647c69506f647c426c61636b42657272797c49454d6f62696c657c4f70657261204d696e692f692e74657374286e6176696761746f722e757365724167656e74293b6c657420773d77696e646f772c643d646f63756d656e743b642e626f64792e7374796c652e746f756368416374696f6e3d226e6f6e65222c642e626f64792e7374796c652e7573657253656c6563743d226e6f6e65223b6c657420623d642e626f64792c777261707065723d642e637265617465456c656d656e74282264697622293b777261707065722e7374796c652e637373546578743d22706f736974696f6e3a2072656c61746976653b206d617267696e3a2030206175746f222c642e626f64792e617070656e644368696c642877726170706572293b6c657420633d642e637265617465456c656d656e74282263616e76617322293b632e7374796c652e646973706c61793d22626c6f636b222c777261707065722e617070656e644368696c642863293b636f6e737420696d6167653d642e637265617465456c656d656e742822696d6722293b696d6167652e7372633d732e7369676e61747572652e7472696d28292c696d6167652e7374796c652e637373546578743d2277696474683a343070783b7a2d696e6465783a35303b706f736974696f6e3a6162736f6c7574653b626f74746f6d3a323070783b72696768743a323070783b222c777261707065722e617070656e644368696c6428696d616765293b636f6e737420676c4f7074696f6e733d7b706f776572507265666572656e63653a22686967682d706572666f726d616e6365227d3b6d6f62696c65262664656c65746520676c4f7074696f6e732e706f776572507265666572656e63652c772e676c3d632e676574436f6e746578742822776562676c32222c676c4f7074696f6e73292c682e756e69666f726d31693d28652c72293d3e682e756e69666f726d28652c722c22756e69666f726d316922292c682e756e69666f726d3d28652c722c74293d3e7b732e756e69666f726d737c7c3d7b7d3b28732e756e69666f726d735b655d7c7c3d2828293d3e7b636f6e737420693d676c2e676574556e69666f726d4c6f636174696f6e28732e63757272656e745f70726f6772616d2c65292c6f3d747c7c2841727261792e697341727261792872293f22756e69666f726d326676223a22756e69666f726d316622293b72657475726e7b7570646174653a653d3e676c5b6f5d28692c65297d7d292829292e7570646174652872297d2c682e726573697a653d28293d3e7b6c657420652c722c742c693d7b783a682e69782e6d6f7573652e782f732e7265735b305d2c793a682e69782e6d6f7573652e792f732e7265735b315d7d3b636f6e7374206f3d682e7061727365722e736561726368506172616d732e6765742822726573222c72293b6f3f28653d723d6f2c743d31293a28653d772e696e6e657257696474682c723d772e696e6e65724865696768742c732e617370656374262628653e722a732e6173706563743f653d722a732e6173706563743a723d652f732e617370656374292c743d772e646576696365506978656c526174696f292c732e7265735b305d3d632e77696474683d652a742c732e7265735b315d3d632e6865696768743d722a742c777261707065722e7374796c652e77696474683d632e7374796c652e77696474683d652b227078222c777261707065722e7374796c652e6865696768743d632e7374796c652e6865696768743d722b227078222c682e69782e73657428632e77696474682a692e782c632e6865696768742a692e79297d2c682e69783d7b73746172743a7b783a302c793a307d2c6d6f7573653a7b783a302c793a307d7d2c682e69782e7365743d28652c72293d3e7b682e69782e6d6f7573653d7b783a652c793a727d7d2c682e69782e73746172743d653d3e7b682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c642e6164644576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e636c616d703d28652c722c74293d3e4d6174682e6d617828722c4d6174682e6d696e28742c6529292c682e69782e6d6f76653d653d3e7b682e69782e6d6f7573652e782b3d28652e636c69656e74582d682e69782e73746172742e78292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e6d6f7573652e792d3d28652e636c69656e74592d682e69782e73746172742e79292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c682e69782e6d6f7573652e783d682e636c616d7028682e69782e6d6f7573652e782c732e7265735b305d2a732e6d6f7573655f6c696d69742c732e7265735b305d2a28312d732e6d6f7573655f6c696d697429292c682e69782e6d6f7573652e793d682e636c616d7028682e69782e6d6f7573652e792c732e7265735b315d2a732e6d6f7573655f6c696d69742c732e7265735b315d2a28312d732e6d6f7573655f6c696d697429297d2c682e69782e73746f703d28293d3e7b642e72656d6f76654576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e736176653d7b7d2c682e736176652e746f496d6167653d28293d3e7b636f6e737420653d6e657720446174653b6c657420723d537472696e6728652e67657446756c6c596561722829292e736c69636528322c34292b222d222b652e6765744d6f6e746828292b222d222b652e6765744461746528292b222028222b732e6672616d652b22292e706e67222c743d646f63756d656e742e637265617465456c656d656e7428226122293b742e7365744174747269627574652822646f776e6c6f6164222c72293b6c657420693d632e746f4461746155524c2822696d6167652f706e6722292e7265706c6163652822646174613a696d6167652f706e67222c22646174613a6170706c69636174696f6e2f6f637465742d73747265616d22293b742e736574417474726962757465282268726566222c69292c742e636c69636b28292c742e72656d6f766528297d2c682e6275696c645368616465723d28652c72293d3e7b6c657420743d676c2e6372656174655368616465722865293b72657475726e20676c2e736861646572536f7572636528742c72292c676c2e636f6d70696c655368616465722874292c747d2c682e696e697450726f6772616d3d28652c722c74293d3e7b636f6e737420693d676c2e63726561746550726f6772616d28292c6f3d682e6275696c6453686164657228676c2e5645525445585f5348414445522c72292c733d682e6275696c6453686164657228676c2e465241474d454e545f5348414445522c65293b676c2e61747461636853686164657228692c6f292c676c2e61747461636853686164657228692c73292c676c2e6c696e6b50726f6772616d2869292c676c2e676574536861646572506172616d65746572286f2c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822563a20222b676c2e676574536861646572496e666f4c6f67286f29292c676c2e676574536861646572506172616d6574657228732c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822463a20222b676c2e676574536861646572496e666f4c6f67287329292c676c2e67657450726f6772616d506172616d6574657228692c676c2e4c494e4b5f535441545553297c7c636f6e736f6c652e6572726f722822503a20222b676c2e67657450726f6772616d496e666f4c6f67286929293b6c657420613d676c2e63726561746542756666657228292c6e3d676c2e6765744174747269624c6f636174696f6e28692c227022293b72657475726e20676c2e62696e6442756666657228676c2e41525241595f4255464645522c61292c676c2e6275666665724461746128676c2e41525241595f4255464645522c742c676c2e5354415449435f44524157292c676c2e656e61626c655665727465784174747269624172726179286e292c676c2e766572746578417474726962506f696e746572286e2c322c676c2e464c4f41542c21312c302c30292c697d2c732e706978656c3d6e65772055696e743841727261792834292c682e72656e6465723d28293d3e7b676c2e76696577706f727428302c302c632e77696474682c632e686569676874292c676c2e75736550726f6772616d28732e70726f6772616d292c732e63757272656e745f70726f6772616d3d732e70726f6772616d2c732e6672616d653c732e736176655f6672616d65733f682e756e69666f726d2822755f74696d65222c2e30313636372a732e6672616d65293a682e756e69666f726d2822755f74696d65222c2e3030312a706572666f726d616e63652e6e6f772829292c682e756e69666f726d2822755f7265736f6c7574696f6e222c732e726573292c682e756e69666f726d2822755f6d6f757365222c5b682e69782e6d6f7573652e782c682e69782e6d6f7573652e795d292c676c2e6472617741727261797328676c2e545249414e474c455f53545249502c302c34292c676c2e72656164506978656c7328302c302c312c312c676c2e524742412c676c2e554e5349474e45445f425954452c732e706978656c292c28682e736176652e7175657565647c7c732e6672616d653c732e736176655f6672616d65732626732e6672616d653e3329262628682e736176652e7175657565643d21312c682e736176652e746f496d6167652829292c732e6672616d652b2b2c72657175657374416e696d6174696f6e4672616d6528682e72656e646572297d3b636f6e737420696e69743d6173796e6328293d3e7b696628676c297b682e726573697a6528292c682e69782e73657428632e77696474682f322c632e6865696768742f32292c642e6164644576656e744c697374656e65722822706f696e746572646f776e222c682e69782e7374617274292c642e6164644576656e744c697374656e65722822706f696e7465727570222c682e69782e73746f70292c772e6164644576656e744c697374656e65722822726573697a65222c682e726573697a65292c732e736176655f6672616d65733d682e7061727365722e736561726368506172616d732e67657428226672616d657322297c7c302c642e6164644576656e744c697374656e657228226b65797570222c28653d3e7b6966282128652e6374726c4b65797c7c652e616c744b65797c7c652e73686966744b65797c7c652e6d6574614b6579292973776974636828652e6b6579297b636173652266223a636f6e737420653d70726f6d707428224672616d657320746f2072656e646572222c732e736176655f6672616d6573293b682e7061727365722e736561726368506172616d732e73657428226672616d6573222c65292c77696e646f772e6c6f636174696f6e3d682e7061727365722e687265663b627265616b3b636173652272223a636f6e737420723d70726f6d7074282243616e7661732073697a6520696e20706978656c7320286d6178203831393229222c632e686569676874293b723e3d382626723c3d38313932262628682e7061727365722e736561726368506172616d732e7365742822726573222c72292c77696e646f772e6c6f636174696f6e3d682e7061727365722e68726566293b627265616b3b636173652273223a682e736176652e7175657565643d21307d7d29293b6c657420653d466c6f6174333241727261792e6f66282d312c312c2d312c2d312c312c312c312c2d31293b636f6e737420723d222376657273696f6e20333030206573222b682e6e65776c696e652b22707265636973696f6e20686967687020666c6f61743b20696e207665633220703b20766f6964206d61696e28297b20676c5f506f736974696f6e203d7665633428702c312e302c312e30293b207d223b6c657420743d22707265636973696f6e20686967687020666c6f61743b6f757420766563342066726167436f6c6f723b636f6e737420696e7420755f61613d323b756e69666f726d207665633220755f7265736f6c7574696f6e3b756e69666f726d20666c6f617420755f74696d653b756e69666f726d207665633220755f6d6f7573653b636f6e7374207665633320763d76656333282e393431313736343730353838323335292c663d76656333282e373435303938303339323135363836293b636f6e7374207665633320643d7665633328302c302c2d2e35293b636f6e73742076656333206d3d76656333282e393830333932313536383632373435292c783d76656333282e393431313736343730353838323335293b76656333206e287665633320762c766563342075297b72657475726e20762b322e2a63726f737328752e78797a2c63726f737328752e78797a2c76292b762a752e77293b7d766563332073287665633320762c666c6f61742075297b72657475726e206e28762c7665633428302c73696e28752f322e292c302c636f7328752f322e2929293b7d766563332074287665633320762c666c6f61742075297b72657475726e206e28762c7665633428302c302c73696e28752f322e292c636f7328752f322e2929293b7d666c6f6174206e28766563332076297b696628762e793c3d302e2972657475726e206c656e677468286d6178286162732876292d76656333282e352c302c2e35292c302e29293b666c6f617420662c753b762e787a3d61627328762e787a293b762e787a3d762e7a3e762e783f762e7a783a762e787a3b762e787a2d3d2e353b7665633320643d7665633328762e7a2c762e792d2e352a762e782c762e782b2e352a762e79293b663d6d6178282d642e782c302e293b753d636c616d702828642e792d2e352a642e78292f312e352c302e2c312e293b72657475726e20737172742828286d6178282d642e792c642e782a312e32352b642e792a2e35293c302e3f302e3a6d696e28312e32352a28642e782b66292a28642e782b66292b642e792a642e792c312e32352a28642e782b2e352a75292a28642e782b2e352a75292b28642e792d312e32352a75292a28642e792d312e32352a752929292b642e7a2a642e7a292f312e3235292a7369676e286d617828642e7a2c2d762e7929293b7d766563322075287665633320762c666c6f61742075297b666c6f617420663d3165322c642c782c792c7a2c722c632c6d2c693b763d7428762c75293b643d2e31323b783d6d697828302e2c2e322c2e352b2e352a73696e28752a322e29293b782b3d312e2b643b7665633320613d762d7665633328302c2d782d2e31352c30292c672c652c6b3b612e782a3d2e3637353b613d7328612c2d752a332e293b793d6e2861292d2e31353b663d6d696e28662c79293b673d2d762d7665633328302c2d782d2e31352c30293b672e782a3d2e3637353b673d7328672c752a332e293b7a3d6e2867292d2e31353b663d6d696e28662c7a293b653d763b652d3d76656333282d782d2e31352c302c30293b652e792a3d2e3637353b653d7428652c312e353730373935293b653d7328652c752a332e293b723d6e2865292d2e31353b663d6d696e28662c72293b6b3d763b6b2d3d7665633328782b2e31352c302c30293b6b2e792a3d2e3637353b6b3d74286b2c2d312e353730373935293b6b3d73286b2c752a332e293b633d6e286b292d2e31353b663d6d696e28662c63293b6d3d6c656e67746828762d76656333283029292d643b663d6d696e28662c6d293b693d312e3b696628663d3d6d29693d322e3b72657475726e207665633228662c69293b7d76656332206e287665633320762c7665633320662c666c6f61742064297b666c6f617420783d302e2c723d2d312e3b666f7228696e7420653d303b653c3132383b652b2b297b76656333206d3d762b782a663b76656332206e3d75286d2c64293b666c6f617420693d6e2e783b723d6e2e793b696628693c2e3030317c7c783e31653229627265616b3b782b3d693b7d72657475726e207665633228782c72293b7d766563332065287665633320762c666c6f61742066297b7665633220643d76656332282e3030312c30293b76656333206d3d7528762c66292e782d76656333287528762d642e7879792c66292e782c7528762d642e7978792c66292e782c7528762d642e7979782c6629293b72657475726e206e6f726d616c697a65286d293b7d76656333206528297b7665633320763d676c5f46726167436f6f72642e7879792c663b763d7665633328646f7428762c76656333283132372e312c3331312e372c37342e3729292c646f7428762c76656333283236392e352c3138332e332c3234362e3129292c646f7428762c76656333283131332e352c3237312e392c3132342e362929293b663d2d312e2b322e2a66726163742873696e2876292a34333735382e35343533313233293b72657475726e206672616374283535352e2a73696e283737372e2a6629292f3235362e3b7d76656333206528766563332076297b762b3d6528293b72657475726e20763b7d666c6f6174207328766563332076297b763d667261637428762a2e333138333039392b2e31293b762a3d31372e3b72657475726e20667261637428762e782a762e792a762e7a2a28762e782b762e792b762e7a29293b7d666c6f6174207428766563332076297b7665633320663d666c6f6f722876292c643d66726163742876293b643d642a642a28332e2d322e2a64293b72657475726e206d6978286d6978286d6978287328662b76656333283029292c7328662b7665633328312c302c3029292c642e78292c6d6978287328662b7665633328302c312c3029292c7328662b7665633328312c312c3029292c642e78292c642e79292c6d6978286d6978287328662b7665633328302c302c3129292c7328662b7665633328312c302c3129292c642e78292c6d6978287328662b7665633328302c312c3129292c7328662b76656333283129292c642e78292c642e79292c642e7a293b7d76656333206528696e6f7574207665633320752c696e6f7574207665633320792c666c6f6174207a2c666c6f61742073297b7665633220693d6e28752c792c73293b7665633320723d766563332830293b696628692e783e3d316532297b7665633220613d28676c5f46726167436f6f72642e78792d2e352a755f7265736f6c7574696f6e2e7879292a2e303936383238373136353631373333352f6d696e28755f7265736f6c7574696f6e2e782c755f7265736f6c7574696f6e2e79293b666c6f617420633d74287665633328612a302e2c636f7328732a302e2929293b632a3d312e30313b633d706f7728632c312e3333293b76656333206b3d6d6978286d2c782c63293b723d6b3b7d656c73657b7665633320613d752b692e782a792c633d6528752b692e782a792c73292c6b2c672c6f3b666c6f617420683d312e322a706f7728312e2d646f7428632c2d79292c322e292c772c433b683d6d617828302e2c68293b76656332206c3d7665633228755f6d6f7573652f755f7265736f6c7574696f6e293b6b3d766563332836302e2a286c2e782d2e35292c2d36302e2a286c2e792d2e35292c30293b773d342e2a28732d322e2a61636f73282d312e292a7a293b673d6b2b7665633328636f732877292c73696e2877292c642e7a292a31302e3b6f3d6e6f726d616c697a6528672d61293b433d6d617828302e2c646f7428632c6f29293b722e783d6d697828662c762c432b68292e783b773d342e2a733b673d6b2b7665633328636f732877292c73696e2877292c642e7a292a31302e3b6f3d6e6f726d616c697a6528672d61293b433d6d617828302e2c646f7428632c6f29293b722e793d6d697828662c762c432b68292e793b773d342e2a28732b322e2a61636f73282d312e292a7a293b673d6b2b7665633328636f732877292c73696e2877292c642e7a292a31302e3b6f3d6e6f726d616c697a6528672d61293b433d6d617828302e2c646f7428632c6f29293b722e7a3d6d697828662c762c432b68292e7a3b7d72657475726e20723b7d76656333207228666c6f617420762c666c6f61742066297b666c6f617420753d73696e2866293b72657475726e20766563332831322e2a752a636f732876292c31322e2a636f732866292c31322e2a752a73696e287629293b7d76656333207228766563322076297b72657475726e2072282d322e2a61636f73282d312e292a762e792d312e3537303739352c762e782a332e3134313539293b7d6d6174332068287665633320762c766563322064297b7665633320663d6e6f726d616c697a6528766563332830292d76292c753d6e6f726d616c697a652863726f7373287665633328302c666c6f6f72286d6f6428642e792c322e29293d3d302e3f2d312e3a312e2c30292c6629293b72657475726e206d61743328752c6e6f726d616c697a652863726f737328662c7529292c66293b7d766f6964206d61696e28297b666c6f617420763d755f74696d652c662c643b7665633220753d76656332282e35292c633b76656333206d3d722875292c783b6d61743320613d68286d2c75293b633d676c5f46726167436f6f72642e78793b663d2e352b2e352a73696e28632e782a3134372e292a73696e28632e792a3133312e293b643d2e342a736d6f6f74687374657028302e2c312e2c322e2a73696e28322e2a61636f73282d312e292a762f2832302e2f332e2929293b762b3d302e3b696e7420793d696e7428755f6161293b783d766563332830293b666f7228696e7420673d303b673c793b672b2b29666f7228696e7420693d303b693c793b692b2b297b76656332206b3d7665633228672c69292f666c6f617428755f6161292d2e352c7a3d28676c5f46726167436f6f72642e78792b6b2d2e352a755f7265736f6c7574696f6e2e7879292a2e303936383238373136353631373333352f6d696e28755f7265736f6c7574696f6e2e782c755f7265736f6c7574696f6e2e79293b7665633320733d6e6f726d616c697a6528612a76656333287a2c3129293b666c6f6174206f3d762d2e3132352a28666c6f617428692a792b67292b66292f666c6f617428792a79292c773b6f2f3d32302e3b773d322e2a61636f73282d312e292a6f3b782b3d65286d2c732c642f32302e2c77293b7d782f3d666c6f617428755f61612a755f6161293b783d652878293b66726167436f6c6f723d7665633428782c31293b7d223b696628743d222376657273696f6e20333030206573222b682e6e65776c696e652b742c6d6f62696c65297b636f6e737420653d22636f6e737420696e7420755f61613d32223b743d742e7265706c61636528652c22636f6e737420696e7420755f61613d3122297d77696e646f772e70726f6772616d3d732e70726f6772616d3d682e696e697450726f6772616d28742c722c65292c682e72656e64657228297d656c73657b636f6e737420653d642e637265617465456c656d656e74282264697622293b652e7374796c652e637373546578743d22616c69676e2d6974656d733a63656e7465723b6261636b67726f756e643a233936393639363b636f6c6f723a236666663b646973706c61793a666c65783b666f6e742d66616d696c793a6d6f6e6f73706163653b666f6e742d73697a653a323070783b6865696768743a31303076683b6a7573746966792d636f6e74656e743a63656e7465723b6c6566743a303b706f736974696f6e3a66697865643b746f703a303b77696474683a31303076773b222c652e696e6e657248544d4c3d22596f75722062726f7773657220646f6573206e6f7420737570706f727420576562474c2e222c622e617070656e642865297d7d3b696e697428293ba2646970667358221220d3f6e2ea1032541442a54e3bb7e93782ae12ab31a75fe1c97dd764908377e4e364736f6c634300081900330000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610126575f3560e01c80638a71bb2d116100a8578063def181011161006d578063def1810114610317578063e52a787414610367578063ecfc7ecc1461037b578063f2fde38b14610383578063f3f43703146103a2578063fa4e28f6146103cd575f80fd5b80638a71bb2d146102865780638da5cb5b146102a957806395d89b41146102c75780639c3962f0146102f0578063c7857fb5146102f8575f80fd5b80633ccfd60b116100ee5780633ccfd60b146101f457806341e42f301461020857806342c47217146102275780634c00de821461023b5780636b6c077414610272575f80fd5b806306fdde031461012a5780630dca550e1461016b57806337271cc71461018c57806337a908fc146101a057806338739dad146101b4575b5f80fd5b348015610135575f80fd5b5060408051808201909152600781526650726f6469677960c81b60208201525b6040516101629190610d86565b60405180910390f35b348015610176575f80fd5b5061018a610185366004610dd6565b6103f7565b005b348015610197575f80fd5b5061018a6104a7565b3480156101ab575f80fd5b5061015561054e565b3480156101bf575f80fd5b506101556040518060400160405280601581526020017420b6902490309031b934b6b4b730b6103737bb9f8560591b81525081565b3480156101ff575f80fd5b5061018a610590565b348015610213575f80fd5b5061018a610222366004610e00565b6105af565b348015610232575f80fd5b5061018a610623565b348015610246575f80fd5b5060075461025a906001600160a01b031681565b6040516001600160a01b039091168152602001610162565b34801561027d575f80fd5b506101556106fb565b348015610291575f80fd5b5061029b60085481565b604051908152602001610162565b3480156102b4575f80fd5b505f5461025a906001600160a01b031681565b3480156102d2575f80fd5b506040805180820190915260018152600560fc1b6020820152610155565b61018a61071a565b348015610303575f80fd5b5061018a610312366004610e20565b610894565b348015610322575f80fd5b506004546005546006546103419260ff1691906001600160a01b031683565b60408051931515845260208401929092526001600160a01b031690820152606001610162565b348015610372575f80fd5b5061018a61092d565b61018a610abc565b34801561038e575f80fd5b5061018a61039d366004610e00565b610b90565b3480156103ad575f80fd5b5061029b6103bc366004610e00565b60096020525f908152604090205481565b3480156103d8575f80fd5b506001546002546003546103419260ff1691906001600160a01b031683565b5f546001600160a01b03163314610421576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018590526001600160a01b038416918301829052805460ff1916811790556002849055600380546001600160a01b03191682179055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a09061049b9086815260200190565b60405180910390a35050565b6006546001600160a01b031633146104d25760405163173f0e6f60e21b815260040160405180910390fd5b60058054604080516060810182525f8082526020820181905291018190526004805460ff19169055909155600680546001600160a01b031916905561051681610cac565b60405181815233907f5e9c7ae3229b2cda5065d7058fcc05765c695c29ce05313fbe96cb2ca639231a9060200160405180910390a250565b6060604051806126800160405280612646815260200161101f612646913960405160200161057c9190610e37565b604051602081830303815290604052905090565b335f90815260096020526040812080549190556105ac81610cac565b50565b6007546001600160a01b031633146105da57604051631229bf3760e11b815260040160405180910390fd5b6001600160a01b0381166106015760405163e99d5ac560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461064d576040516330cd747160e01b815260040160405180910390fd5b60408051606080820183526001805460ff811615158452600280546020808701918252600380546001600160a01b038082168a8c019081528b51998a018c525f808b52948a01859052988b0184905260ff1990961690965592556001600160a01b03199093169055915190519351929391169133917ff1f48fe426adbd884772d4c165015a460df54458ff7e238dff36fe3c5d341ccf916106f091815260200190565b60405180910390a350565b604051806126800160405280612646815260200161101f612646913981565b60015460ff1661073d57604051631d99ddbf60e01b815260040160405180910390fd5b6003546001600160a01b03161580159061076257506003546001600160a01b03163314155b156107805760405163d6da33db60e01b815260040160405180910390fd5b60025434146107a25760405163356680b760e01b815260040160405180910390fd5b604080516060810182525f8082526020820181905291018190526001805460ff191690556002819055600380546001600160a01b03191690556107e434610d16565b90506107f08134610fc2565b5f80546001600160a01b031681526009602052604081208054909190610817908490610fd5565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610845908490610fd5565b90915550505f5460405134815233916001600160a01b0316907fdb87be53c711a1eb193f5fffddcfd85425990853a8423fa2bfd4a8620c218ed49060200160405180910390a36105ac33610d37565b5f546001600160a01b031633146108be576040516330cd747160e01b815260040160405180910390fd5b604080516060810182526001808252602082018490525f918301829052805460ff1916811790556002839055600380546001600160a01b0319169055905133907f812dc3f3c55b5006c05a0b308b2cb2eee57e2b53135f8b53ff5728c329b480a0906106f09085815260200190565b5f546001600160a01b03163314610957576040516330cd747160e01b815260040160405180910390fd5b60045460ff1661097a576040516313650ef160e11b815260040160405180910390fd5b600580546006805460408051606080820183525f80835260208084018290529284018190526001805460ff199081169091556002829055600380546001600160a01b031990811690915585519384018652828452938301829052919093018390526004805490911690559481905593811690915590916001600160a01b0390911690610a0583610d16565b9050610a118184610fc2565b5f80546001600160a01b031681526009602052604081208054909190610a38908490610fd5565b90915550506007546001600160a01b03165f9081526009602052604081208054839290610a66908490610fd5565b90915550505f546040518481526001600160a01b038481169216907fd32f7ef8c20232133e4dbd098b49d6b86ab580eee8a90a815925e900584749639060200160405180910390a3610ab782610d37565b505050565b6005543411610ade5760405163356680b760e01b815260040160405180910390fd5b60055415610b18576005546006546001600160a01b03165f9081526009602052604081208054909190610b12908490610fd5565b90915550505b604080516060810182526001808252346020808401829052339385018490526004805460ff19169093179092556005819055600680546001600160a01b03191684179055925192835290917f5445de3f4fe13efb115ec05c57e09cc0e277801d0cd2ae780457ebcd8688c391910160405180910390a2565b5f546001600160a01b03163314610bba576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b038116610be15760405163e99d5ac560e01b815260040160405180910390fd5b610bea81610d37565b6006546001600160a01b03808316911603610c675760058054604080516060810182525f80825260208083018290529183018190526004805460ff1916905593849055600680546001600160a01b03191690556001600160a01b0385168452600990528220805491928392610c60908490610fd5565b9091555050505b60015460ff16156105ac57604080516060810182525f8082526020820181905291018190526001805460ff19169055600255600380546001600160a01b031916905550565b6040515f90339083908381818185875af1925050503d805f8114610ceb576040519150601f19603f3d011682016040523d82523d5f602084013e610cf0565b606091505b5050905080610d12576040516342bb570960e01b815260040160405180910390fd5b5050565b5f606460085483610d279190610fe8565b610d319190610fff565b92915050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917fb0594827696749bdc48b310d4a5cfee5e9a89491f1c6bea2b928c2c33db414de9190a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610dd1575f80fd5b919050565b5f8060408385031215610de7575f80fd5b82359150610df760208401610dbb565b90509250929050565b5f60208284031215610e10575f80fd5b610e1982610dbb565b9392505050565b5f60208284031215610e30575f80fd5b5035919050565b7f3c21444f43545950452068746d6c3e3c68746d6c3e3c686561643e3c7469746c815261329f60f11b60208201526650726f6469677960c81b60228201527f3c2f7469746c653e3c6d657461206e616d653d2276696577706f72742220636f60298201527f6e74656e743d2277696474683d6465766963652d77696474682c20696e69746960498201527f616c2d7363616c653d3122202f3e3c7374796c653e68746d6c2c626f64797b6260698201527f61636b67726f756e643a233936393639363b6d617267696e3a303b706164646960898201527f6e673a303b6f766572666c6f773a68696464656e3b7d3c2f7374796c653e3c2f60a98201527f686561643e3c626f64793e3c73637269707420747970653d22746578742f6a6160c9820152693b30b9b1b934b83a111f60b11b60e98201525f8251806020850160f385015e7f3c2f7363726970743e3c2f626f64793e3c2f68746d6c3e000000000000000000920160f38101929092525061010a01919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d3157610d31610fae565b80820180821115610d3157610d31610fae565b8082028115828204841417610d3157610d31610fae565b5f8261101957634e487b7160e01b5f52601260045260245ffd5b50049056fe2275736520737472696374223b636f6e737420637265646974733d227777777479726f2073706865726520696e746572736563742c20697120707972616d69642c2062696777696e6773206e6f726d616c223b6c657420733d7b7369676e61747572653a22646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d6a45324969426f5a576c6e61485139496a49784e694967646d6c6c64304a76654430694d434177494449784e6941794d54596949475a7062477739496d3576626d5569494868746247357a50534a6f644852774f693876643364334c6e637a4c6d39795a7938794d4441774c334e325a79492b436a78775958526f49475139496b3077494442494d545a574d545a494d465977576949675a6d6c736244306964326870644755694c7a344b50484268644767675a443069545441674d6a417753444532566a49784e6b6777566a49774d466f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475139496b30794d5459674d4567794d4442574d545a494d6a4532566a42614969426d6157787350534a3361476c305a53497650676f38634746306143426b50534a4e4f5459674f545a494d544977566a45794d4567354e6c59354e6c6f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475139496b30794d5459674d6a4177534449774d4659794d545a494d6a4532566a49774d466f6949475a7062477739496e646f6158526c4969382b436a78775958526f49475139496b307a4d694177534445344e4659784e6b677a4d6c5977576949675a6d6c736244306964326870644755694c7a344b50484268644767675a443069545445344e4341794d4442494d7a4a574d6a4532534445344e4659794d4442614969426d6157787350534a3361476c305a53497650676f38634746306143426b50534a4e4d6a453249444d79566a45344e4567794d4442574d7a4a494d6a4532576949675a6d6c736244306964326870644755694c7a344b50484268644767675a44306954544532494445344e46597a4d6b6777566a45344e4567784e6c6f6949475a7062477739496e646f6158526c4969382b436a777663335a6e50676f3d222c6d6f7573655f73656e73697469766974793a312c6d6f7573655f6c696d69743a2e342c636f6c6f725f6f66667365745f6672616d65733a36302c6672616d653a302c7265733a5b302c305d2c736176655f6672616d65733a307d2c683d7b6e65776c696e653a537472696e672e66726f6d43686172436f6465283130292c7061727365723a6e65772055524c2877696e646f772e6c6f636174696f6e297d3b636f6e7374206d6f62696c653d2f416e64726f69647c7765624f537c6950686f6e657c695061647c69506f647c426c61636b42657272797c49454d6f62696c657c4f70657261204d696e692f692e74657374286e6176696761746f722e757365724167656e74293b6c657420773d77696e646f772c643d646f63756d656e743b642e626f64792e7374796c652e746f756368416374696f6e3d226e6f6e65222c642e626f64792e7374796c652e7573657253656c6563743d226e6f6e65223b6c657420623d642e626f64792c777261707065723d642e637265617465456c656d656e74282264697622293b777261707065722e7374796c652e637373546578743d22706f736974696f6e3a2072656c61746976653b206d617267696e3a2030206175746f222c642e626f64792e617070656e644368696c642877726170706572293b6c657420633d642e637265617465456c656d656e74282263616e76617322293b632e7374796c652e646973706c61793d22626c6f636b222c777261707065722e617070656e644368696c642863293b636f6e737420696d6167653d642e637265617465456c656d656e742822696d6722293b696d6167652e7372633d732e7369676e61747572652e7472696d28292c696d6167652e7374796c652e637373546578743d2277696474683a343070783b7a2d696e6465783a35303b706f736974696f6e3a6162736f6c7574653b626f74746f6d3a323070783b72696768743a323070783b222c777261707065722e617070656e644368696c6428696d616765293b636f6e737420676c4f7074696f6e733d7b706f776572507265666572656e63653a22686967682d706572666f726d616e6365227d3b6d6f62696c65262664656c65746520676c4f7074696f6e732e706f776572507265666572656e63652c772e676c3d632e676574436f6e746578742822776562676c32222c676c4f7074696f6e73292c682e756e69666f726d31693d28652c72293d3e682e756e69666f726d28652c722c22756e69666f726d316922292c682e756e69666f726d3d28652c722c74293d3e7b732e756e69666f726d737c7c3d7b7d3b28732e756e69666f726d735b655d7c7c3d2828293d3e7b636f6e737420693d676c2e676574556e69666f726d4c6f636174696f6e28732e63757272656e745f70726f6772616d2c65292c6f3d747c7c2841727261792e697341727261792872293f22756e69666f726d326676223a22756e69666f726d316622293b72657475726e7b7570646174653a653d3e676c5b6f5d28692c65297d7d292829292e7570646174652872297d2c682e726573697a653d28293d3e7b6c657420652c722c742c693d7b783a682e69782e6d6f7573652e782f732e7265735b305d2c793a682e69782e6d6f7573652e792f732e7265735b315d7d3b636f6e7374206f3d682e7061727365722e736561726368506172616d732e6765742822726573222c72293b6f3f28653d723d6f2c743d31293a28653d772e696e6e657257696474682c723d772e696e6e65724865696768742c732e617370656374262628653e722a732e6173706563743f653d722a732e6173706563743a723d652f732e617370656374292c743d772e646576696365506978656c526174696f292c732e7265735b305d3d632e77696474683d652a742c732e7265735b315d3d632e6865696768743d722a742c777261707065722e7374796c652e77696474683d632e7374796c652e77696474683d652b227078222c777261707065722e7374796c652e6865696768743d632e7374796c652e6865696768743d722b227078222c682e69782e73657428632e77696474682a692e782c632e6865696768742a692e79297d2c682e69783d7b73746172743a7b783a302c793a307d2c6d6f7573653a7b783a302c793a307d7d2c682e69782e7365743d28652c72293d3e7b682e69782e6d6f7573653d7b783a652c793a727d7d2c682e69782e73746172743d653d3e7b682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c642e6164644576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e636c616d703d28652c722c74293d3e4d6174682e6d617828722c4d6174682e6d696e28742c6529292c682e69782e6d6f76653d653d3e7b682e69782e6d6f7573652e782b3d28652e636c69656e74582d682e69782e73746172742e78292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e6d6f7573652e792d3d28652e636c69656e74592d682e69782e73746172742e79292a77696e646f772e646576696365506978656c526174696f2a732e6d6f7573655f73656e73697469766974792c682e69782e73746172742e783d652e636c69656e74582c682e69782e73746172742e793d652e636c69656e74592c682e69782e6d6f7573652e783d682e636c616d7028682e69782e6d6f7573652e782c732e7265735b305d2a732e6d6f7573655f6c696d69742c732e7265735b305d2a28312d732e6d6f7573655f6c696d697429292c682e69782e6d6f7573652e793d682e636c616d7028682e69782e6d6f7573652e792c732e7265735b315d2a732e6d6f7573655f6c696d69742c732e7265735b315d2a28312d732e6d6f7573655f6c696d697429297d2c682e69782e73746f703d28293d3e7b642e72656d6f76654576656e744c697374656e65722822706f696e7465726d6f7665222c682e69782e6d6f7665297d2c682e736176653d7b7d2c682e736176652e746f496d6167653d28293d3e7b636f6e737420653d6e657720446174653b6c657420723d537472696e6728652e67657446756c6c596561722829292e736c69636528322c34292b222d222b652e6765744d6f6e746828292b222d222b652e6765744461746528292b222028222b732e6672616d652b22292e706e67222c743d646f63756d656e742e637265617465456c656d656e7428226122293b742e7365744174747269627574652822646f776e6c6f6164222c72293b6c657420693d632e746f4461746155524c2822696d6167652f706e6722292e7265706c6163652822646174613a696d6167652f706e67222c22646174613a6170706c69636174696f6e2f6f637465742d73747265616d22293b742e736574417474726962757465282268726566222c69292c742e636c69636b28292c742e72656d6f766528297d2c682e6275696c645368616465723d28652c72293d3e7b6c657420743d676c2e6372656174655368616465722865293b72657475726e20676c2e736861646572536f7572636528742c72292c676c2e636f6d70696c655368616465722874292c747d2c682e696e697450726f6772616d3d28652c722c74293d3e7b636f6e737420693d676c2e63726561746550726f6772616d28292c6f3d682e6275696c6453686164657228676c2e5645525445585f5348414445522c72292c733d682e6275696c6453686164657228676c2e465241474d454e545f5348414445522c65293b676c2e61747461636853686164657228692c6f292c676c2e61747461636853686164657228692c73292c676c2e6c696e6b50726f6772616d2869292c676c2e676574536861646572506172616d65746572286f2c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822563a20222b676c2e676574536861646572496e666f4c6f67286f29292c676c2e676574536861646572506172616d6574657228732c676c2e434f4d50494c455f535441545553297c7c636f6e736f6c652e6572726f722822463a20222b676c2e676574536861646572496e666f4c6f67287329292c676c2e67657450726f6772616d506172616d6574657228692c676c2e4c494e4b5f535441545553297c7c636f6e736f6c652e6572726f722822503a20222b676c2e67657450726f6772616d496e666f4c6f67286929293b6c657420613d676c2e63726561746542756666657228292c6e3d676c2e6765744174747269624c6f636174696f6e28692c227022293b72657475726e20676c2e62696e6442756666657228676c2e41525241595f4255464645522c61292c676c2e6275666665724461746128676c2e41525241595f4255464645522c742c676c2e5354415449435f44524157292c676c2e656e61626c655665727465784174747269624172726179286e292c676c2e766572746578417474726962506f696e746572286e2c322c676c2e464c4f41542c21312c302c30292c697d2c732e706978656c3d6e65772055696e743841727261792834292c682e72656e6465723d28293d3e7b676c2e76696577706f727428302c302c632e77696474682c632e686569676874292c676c2e75736550726f6772616d28732e70726f6772616d292c732e63757272656e745f70726f6772616d3d732e70726f6772616d2c732e6672616d653c732e736176655f6672616d65733f682e756e69666f726d2822755f74696d65222c2e30313636372a732e6672616d65293a682e756e69666f726d2822755f74696d65222c2e3030312a706572666f726d616e63652e6e6f772829292c682e756e69666f726d2822755f7265736f6c7574696f6e222c732e726573292c682e756e69666f726d2822755f6d6f757365222c5b682e69782e6d6f7573652e782c682e69782e6d6f7573652e795d292c676c2e6472617741727261797328676c2e545249414e474c455f53545249502c302c34292c676c2e72656164506978656c7328302c302c312c312c676c2e524742412c676c2e554e5349474e45445f425954452c732e706978656c292c28682e736176652e7175657565647c7c732e6672616d653c732e736176655f6672616d65732626732e6672616d653e3329262628682e736176652e7175657565643d21312c682e736176652e746f496d6167652829292c732e6672616d652b2b2c72657175657374416e696d6174696f6e4672616d6528682e72656e646572297d3b636f6e737420696e69743d6173796e6328293d3e7b696628676c297b682e726573697a6528292c682e69782e73657428632e77696474682f322c632e6865696768742f32292c642e6164644576656e744c697374656e65722822706f696e746572646f776e222c682e69782e7374617274292c642e6164644576656e744c697374656e65722822706f696e7465727570222c682e69782e73746f70292c772e6164644576656e744c697374656e65722822726573697a65222c682e726573697a65292c732e736176655f6672616d65733d682e7061727365722e736561726368506172616d732e67657428226672616d657322297c7c302c642e6164644576656e744c697374656e657228226b65797570222c28653d3e7b6966282128652e6374726c4b65797c7c652e616c744b65797c7c652e73686966744b65797c7c652e6d6574614b6579292973776974636828652e6b6579297b636173652266223a636f6e737420653d70726f6d707428224672616d657320746f2072656e646572222c732e736176655f6672616d6573293b682e7061727365722e736561726368506172616d732e73657428226672616d6573222c65292c77696e646f772e6c6f636174696f6e3d682e7061727365722e687265663b627265616b3b636173652272223a636f6e737420723d70726f6d7074282243616e7661732073697a6520696e20706978656c7320286d6178203831393229222c632e686569676874293b723e3d382626723c3d38313932262628682e7061727365722e736561726368506172616d732e7365742822726573222c72292c77696e646f772e6c6f636174696f6e3d682e7061727365722e68726566293b627265616b3b636173652273223a682e736176652e7175657565643d21307d7d29293b6c657420653d466c6f6174333241727261792e6f66282d312c312c2d312c2d312c312c312c312c2d31293b636f6e737420723d222376657273696f6e20333030206573222b682e6e65776c696e652b22707265636973696f6e20686967687020666c6f61743b20696e207665633220703b20766f6964206d61696e28297b20676c5f506f736974696f6e203d7665633428702c312e302c312e30293b207d223b6c657420743d22707265636973696f6e20686967687020666c6f61743b6f757420766563342066726167436f6c6f723b636f6e737420696e7420755f61613d323b756e69666f726d207665633220755f7265736f6c7574696f6e3b756e69666f726d20666c6f617420755f74696d653b756e69666f726d207665633220755f6d6f7573653b636f6e7374207665633320763d76656333282e393431313736343730353838323335292c663d76656333282e373435303938303339323135363836293b636f6e7374207665633320643d7665633328302c302c2d2e35293b636f6e73742076656333206d3d76656333282e393830333932313536383632373435292c783d76656333282e393431313736343730353838323335293b76656333206e287665633320762c766563342075297b72657475726e20762b322e2a63726f737328752e78797a2c63726f737328752e78797a2c76292b762a752e77293b7d766563332073287665633320762c666c6f61742075297b72657475726e206e28762c7665633428302c73696e28752f322e292c302c636f7328752f322e2929293b7d766563332074287665633320762c666c6f61742075297b72657475726e206e28762c7665633428302c302c73696e28752f322e292c636f7328752f322e2929293b7d666c6f6174206e28766563332076297b696628762e793c3d302e2972657475726e206c656e677468286d6178286162732876292d76656333282e352c302c2e35292c302e29293b666c6f617420662c753b762e787a3d61627328762e787a293b762e787a3d762e7a3e762e783f762e7a783a762e787a3b762e787a2d3d2e353b7665633320643d7665633328762e7a2c762e792d2e352a762e782c762e782b2e352a762e79293b663d6d6178282d642e782c302e293b753d636c616d702828642e792d2e352a642e78292f312e352c302e2c312e293b72657475726e20737172742828286d6178282d642e792c642e782a312e32352b642e792a2e35293c302e3f302e3a6d696e28312e32352a28642e782b66292a28642e782b66292b642e792a642e792c312e32352a28642e782b2e352a75292a28642e782b2e352a75292b28642e792d312e32352a75292a28642e792d312e32352a752929292b642e7a2a642e7a292f312e3235292a7369676e286d617828642e7a2c2d762e7929293b7d766563322075287665633320762c666c6f61742075297b666c6f617420663d3165322c642c782c792c7a2c722c632c6d2c693b763d7428762c75293b643d2e31323b783d6d697828302e2c2e322c2e352b2e352a73696e28752a322e29293b782b3d312e2b643b7665633320613d762d7665633328302c2d782d2e31352c30292c672c652c6b3b612e782a3d2e3637353b613d7328612c2d752a332e293b793d6e2861292d2e31353b663d6d696e28662c79293b673d2d762d7665633328302c2d782d2e31352c30293b672e782a3d2e3637353b673d7328672c752a332e293b7a3d6e2867292d2e31353b663d6d696e28662c7a293b653d763b652d3d76656333282d782d2e31352c302c30293b652e792a3d2e3637353b653d7428652c312e353730373935293b653d7328652c752a332e293b723d6e2865292d2e31353b663d6d696e28662c72293b6b3d763b6b2d3d7665633328782b2e31352c302c30293b6b2e792a3d2e3637353b6b3d74286b2c2d312e353730373935293b6b3d73286b2c752a332e293b633d6e286b292d2e31353b663d6d696e28662c63293b6d3d6c656e67746828762d76656333283029292d643b663d6d696e28662c6d293b693d312e3b696628663d3d6d29693d322e3b72657475726e207665633228662c69293b7d76656332206e287665633320762c7665633320662c666c6f61742064297b666c6f617420783d302e2c723d2d312e3b666f7228696e7420653d303b653c3132383b652b2b297b76656333206d3d762b782a663b76656332206e3d75286d2c64293b666c6f617420693d6e2e783b723d6e2e793b696628693c2e3030317c7c783e31653229627265616b3b782b3d693b7d72657475726e207665633228782c72293b7d766563332065287665633320762c666c6f61742066297b7665633220643d76656332282e3030312c30293b76656333206d3d7528762c66292e782d76656333287528762d642e7879792c66292e782c7528762d642e7978792c66292e782c7528762d642e7979782c6629293b72657475726e206e6f726d616c697a65286d293b7d76656333206528297b7665633320763d676c5f46726167436f6f72642e7879792c663b763d7665633328646f7428762c76656333283132372e312c3331312e372c37342e3729292c646f7428762c76656333283236392e352c3138332e332c3234362e3129292c646f7428762c76656333283131332e352c3237312e392c3132342e362929293b663d2d312e2b322e2a66726163742873696e2876292a34333735382e35343533313233293b72657475726e206672616374283535352e2a73696e283737372e2a6629292f3235362e3b7d76656333206528766563332076297b762b3d6528293b72657475726e20763b7d666c6f6174207328766563332076297b763d667261637428762a2e333138333039392b2e31293b762a3d31372e3b72657475726e20667261637428762e782a762e792a762e7a2a28762e782b762e792b762e7a29293b7d666c6f6174207428766563332076297b7665633320663d666c6f6f722876292c643d66726163742876293b643d642a642a28332e2d322e2a64293b72657475726e206d6978286d6978286d6978287328662b76656333283029292c7328662b7665633328312c302c3029292c642e78292c6d6978287328662b7665633328302c312c3029292c7328662b7665633328312c312c3029292c642e78292c642e79292c6d6978286d6978287328662b7665633328302c302c3129292c7328662b7665633328312c302c3129292c642e78292c6d6978287328662b7665633328302c312c3129292c7328662b76656333283129292c642e78292c642e79292c642e7a293b7d76656333206528696e6f7574207665633320752c696e6f7574207665633320792c666c6f6174207a2c666c6f61742073297b7665633220693d6e28752c792c73293b7665633320723d766563332830293b696628692e783e3d316532297b7665633220613d28676c5f46726167436f6f72642e78792d2e352a755f7265736f6c7574696f6e2e7879292a2e303936383238373136353631373333352f6d696e28755f7265736f6c7574696f6e2e782c755f7265736f6c7574696f6e2e79293b666c6f617420633d74287665633328612a302e2c636f7328732a302e2929293b632a3d312e30313b633d706f7728632c312e3333293b76656333206b3d6d6978286d2c782c63293b723d6b3b7d656c73657b7665633320613d752b692e782a792c633d6528752b692e782a792c73292c6b2c672c6f3b666c6f617420683d312e322a706f7728312e2d646f7428632c2d79292c322e292c772c433b683d6d617828302e2c68293b76656332206c3d7665633228755f6d6f7573652f755f7265736f6c7574696f6e293b6b3d766563332836302e2a286c2e782d2e35292c2d36302e2a286c2e792d2e35292c30293b773d342e2a28732d322e2a61636f73282d312e292a7a293b673d6b2b7665633328636f732877292c73696e2877292c642e7a292a31302e3b6f3d6e6f726d616c697a6528672d61293b433d6d617828302e2c646f7428632c6f29293b722e783d6d697828662c762c432b68292e783b773d342e2a733b673d6b2b7665633328636f732877292c73696e2877292c642e7a292a31302e3b6f3d6e6f726d616c697a6528672d61293b433d6d617828302e2c646f7428632c6f29293b722e793d6d697828662c762c432b68292e793b773d342e2a28732b322e2a61636f73282d312e292a7a293b673d6b2b7665633328636f732877292c73696e2877292c642e7a292a31302e3b6f3d6e6f726d616c697a6528672d61293b433d6d617828302e2c646f7428632c6f29293b722e7a3d6d697828662c762c432b68292e7a3b7d72657475726e20723b7d76656333207228666c6f617420762c666c6f61742066297b666c6f617420753d73696e2866293b72657475726e20766563332831322e2a752a636f732876292c31322e2a636f732866292c31322e2a752a73696e287629293b7d76656333207228766563322076297b72657475726e2072282d322e2a61636f73282d312e292a762e792d312e3537303739352c762e782a332e3134313539293b7d6d6174332068287665633320762c766563322064297b7665633320663d6e6f726d616c697a6528766563332830292d76292c753d6e6f726d616c697a652863726f7373287665633328302c666c6f6f72286d6f6428642e792c322e29293d3d302e3f2d312e3a312e2c30292c6629293b72657475726e206d61743328752c6e6f726d616c697a652863726f737328662c7529292c66293b7d766f6964206d61696e28297b666c6f617420763d755f74696d652c662c643b7665633220753d76656332282e35292c633b76656333206d3d722875292c783b6d61743320613d68286d2c75293b633d676c5f46726167436f6f72642e78793b663d2e352b2e352a73696e28632e782a3134372e292a73696e28632e792a3133312e293b643d2e342a736d6f6f74687374657028302e2c312e2c322e2a73696e28322e2a61636f73282d312e292a762f2832302e2f332e2929293b762b3d302e3b696e7420793d696e7428755f6161293b783d766563332830293b666f7228696e7420673d303b673c793b672b2b29666f7228696e7420693d303b693c793b692b2b297b76656332206b3d7665633228672c69292f666c6f617428755f6161292d2e352c7a3d28676c5f46726167436f6f72642e78792b6b2d2e352a755f7265736f6c7574696f6e2e7879292a2e303936383238373136353631373333352f6d696e28755f7265736f6c7574696f6e2e782c755f7265736f6c7574696f6e2e79293b7665633320733d6e6f726d616c697a6528612a76656333287a2c3129293b666c6f6174206f3d762d2e3132352a28666c6f617428692a792b67292b66292f666c6f617428792a79292c773b6f2f3d32302e3b773d322e2a61636f73282d312e292a6f3b782b3d65286d2c732c642f32302e2c77293b7d782f3d666c6f617428755f61612a755f6161293b783d652878293b66726167436f6c6f723d7665633428782c31293b7d223b696628743d222376657273696f6e20333030206573222b682e6e65776c696e652b742c6d6f62696c65297b636f6e737420653d22636f6e737420696e7420755f61613d32223b743d742e7265706c61636528652c22636f6e737420696e7420755f61613d3122297d77696e646f772e70726f6772616d3d732e70726f6772616d3d682e696e697450726f6772616d28742c722c65292c682e72656e64657228297d656c73657b636f6e737420653d642e637265617465456c656d656e74282264697622293b652e7374796c652e637373546578743d22616c69676e2d6974656d733a63656e7465723b6261636b67726f756e643a233936393639363b636f6c6f723a236666663b646973706c61793a666c65783b666f6e742d66616d696c793a6d6f6e6f73706163653b666f6e742d73697a653a323070783b6865696768743a31303076683b6a7573746966792d636f6e74656e743a63656e7465723b6c6566743a303b706f736974696f6e3a66697865643b746f703a303b77696474683a31303076773b222c652e696e6e657248544d4c3d22596f75722062726f7773657220646f6573206e6f7420737570706f727420576562474c2e222c622e617070656e642865297d7d3b696e697428293ba2646970667358221220d3f6e2ea1032541442a54e3bb7e93782ae12ab31a75fe1c97dd764908377e4e364736f6c63430008190033

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.