false
false
0

Contract Address Details

0x9bcFEfD72CA12a412575125994bC129664Df0d38

Token
Wrapped pD223 (WpD223)
Creator
0xebe894–7a24f6 at 0x7772f5–a11d6a
Balance
0 CLO
Tokens
Fetching tokens...
Transactions
56 Transactions
Transfers
0 Transfers
Gas Used
19,394,608
Last Balance Update
16289190
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
WpD223




Optimization enabled
false
Compiler version
v0.8.16+commit.07a7930e




EVM Version
default




Verified at
2024-09-26T15:35:34.584770Z

Contract source code

// All rights reserved.
// SPDX-License-Identifier: No License (None)

pragma solidity ^0.8.16;

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

interface IERC223Recipient {
    function tokenReceived(address _from, uint _value, bytes calldata _data) external;
}

interface IERC223 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
}

contract WpD223 {

    using Address for address;

    address public constant pD223 = 0xf5717D6c1cbAFE00A4c800B227eCe496180244F9; // адрес токена pD223

    string public constant name     = "Wrapped pD223";
    string public constant symbol   = "WpD223";
    string public constant standard = 'erc223';
    uint8  public constant decimals = 18;

    mapping (address => uint)                       public  balanceOf;
    mapping (address => mapping (address => uint))  public  allowance;

    event  Approval(address indexed src, address indexed guy, uint wad);
    event  Transfer(address indexed src, address indexed dst, uint wad);
    event  Deposit(address indexed dst, uint wad);
    event  Withdrawal(address indexed src, uint wad);
    event  TransferData(bytes data);



    function withdraw(uint _value) public { // Функция разворачивает wpD223 в pD223
        balanceOf[msg.sender] -= _value;
        IERC223(pD223).transfer(msg.sender, _value);
        emit Withdrawal(msg.sender, _value);
    }

    function totalSupply() public view returns (uint) { // общее количество обернутых pD223
        return IERC223(pD223).balanceOf(address(this));
    }

    function approve(address guy, uint wad) public returns (bool) { // выдача разрешений на трату токена wpD223
        allowance[msg.sender][guy] = wad;
        emit Approval(msg.sender, guy, wad);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        bytes memory _empty = hex"00000000";
        transferFrom(msg.sender, to, value);
        
        if(to.isContract()) {
            IERC223Recipient(to).tokenReceived(msg.sender, value, _empty);
        }
        emit TransferData(_empty);
        return true;
    }
    
    function transfer(address to, uint value, bytes calldata data) external returns (bool) {
        transferFrom(msg.sender, to, value);
        if(to.isContract()) {
            IERC223Recipient(to).tokenReceived(msg.sender, value, data);
        }
        emit TransferData(data);
        return true;
    }

    function transferFrom(address src, address dst, uint wad) public returns (bool){
        if (src != msg.sender && allowance[src][msg.sender] != uint(int(-1))) {
            allowance[src][msg.sender] -= wad;
        }

        balanceOf[src] -= wad;
        balanceOf[dst] += wad;

        emit Transfer(src, dst, wad);

        return true;
    }


    function tokenReceived(address _from, uint _value, bytes memory _data) public returns (bytes4) {
        require(msg.sender == pD223, "Only pD223"); // обрабатываем только вызов из контракта pD223
        balanceOf[_from] += _value;
        emit Deposit(_from, _value);
        return this.tokenReceived.selector; // возвращаем селектор этой функции
    }

}

        

Contract ABI

