[ { "inputs": [ { "internalType": "address", "name": "mopn_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "AskAccept", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "BidAccept", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "MTAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "VTAmount", "type": "uint256" } ], "name": "MTDeposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "MTAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "VTAmount", "type": "uint256" } ], "name": "MTWithdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "AskAcceptPrice", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "AskStartTimestamp", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BidAcceptPrice", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BidAcceptTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "BidStartTimestamp", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "MTAmount", "type": "uint256" }, { "internalType": "bool", "name": "onReceived", "type": "bool" } ], "name": "MT2VAmount", "outputs": [ { "internalType": "uint256", "name": "VAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "MTAmount", "type": "uint256" }, { "internalType": "bool", "name": "onReceived", "type": "bool" } ], "name": "MT2VAmountRealtime", "outputs": [ { "internalType": "uint256", "name": "VAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MTBalance", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MTBalanceRealtime", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "VAmount", "type": "uint256" } ], "name": "V2MTAmount", "outputs": [ { "internalType": "uint256", "name": "MTAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "VAmount", "type": "uint256" } ], "name": "V2MTAmountRealtime", "outputs": [ { "internalType": "uint256", "name": "MTAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VaultStatus", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "acceptBid", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "collectionAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAskCurrentPrice", "outputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAskInfo", "outputs": [ { "components": [ { "internalType": "uint256", "name": "vaultStatus", "type": "uint256" }, { "internalType": "uint256", "name": "startTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "bidAcceptPrice", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "currentPrice", "type": "uint256" } ], "internalType": "struct IMOPNCollectionVault.AskStruct", "name": "auction", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "reduceTimes", "type": "uint256" } ], "name": "getAskPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBidCurrentPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBidInfo", "outputs": [ { "components": [ { "internalType": "uint256", "name": "vaultStatus", "type": "uint256" }, { "internalType": "uint256", "name": "startTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "askAcceptPrice", "type": "uint256" }, { "internalType": "uint256", "name": "currentPrice", "type": "uint256" } ], "internalType": "struct IMOPNCollectionVault.BidStruct", "name": "bid", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "increaseTimes", "type": "uint256" } ], "name": "getBidPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCollectionMOPNPoint", "outputs": [ { "internalType": "uint24", "name": "point", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mopn", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "onERC20Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "onERC721Received", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162003e0d38038062003e0d8339810160408190526200003491620000a9565b6040518060400160405280600b81526020016a26a7a827102b2a37b5b2b760a91b8152506040518060400160405280600381526020016213559560ea1b815250816003908162000085919062000182565b50600462000094828262000182565b5050506001600160a01b03166080526200024e565b600060208284031215620000bc57600080fd5b81516001600160a01b0381168114620000d457600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200010657607f821691505b6020821081036200012757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200017d576000816000526020600020601f850160051c81016020861015620001585750805b601f850160051c820191505b81811015620001795782815560010162000164565b5050505b505050565b81516001600160401b038111156200019e576200019e620000db565b620001b681620001af8454620000f1565b846200012d565b602080601f831160018114620001ee5760008415620001d55750858301515b600019600386901b1c1916600185901b17855562000179565b600085815260208120601f198616915b828110156200021f57888601518255948401946001909101908401620001fe565b50858210156200023e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613b48620002c5600039600081816104b50152818161063301528181610a7901528181610ae701528181610df1015281816110d1015281816111f4015281816113290152818161144c01528181611e4701528181611f66015281816120460152818161236a01526124e50152613b486000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c806370a082311161012a578063b81ac9ce116100bd578063e08c00351161008c578063f5e2344711610071578063f5e23447146105d6578063fa414b2a14610611578063fc5d23e41461062457600080fd5b8063e08c003514610563578063e8d85f20146105ad57600080fd5b8063b81ac9ce146104d7578063cb1bd54b146104df578063db91d53e146104e7578063dd62ed3e1461051d57600080fd5b80639b013aee116100f95780639b013aee1461047d578063a9059cbb14610490578063ae9e54e8146104a3578063b73608c9146104b057600080fd5b806370a08231146104245780638507d0ac1461045a57806395d89b4114610462578063980bf2251461046a57600080fd5b806323b872dd116101bd578063313ce5671161018c5780634e45bf46116101715780634e45bf46146103db5780634fc35859146103e45780636aa00371146103f757600080fd5b8063313ce567146103b35780633e88ef3a146103c857600080fd5b806323b872dd14610357578063253b9ee91461036a5780632b1fd58a1461038b5780632e1a7d4d146103a057600080fd5b80630c57004a116101f95780630c57004a146102b7578063114fa0a7146102ca578063150b7a02146102e657806318160ddd1461034f57600080fd5b806306fdde031461022b578063095102c314610249578063095ea7b31461026a5780630baf269f1461028d575b600080fd5b61023361062c565b60405161024091906136a4565b60405180910390f35b61025c610257366004613706565b61072b565b604051908152602001610240565b61027d610278366004613758565b610793565b6040519015158152602001610240565b6005546102a290610100900463ffffffff1681565b60405163ffffffff9091168152602001610240565b61025c6102c5366004613784565b6107ab565b6102d2610816565b60405162ffffff9091168152602001610240565b61031e6102f436600461379d565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610240565b60025461025c565b61027d61036536600461383c565b6108d3565b6005546102a2906d0100000000000000000000000000900463ffffffff1681565b61039e610399366004613784565b6108f7565b005b61039e6103ae366004613784565b610d9f565b60065b60405160ff9091168152602001610240565b61025c6103d6366004613784565b6110be565b61025c60065481565b61031e6103f236600461379d565b611325565b6103ff611e34565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610240565b61025c61043236600461387d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61025c611e43565b61023361203f565b61025c610478366004613784565b612098565b61025c61048b366004613784565b6120bd565b61027d61049e366004613758565b6121d9565b6005546103b69060ff1681565b6103ff7f000000000000000000000000000000000000000000000000000000000000000081565b61025c6121e7565b61025c61223a565b6005546105049065010000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610240565b61025c61052b36600461389a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61056b612272565b6040516102409190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b6005546105049071010000000000000000000000000000000000900467ffffffffffffffff1681565b6105de6122f9565b60405161024091908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b61025c61061f366004613706565b612365565b61025c6124e1565b60606107077f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633c45fb8e610675611e34565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156106de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070291906138c8565b612602565b60405160200161071791906138e1565b604051602081830303815290604052905090565b600061073660025490565b60000361074c57610745611e43565b905061078d565b8161075857600061075a565b825b610762611e43565b8461076c60025490565b6107769190613955565b610780919061399b565b61078a91906139af565b90505b92915050565b6000336107a18185856126c0565b5060019392505050565b6000806107bc61270b6127106126d2565b905060006107ca828561271e565b905061080e816004600560119054906101000a900467ffffffffffffffff1660056107f591906139c2565b6107ff91906139ee565b67ffffffffffffffff16612a8f565b949350505050565b60006103e861083760646108286124e1565b610832919061399b565b612b14565b610842906003613955565b61084c919061399b565b60055490915065010000000000900467ffffffffffffffff16156108d057600060646108a1606460058054906101000a900467ffffffffffffffff1661089291906139ee565b67ffffffffffffffff16612b14565b6108ac906003613955565b6108b6919061399b565b90508062ffffff168262ffffff1611156108ce578091505b505b90565b6000336108e1858285612c03565b6108ec858585612cd2565b506001949350505050565b60055460ff1615610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6c6173742061736b206e6f742066696e6973680000000000000000000000000060448201526064015b60405180910390fd5b6000610973612d7d565b6040517fb88d4fde0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905260806064820152600260848201527f307800000000000000000000000000000000000000000000000000000000000060a482015290915073ffffffffffffffffffffffffffffffffffffffff82169063b88d4fde9060c401600060405180830381600087803b158015610a1e57600080fd5b505af1158015610a32573d6000803e3d6000fd5b50506040517fe76bd01000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f000000000000000000000000000000000000000000000000000000000000000093508316915063e76bd01090602401600060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050506000610ae361223a565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b749190613a15565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff919091169063a9059cbb906044016020604051808303816000875af1158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d9190613a32565b5060058054600686905560017fffffffffffffff000000000000000000000000ffffffffffffffff00000000ff9091167101000000000000000000000000000000000067ffffffffffffffff8516027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff161761010063ffffffff421602177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001617905573ffffffffffffffffffffffffffffffffffffffff8216633d30a30a84610cd5610816565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015262ffffff166024820152604401600060405180830381600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b505060408051878152602081018590523393507fc93a809d9cdf1cad5ea3a8d133a504220c9a117a30140e4558116338b29ab3799250015b60405180910390a250505050565b6000610da9612d7d565b6040517fe76bd01000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009182169063e76bd01090602401600060405180830381600087803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506000610e5a846110be565b905060008111610ec6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f7a65726f20746f207769746864726177000000000000000000000000000000006044820152606401610960565b8173ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f359190613a15565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff919091169063a9059cbb906044016020604051808303816000875af1158015610faa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fce9190613a32565b50610fd93385612dc5565b8173ffffffffffffffffffffffffffffffffffffffff16633d30a30a84610ffe610816565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015262ffffff166024820152604401600060405180830381600087803b15801561106e57600080fd5b505af1158015611082573d6000803e3d6000fd5b505060408051848152602081018890523393507f4b79d23042bef858e9a6513f30e6d324cd1d68859a4361abaaa493c177ce647d925001610d91565b60006110c960025490565b82036111ee577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561113a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115e9190613a15565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078d91906138c8565b600254827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112819190613a15565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131191906138c8565b61131b9190613955565b61078d919061399b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b69190613a15565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f6e6c7920616363657074206d6f706e20746f6b656e000000000000000000006044820152606401610960565b7f00000000000000000000000000000000000000000000000000000000000000006000611475612d7d565b90507f57a318397c0f7d6fe2eee6c62bc969cce7e0c736b17fddf6a186481c8a11eed76114a28587613a4f565b03611b705760055460ff16600114611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f61736b206e6f74206578697374000000000000000000000000000000000000006044820152606401610960565b600554610100900463ffffffff1642101561158d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f61736b206e6f74207374617274000000000000000000000000000000000000006044820152606401610960565b60006115976121e7565b905080871015611603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d4f504e546f6b656e206e6f7420656e6f7567680000000000000000000000006044820152606401610960565b80871115611739578273ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613a15565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb896116a0848b6139af565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190613a32565b508096505b6000811561183e5761174c60c88361399b565b9050801561183e578373ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c39190613a15565b73ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b81526004016117fd91815260200190565b600060405180830381600087803b15801561181757600080fd5b505af115801561182b573d6000803e3d6000fd5b50505050808261183b91906139af565b91505b6040517fe76bd01000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015285169063e76bd01090602401600060405180830381600087803b1580156118a757600080fd5b505af11580156118bb573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff16633d30a30a846118e4610816565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015262ffffff166024820152604401600060405180830381600087803b15801561195457600080fd5b505af1158015611968573d6000803e3d6000fd5b50506006546040517fb88d4fde00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8d81166024830152604482019290925260806064820152600260848201527f307800000000000000000000000000000000000000000000000000000000000060a4820152908616925063b88d4fde915060c401600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff167f24af840ebdf394b82571ef52f6f1f54061aaa2feb5cdbe18ad3b9b2fbb3a389d6006548385611a7a9190613a8b565b6040805192835260208301919091520160405180910390a2600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000169055611ac48183613a8b565b600580547fffffffffffffffffffffffffffffff000000000000000000000000ffffffffff166501000000000067ffffffffffffffff93909316929092027fffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff16919091176d01000000000000000000000000004263ffffffff1602177fffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffff16905550506000600655611e07565b60055460ff1615611bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6e6f207374616b696e6720647572696e672061736b00000000000000000000006044820152606401610960565b6040517fe76bd01000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e76bd01090602401600060405180830381600087803b158015611c4657600080fd5b505af1158015611c5a573d6000803e3d6000fd5b505050506000611c6b876001612365565b905060008111611cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f6e656564206d6f7265206d7420746f20676574206174206c656173742031207660448201527f746f6b656e0000000000000000000000000000000000000000000000000000006064820152608401610960565b611d078882612e25565b8273ffffffffffffffffffffffffffffffffffffffff16633d30a30a83611d2c610816565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015262ffffff166024820152604401600060405180830381600087803b158015611d9c57600080fd5b505af1158015611db0573d6000803e3d6000fd5b5050604080518a81526020810185905273ffffffffffffffffffffffffffffffffffffffff8c1693507fd79b7a0de5f1d68f08a185ca9381ba229a28ba48ac125eb537179472a76e7cf592500160405180910390a2505b507f4fc3585900000000000000000000000000000000000000000000000000000000979650505050505050565b6000611e3e612d7d565b905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed49190613a15565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611f40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6491906138c8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c2ff9d68611fa8612d7d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015612011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203591906138c8565b611e3e9190613a8b565b60606120887f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633c45fb8e610675611e34565b6040516020016107179190613a9e565b60006120a360025490565b82036120b15761078d611e43565b60025482611311611e43565b60008060056120ca611e43565b6120d4919061399b565b90506000600460058054906101000a900467ffffffffffffffff1660036120fb91906139c2565b61210591906139ee565b905067ffffffffffffffff811615806121285750818167ffffffffffffffff1610155b15612134575092915050565b600061217e61217961216861216361214b87612e81565b61215e8767ffffffffffffffff16612e81565b612e9f565b612f18565b61215e612163612715612710612e9f565b612f52565b67ffffffffffffffff16905084811161219a5750909392505050565b60006121aa6127156127106126d2565b905060006121b8828861271e565b90506121ce818567ffffffffffffffff16612a8f565b979650505050505050565b6000336107a1818585612cd2565b60055460009060ff1681036121fc5750600090565b60055461222590600c9061221b90610100900463ffffffff16426139af565b6102c5919061399b565b9050620f42408110156108d05750620f424090565b600554600090611e3e90600c90612268906d0100000000000000000000000000900463ffffffff16426139af565b61048b919061399b565b6122a46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60055460ff81168252610100810463ffffffff16602083015271010000000000000000000000000000000000900467ffffffffffffffff16604082015260065460608201526122f16121e7565b608082015290565b6123246040518060800160405280600081526020016000815260200160008152602001600081525090565b60055460ff81168252610100810463ffffffff16602083015265010000000000900467ffffffffffffffff16604082015261235d61223a565b606082015290565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f79190613a15565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015612463573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248791906138c8565b905061249260025490565b6000036124a1578091506124da565b826124ad5760006124af565b835b6124b990826139af565b846124c360025490565b6124cd9190613955565b6124d7919061399b565b91505b5092915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355a373d66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561254e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125729190613a15565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156125de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e91906138c8565b6060600061260f83612f6e565b600101905060008167ffffffffffffffff81111561262f5761262f613ae3565b6040519080825280601f01601f191660200182016040528015612659576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461266357509392505050565b6126cd8383836001613050565b505050565b6000816000036126e157600080fd5b60006126ed8484613198565b90506f7fffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff8216111561078a57600080fd5b600080600084600f0b1280156127375750826001166001145b905060008085600f0b1261274b5784612750565b846000035b6fffffffffffffffffffffffffffffffff16905070010000000000000000000000000000000068010000000000000000821161280057603f82901b91505b84156127f85760018516156127a3578102607f1c5b908002607f1c9060028516156127b9578102607f1c5b908002607f1c9060048516156127cf578102607f1c5b908002607f1c9060088516156127e5578102607f1c5b60049490941c93908002607f1c9061278e565b60401c612a28565b603f6c010000000000000000000000008310156128415760209290921b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015b6e0100000000000000000000000000008310156128825760109290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0015b6f010000000000000000000000000000008310156128c45760089290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8015b6f100000000000000000000000000000008310156129065760049290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc015b6f400000000000000000000000000000008310156129485760029290921b917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe015b6f8000000000000000000000000000000083101561298a5760019290921b917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b60005b8615612a1157604082106129a057600080fd5b60018716156129d357918302607f1c9181017001000000000000000000000000000000008311156129d357600192831c92015b928002607f1c9260019190911b907001000000000000000000000000000000008410612a0557600193841c9391909101905b600187901c965061298d565b60408110612a1e57600080fd5b6040039190911c90505b600083612a355781612a3a565b816000035b90507fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590612a7c57506f7fffffffffffffffffffffffffffffff8113155b612a8557600080fd5b9695505050505050565b600081600003612aa15750600061078d565b600083600f0b1215612ab257600080fd5b600f83900b6fffffffffffffffffffffffffffffffff8316810260401c90608084901c0277ffffffffffffffffffffffffffffffffffffffffffffffff811115612afb57600080fd5b60401b8119811115612b0c57600080fd5b019392505050565b600081600003612b2657506000919050565b60006001612b3384613329565b901c6001901b90506001818481612b4c57612b4c61396c565b048201901c90506001818481612b6457612b6461396c565b048201901c90506001818481612b7c57612b7c61396c565b048201901c90506001818481612b9457612b9461396c565b048201901c90506001818481612bac57612bac61396c565b048201901c90506001818481612bc457612bc461396c565b048201901c90506001818481612bdc57612bdc61396c565b048201901c9050612bfc81828581612bf657612bf661396c565b046133bd565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612ccc5781811015612cbd576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401610960565b612ccc84848484036000613050565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316612d22576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610960565b73ffffffffffffffffffffffffffffffffffffffff8216612d72576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610960565b6126cd8383836133d3565b604080516020808252818301909252600091829190602082018180368337019050509050606d604d60208301303c80806020019051810190612dbf9190613a15565b91505090565b73ffffffffffffffffffffffffffffffffffffffff8216612e15576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610960565b612e21826000836133d3565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216612e75576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610960565b612e21600083836133d3565b6000677fffffffffffffff821115612e9857600080fd5b5060401b90565b600081600f0b600003612eb157600080fd5b600082600f0b604085600f0b901b81612ecc57612ecc61396c565b0590507fffffffffffffffffffffffffffffffff800000000000000000000000000000008112801590612f0f57506f7fffffffffffffffffffffffffffffff8113155b61078a57600080fd5b60008082600f0b13612f2957600080fd5b6080612f348361357e565b600f0b6fb17217f7d1cf79abc9e3b39803f2f6af02901c9050919050565b60008082600f0b1215612f6457600080fd5b50600f0b60401d90565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612fb7577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612fe3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061300157662386f26fc10000830492506010015b6305f5e1008310613019576305f5e100830492506008015b612710831061302d57612710830492506004015b6064831061303f576064830492506002015b600a831061078d5760010192915050565b73ffffffffffffffffffffffffffffffffffffffff84166130a0576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610960565b73ffffffffffffffffffffffffffffffffffffffff83166130f0576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610960565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602090815260408083209387168352929052208290558015612ccc578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161318a91815260200190565b60405180910390a350505050565b6000816000036131a757600080fd5b600077ffffffffffffffffffffffffffffffffffffffffffffffff84116131e35782604085901b816131db576131db61396c565b04905061330c565b60c084811c64010000000081106131fc576020918201911c5b62010000811061320e576010918201911c5b610100811061321f576008918201911c5b6010811061322f576004918201911c5b6004811061323f576002918201911c5b6002811061324e576001820191505b60bf820360018603901c6001018260ff0387901b8161326f5761326f61396c565b0492506fffffffffffffffffffffffffffffffff83111561328f57600080fd5b608085901c83026fffffffffffffffffffffffffffffffff8616840260c088901c604089901b828110156132c4576001820391505b608084901b929003828110156132db576001820391505b829003608084901c82146132f0576001613301565b8881816132ff576132ff61396c565b045b870196505050505050505b6fffffffffffffffffffffffffffffffff81111561078a57600080fd5b600080608083901c1561333e57608092831c92015b604083901c1561335057604092831c92015b602083901c1561336257602092831c92015b601083901c1561337457601092831c92015b600883901c1561338657600892831c92015b600483901c1561339857600492831c92015b600283901c156133aa57600292831c92015b600183901c1561078d5760010192915050565b60008183106133cc578161078a565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff831661340b5780600260008282546134009190613a8b565b909155506134bd9050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015613491576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810182905260448101839052606401610960565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166134e657600280548290039055613512565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161357191815260200190565b60405180910390a3505050565b60008082600f0b1361358f57600080fd5b6000600f83900b6801000000000000000081126135ae576040918201911d5b64010000000081126135c2576020918201911d5b6201000081126135d4576010918201911d5b61010081126135e5576008918201911d5b601081126135f5576004918201911d5b60048112613605576002918201911d5b60028112613614576001820191505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0820160401b600f85900b607f8490031b6780000000000000005b60008113156136755790800260ff81901c8281029390930192607f011c9060011d61364f565b509095945050505050565b60005b8381101561369b578181015183820152602001613683565b50506000910152565b60208152600082518060208401526136c3816040850160208701613680565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b801515811461370357600080fd5b50565b6000806040838503121561371957600080fd5b82359150602083013561372b816136f5565b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461370357600080fd5b6000806040838503121561376b57600080fd5b823561377681613736565b946020939093013593505050565b60006020828403121561379657600080fd5b5035919050565b6000806000806000608086880312156137b557600080fd5b85356137c081613736565b945060208601356137d081613736565b935060408601359250606086013567ffffffffffffffff808211156137f457600080fd5b818801915088601f83011261380857600080fd5b81358181111561381757600080fd5b89602082850101111561382957600080fd5b9699959850939650602001949392505050565b60008060006060848603121561385157600080fd5b833561385c81613736565b9250602084013561386c81613736565b929592945050506040919091013590565b60006020828403121561388f57600080fd5b813561078a81613736565b600080604083850312156138ad57600080fd5b82356138b881613736565b9150602083013561372b81613736565b6000602082840312156138da57600080fd5b5051919050565b7f4d4f504e2056546f6b656e20230000000000000000000000000000000000000081526000825161391981600d850160208701613680565b91909101600d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761078d5761078d613926565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826139aa576139aa61396c565b500490565b8181038181111561078d5761078d613926565b67ffffffffffffffff8181168382160280821691908281146139e6576139e6613926565b505092915050565b600067ffffffffffffffff80841680613a0957613a0961396c565b92169190910492915050565b600060208284031215613a2757600080fd5b815161078a81613736565b600060208284031215613a4457600080fd5b815161078a816136f5565b8035602083101561078d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8082018082111561078d5761078d613926565b7f4d56542023000000000000000000000000000000000000000000000000000000815260008251613ad6816005850160208701613680565b9190910160050192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212200965ff1c8089fdc671982e0736baaf48e91346a4add34b22e7be11ff606b059764736f6c6343000817003300000000000000000000000090205dc32d976c6c36e5c5578b493dea31599a48