[{"type":"event","name":"Approval","inputs":[{"type":"address","name":"src","internalType":"address","indexed":true},{"type":"address","name":"guy","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"type":"address","name":"dst","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"src","internalType":"address","indexed":true},{"type":"address","name":"dst","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TransferData","inputs":[{"type":"bytes","name":"data","internalType":"bytes","indexed":false}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"type":"address","name":"src","internalType":"address","indexed":true},{"type":"uint256","name":"wad","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"","internalType":"address"},{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"guy","internalType":"address"},{"type":"uint256","name":"wad","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pD223","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"standard","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bytes4","name":"","internalType":"bytes4"}],"name":"tokenReceived","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"},{"type":"bytes","name":"_data","internalType":"bytes"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"},{"type":"bytes","name":"data","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"src","internalType":"address"},{"type":"address","name":"dst","internalType":"address"},{"type":"uint256","name":"wad","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdraw","inputs":[{"type":"uint256","name":"_value","internalType":"uint256"}]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b506115ec806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a23e8c4711610066578063a23e8c4714610261578063a9059cbb1461027f578063be45fd62146102af578063dd62ed3e146102df576100ea565b806370a08231146101e35780638943ec021461021357806395d89b4114610243576100ea565b806323b872dd116100c857806323b872dd1461015b5780632e1a7d4d1461018b578063313ce567146101a75780635a3b7e42146101c5576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030f565b6040516101049190610d23565b60405180910390f35b61012760048036038101906101229190610ded565b610348565b6040516101349190610e48565b60405180910390f35b61014561043a565b6040516101529190610e72565b60405180910390f35b61017560048036038101906101709190610e8d565b6104cf565b6040516101829190610e48565b60405180910390f35b6101a560048036038101906101a09190610ee0565b61075c565b005b6101af610895565b6040516101bc9190610f29565b60405180910390f35b6101cd61089a565b6040516101da9190610d23565b60405180910390f35b6101fd60048036038101906101f89190610f44565b6108d3565b60405161020a9190610e72565b60405180910390f35b61022d600480360381019061022891906110a6565b6108eb565b60405161023a9190611150565b60405180910390f35b61024b610a23565b6040516102589190610d23565b60405180910390f35b610269610a5c565b604051610276919061117a565b60405180910390f35b61029960048036038101906102949190610ded565b610a74565b6040516102a69190610e48565b60405180910390f35b6102c960048036038101906102c491906111f5565b610b72565b6040516102d69190610e48565b60405180910390f35b6102f960048036038101906102f49190611269565b610c5b565b6040516103069190610e72565b60405180910390f35b6040518060400160405280600d81526020017f577261707065642070443232330000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104289190610e72565b60405180910390a36001905092915050565b600073f5717d6c1cbafe00a4c800b227ece496180244f973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610489919061117a565b602060405180830381865afa1580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca91906112be565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156105a957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156106425781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461063a919061131a565b925050819055505b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610690919061131a565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106e5919061134e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107499190610e72565b60405180910390a3600190509392505050565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107aa919061131a565b9250508190555073f5717d6c1cbafe00a4c800b227ece496180244f973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610800929190611382565b6020604051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084391906113d7565b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161088a9190610e72565b60405180910390a250565b601281565b6040518060400160405280600681526020017f657263323233000000000000000000000000000000000000000000000000000081525081565b60006020528060005260406000206000915090505481565b600073f5717d6c1cbafe00a4c800b227ece496180244f973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690611450565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109bd919061134e565b925050819055508373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610a0a9190610e72565b60405180910390a2638943ec0260e01b90509392505050565b6040518060400160405280600681526020017f577044323233000000000000000000000000000000000000000000000000000081525081565b73f5717d6c1cbafe00a4c800b227ece496180244f981565b60008060405180604001604052806004815260200160008152509050610a9b3385856104cf565b50610abb8473ffffffffffffffffffffffffffffffffffffffff16610c80565b15610b30578373ffffffffffffffffffffffffffffffffffffffff16638943ec023385846040518463ffffffff1660e01b8152600401610afd939291906114c5565b600060405180830381600087803b158015610b1757600080fd5b505af1158015610b2b573d6000803e3d6000fd5b505050505b7f3ba9136826ac751de05d770d8d34fa4440ada49a5fb0e9aa1678aece66dad97681604051610b5f9190611503565b60405180910390a1600191505092915050565b6000610b7f3386866104cf565b50610b9f8573ffffffffffffffffffffffffffffffffffffffff16610c80565b15610c16578473ffffffffffffffffffffffffffffffffffffffff16638943ec02338686866040518563ffffffff1660e01b8152600401610be39493929190611552565b600060405180830381600087803b158015610bfd57600080fd5b505af1158015610c11573d6000803e3d6000fd5b505050505b7f3ba9136826ac751de05d770d8d34fa4440ada49a5fb0e9aa1678aece66dad9768383604051610c47929190611592565b60405180910390a160019050949350505050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ccd578082015181840152602081019050610cb2565b60008484015250505050565b6000601f19601f8301169050919050565b6000610cf582610c93565b610cff8185610c9e565b9350610d0f818560208601610caf565b610d1881610cd9565b840191505092915050565b60006020820190508181036000830152610d3d8184610cea565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d8482610d59565b9050919050565b610d9481610d79565b8114610d9f57600080fd5b50565b600081359050610db181610d8b565b92915050565b6000819050919050565b610dca81610db7565b8114610dd557600080fd5b50565b600081359050610de781610dc1565b92915050565b60008060408385031215610e0457610e03610d4f565b5b6000610e1285828601610da2565b9250506020610e2385828601610dd8565b9150509250929050565b60008115159050919050565b610e4281610e2d565b82525050565b6000602082019050610e5d6000830184610e39565b92915050565b610e6c81610db7565b82525050565b6000602082019050610e876000830184610e63565b92915050565b600080600060608486031215610ea657610ea5610d4f565b5b6000610eb486828701610da2565b9350506020610ec586828701610da2565b9250506040610ed686828701610dd8565b9150509250925092565b600060208284031215610ef657610ef5610d4f565b5b6000610f0484828501610dd8565b91505092915050565b600060ff82169050919050565b610f2381610f0d565b82525050565b6000602082019050610f3e6000830184610f1a565b92915050565b600060208284031215610f5a57610f59610d4f565b5b6000610f6884828501610da2565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610fb382610cd9565b810181811067ffffffffffffffff82111715610fd257610fd1610f7b565b5b80604052505050565b6000610fe5610d45565b9050610ff18282610faa565b919050565b600067ffffffffffffffff82111561101157611010610f7b565b5b61101a82610cd9565b9050602081019050919050565b82818337600083830152505050565b600061104961104484610ff6565b610fdb565b90508281526020810184848401111561106557611064610f76565b5b611070848285611027565b509392505050565b600082601f83011261108d5761108c610f71565b5b813561109d848260208601611036565b91505092915050565b6000806000606084860312156110bf576110be610d4f565b5b60006110cd86828701610da2565b93505060206110de86828701610dd8565b925050604084013567ffffffffffffffff8111156110ff576110fe610d54565b5b61110b86828701611078565b9150509250925092565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114a81611115565b82525050565b60006020820190506111656000830184611141565b92915050565b61117481610d79565b82525050565b600060208201905061118f600083018461116b565b92915050565b600080fd5b600080fd5b60008083601f8401126111b5576111b4610f71565b5b8235905067ffffffffffffffff8111156111d2576111d1611195565b5b6020830191508360018202830111156111ee576111ed61119a565b5b9250929050565b6000806000806060858703121561120f5761120e610d4f565b5b600061121d87828801610da2565b945050602061122e87828801610dd8565b935050604085013567ffffffffffffffff81111561124f5761124e610d54565b5b61125b8782880161119f565b925092505092959194509250565b600080604083850312156112805761127f610d4f565b5b600061128e85828601610da2565b925050602061129f85828601610da2565b9150509250929050565b6000815190506112b881610dc1565b92915050565b6000602082840312156112d4576112d3610d4f565b5b60006112e2848285016112a9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132582610db7565b915061133083610db7565b9250828203905081811115611348576113476112eb565b5b92915050565b600061135982610db7565b915061136483610db7565b925082820190508082111561137c5761137b6112eb565b5b92915050565b6000604082019050611397600083018561116b565b6113a46020830184610e63565b9392505050565b6113b481610e2d565b81146113bf57600080fd5b50565b6000815190506113d1816113ab565b92915050565b6000602082840312156113ed576113ec610d4f565b5b60006113fb848285016113c2565b91505092915050565b7f4f6e6c7920704432323300000000000000000000000000000000000000000000600082015250565b600061143a600a83610c9e565b915061144582611404565b602082019050919050565b600060208201905081810360008301526114698161142d565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061149782611470565b6114a1818561147b565b93506114b1818560208601610caf565b6114ba81610cd9565b840191505092915050565b60006060820190506114da600083018661116b565b6114e76020830185610e63565b81810360408301526114f9818461148c565b9050949350505050565b6000602082019050818103600083015261151d818461148c565b905092915050565b6000611531838561147b565b935061153e838584611027565b61154783610cd9565b840190509392505050565b6000606082019050611567600083018761116b565b6115746020830186610e63565b8181036040830152611587818486611525565b905095945050505050565b600060208201905081810360008301526115ad818486611525565b9050939250505056fea26469706673582212209de1afdf850fe80475191059571982a5d269d0cee5fd8b3cfae4eee43a57a40b64736f6c63430008100033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a23e8c4711610066578063a23e8c4714610261578063a9059cbb1461027f578063be45fd62146102af578063dd62ed3e146102df576100ea565b806370a08231146101e35780638943ec021461021357806395d89b4114610243576100ea565b806323b872dd116100c857806323b872dd1461015b5780632e1a7d4d1461018b578063313ce567146101a75780635a3b7e42146101c5576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030f565b6040516101049190610d23565b60405180910390f35b61012760048036038101906101229190610ded565b610348565b6040516101349190610e48565b60405180910390f35b61014561043a565b6040516101529190610e72565b60405180910390f35b61017560048036038101906101709190610e8d565b6104cf565b6040516101829190610e48565b60405180910390f35b6101a560048036038101906101a09190610ee0565b61075c565b005b6101af610895565b6040516101bc9190610f29565b60405180910390f35b6101cd61089a565b6040516101da9190610d23565b60405180910390f35b6101fd60048036038101906101f89190610f44565b6108d3565b60405161020a9190610e72565b60405180910390f35b61022d600480360381019061022891906110a6565b6108eb565b60405161023a9190611150565b60405180910390f35b61024b610a23565b6040516102589190610d23565b60405180910390f35b610269610a5c565b604051610276919061117a565b60405180910390f35b61029960048036038101906102949190610ded565b610a74565b6040516102a69190610e48565b60405180910390f35b6102c960048036038101906102c491906111f5565b610b72565b6040516102d69190610e48565b60405180910390f35b6102f960048036038101906102f49190611269565b610c5b565b6040516103069190610e72565b60405180910390f35b6040518060400160405280600d81526020017f577261707065642070443232330000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104289190610e72565b60405180910390a36001905092915050565b600073f5717d6c1cbafe00a4c800b227ece496180244f973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610489919061117a565b602060405180830381865afa1580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca91906112be565b905090565b60003373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156105a957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156106425781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461063a919061131a565b925050819055505b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610690919061131a565b92505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106e5919061134e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107499190610e72565b60405180910390a3600190509392505050565b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107aa919061131a565b9250508190555073f5717d6c1cbafe00a4c800b227ece496180244f973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610800929190611382565b6020604051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084391906113d7565b503373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161088a9190610e72565b60405180910390a250565b601281565b6040518060400160405280600681526020017f657263323233000000000000000000000000000000000000000000000000000081525081565b60006020528060005260406000206000915090505481565b600073f5717d6c1cbafe00a4c800b227ece496180244f973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690611450565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109bd919061134e565b925050819055508373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610a0a9190610e72565b60405180910390a2638943ec0260e01b90509392505050565b6040518060400160405280600681526020017f577044323233000000000000000000000000000000000000000000000000000081525081565b73f5717d6c1cbafe00a4c800b227ece496180244f981565b60008060405180604001604052806004815260200160008152509050610a9b3385856104cf565b50610abb8473ffffffffffffffffffffffffffffffffffffffff16610c80565b15610b30578373ffffffffffffffffffffffffffffffffffffffff16638943ec023385846040518463ffffffff1660e01b8152600401610afd939291906114c5565b600060405180830381600087803b158015610b1757600080fd5b505af1158015610b2b573d6000803e3d6000fd5b505050505b7f3ba9136826ac751de05d770d8d34fa4440ada49a5fb0e9aa1678aece66dad97681604051610b5f9190611503565b60405180910390a1600191505092915050565b6000610b7f3386866104cf565b50610b9f8573ffffffffffffffffffffffffffffffffffffffff16610c80565b15610c16578473ffffffffffffffffffffffffffffffffffffffff16638943ec02338686866040518563ffffffff1660e01b8152600401610be39493929190611552565b600060405180830381600087803b158015610bfd57600080fd5b505af1158015610c11573d6000803e3d6000fd5b505050505b7f3ba9136826ac751de05d770d8d34fa4440ada49a5fb0e9aa1678aece66dad9768383604051610c47929190611592565b60405180910390a160019050949350505050565b6001602052816000526040600020602052806000526040600020600091509150505481565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ccd578082015181840152602081019050610cb2565b60008484015250505050565b6000601f19601f8301169050919050565b6000610cf582610c93565b610cff8185610c9e565b9350610d0f818560208601610caf565b610d1881610cd9565b840191505092915050565b60006020820190508181036000830152610d3d8184610cea565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d8482610d59565b9050919050565b610d9481610d79565b8114610d9f57600080fd5b50565b600081359050610db181610d8b565b92915050565b6000819050919050565b610dca81610db7565b8114610dd557600080fd5b50565b600081359050610de781610dc1565b92915050565b60008060408385031215610e0457610e03610d4f565b5b6000610e1285828601610da2565b9250506020610e2385828601610dd8565b9150509250929050565b60008115159050919050565b610e4281610e2d565b82525050565b6000602082019050610e5d6000830184610e39565b92915050565b610e6c81610db7565b82525050565b6000602082019050610e876000830184610e63565b92915050565b600080600060608486031215610ea657610ea5610d4f565b5b6000610eb486828701610da2565b9350506020610ec586828701610da2565b9250506040610ed686828701610dd8565b9150509250925092565b600060208284031215610ef657610ef5610d4f565b5b6000610f0484828501610dd8565b91505092915050565b600060ff82169050919050565b610f2381610f0d565b82525050565b6000602082019050610f3e6000830184610f1a565b92915050565b600060208284031215610f5a57610f59610d4f565b5b6000610f6884828501610da2565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610fb382610cd9565b810181811067ffffffffffffffff82111715610fd257610fd1610f7b565b5b80604052505050565b6000610fe5610d45565b9050610ff18282610faa565b919050565b600067ffffffffffffffff82111561101157611010610f7b565b5b61101a82610cd9565b9050602081019050919050565b82818337600083830152505050565b600061104961104484610ff6565b610fdb565b90508281526020810184848401111561106557611064610f76565b5b611070848285611027565b509392505050565b600082601f83011261108d5761108c610f71565b5b813561109d848260208601611036565b91505092915050565b6000806000606084860312156110bf576110be610d4f565b5b60006110cd86828701610da2565b93505060206110de86828701610dd8565b925050604084013567ffffffffffffffff8111156110ff576110fe610d54565b5b61110b86828701611078565b9150509250925092565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61114a81611115565b82525050565b60006020820190506111656000830184611141565b92915050565b61117481610d79565b82525050565b600060208201905061118f600083018461116b565b92915050565b600080fd5b600080fd5b60008083601f8401126111b5576111b4610f71565b5b8235905067ffffffffffffffff8111156111d2576111d1611195565b5b6020830191508360018202830111156111ee576111ed61119a565b5b9250929050565b6000806000806060858703121561120f5761120e610d4f565b5b600061121d87828801610da2565b945050602061122e87828801610dd8565b935050604085013567ffffffffffffffff81111561124f5761124e610d54565b5b61125b8782880161119f565b925092505092959194509250565b600080604083850312156112805761127f610d4f565b5b600061128e85828601610da2565b925050602061129f85828601610da2565b9150509250929050565b6000815190506112b881610dc1565b92915050565b6000602082840312156112d4576112d3610d4f565b5b60006112e2848285016112a9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132582610db7565b915061133083610db7565b9250828203905081811115611348576113476112eb565b5b92915050565b600061135982610db7565b915061136483610db7565b925082820190508082111561137c5761137b6112eb565b5b92915050565b6000604082019050611397600083018561116b565b6113a46020830184610e63565b9392505050565b6113b481610e2d565b81146113bf57600080fd5b50565b6000815190506113d1816113ab565b92915050565b6000602082840312156113ed576113ec610d4f565b5b60006113fb848285016113c2565b91505092915050565b7f4f6e6c7920704432323300000000000000000000000000000000000000000000600082015250565b600061143a600a83610c9e565b915061144582611404565b602082019050919050565b600060208201905081810360008301526114698161142d565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061149782611470565b6114a1818561147b565b93506114b1818560208601610caf565b6114ba81610cd9565b840191505092915050565b60006060820190506114da600083018661116b565b6114e76020830185610e63565b81810360408301526114f9818461148c565b9050949350505050565b6000602082019050818103600083015261151d818461148c565b905092915050565b6000611531838561147b565b935061153e838584611027565b61154783610cd9565b840190509392505050565b6000606082019050611567600083018761116b565b6115746020830186610e63565b8181036040830152611587818486611525565b905095945050505050565b600060208201905081810360008301526115ad818486611525565b9050939250505056fea26469706673582212209de1afdf850fe80475191059571982a5d269d0cee5fd8b3cfae4eee43a57a40b64736f6c63430008100033