UNPKG

bnpl

Version:

The smart contracts for bnpl

641 lines (640 loc) 42.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ERC4907", "sourceName": "contracts/ERC4907.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SetUserCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint64", "name": "expires", "type": "uint64" } ], "name": "UpdateUser", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "tid", "type": "uint256" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint64", "name": "expires", "type": "uint64" } ], "name": "setUser", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "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": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "userExpires", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "userOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506040805180820182526004808252631093941360e21b6020808401828152855180870190965292855284015281519192916200005191600291620000d1565b50805162000067906003906020840190620000d1565b5050600080555062000079336200007f565b620001b3565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000df9062000177565b90600052602060002090601f0160209004810192826200010357600085556200014e565b82601f106200011e57805160ff19168380011785556200014e565b828001600101855582156200014e579182015b828111156200014e57825182559160200191906001019062000131565b506200015c92915062000160565b5090565b5b808211156200015c576000815560010162000161565b600181811c908216806200018c57607f821691505b602082108103620001ad57634e487b7160e01b600052602260045260246000fd5b50919050565b611bfe80620001c36000396000f3fe6080604052600436106101755760003560e01c80638da5cb5b116100cb578063c2f1f14a1161007f578063e030565e11610059578063e030565e14610400578063e985e9c514610420578063f2fde38b1461047657600080fd5b8063c2f1f14a1461038c578063c6c3bbe6146103c0578063c87b56dd146103e057600080fd5b806395d89b41116100b057806395d89b4114610344578063a22cb46514610359578063b88d4fde1461037957600080fd5b80638da5cb5b146102e95780638fc88c481461031457600080fd5b806323b872dd1161012d5780636352211e116101075780636352211e1461029457806370a08231146102b4578063715018a6146102d457600080fd5b806323b872dd1461024e57806342842e0e1461026157806342966c681461027457600080fd5b8063081812fc1161015e578063081812fc146101d1578063095ea7b31461021657806318160ddd1461022b57600080fd5b806301ffc9a71461017a57806306fdde03146101af575b600080fd5b34801561018657600080fd5b5061019a6101953660046116f7565b610496565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101c46104f3565b6040516101a6919061176c565b3480156101dd57600080fd5b506101f16101ec36600461177f565b610585565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b6102296102243660046117c1565b6105ef565b005b34801561023757600080fd5b50600154600054035b6040519081526020016101a6565b61022961025c3660046117eb565b6106da565b61022961026f3660046117eb565b610973565b34801561028057600080fd5b5061022961028f36600461177f565b610993565b3480156102a057600080fd5b506101f16102af36600461177f565b6109b3565b3480156102c057600080fd5b506102406102cf366004611827565b6109be565b3480156102e057600080fd5b50610229610a40565b3480156102f557600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff166101f1565b34801561032057600080fd5b5061024061032f36600461177f565b60009081526008602052604090205460a01c90565b34801561035057600080fd5b506101c4610a54565b34801561036557600080fd5b50610229610374366004611842565b610a63565b610229610387366004611906565b610afa565b34801561039857600080fd5b506101f16103a736600461177f565b6000908152600860205260409020544260a01b81110290565b3480156103cc57600080fd5b506102406103db3660046117eb565b610b6a565b3480156103ec57600080fd5b506101c46103fb36600461177f565b610c0c565b34801561040c57600080fd5b5061022961041b3660046119b1565b610cde565b34801561042c57600080fd5b5061019a61043b3660046119fe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561048257600080fd5b50610229610491366004611827565b610e00565b60006104a182610eb9565b806104ed57507fad092b5c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461050290611a31565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611a31565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b600061059082610f9a565b6105c6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105fa826109b3565b90503373ffffffffffffffffffffffffffffffffffffffff82161461065957610623813361043b565b610659576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006106e582610fda565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080546107858187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b6107c957610793863361043b565b6107c9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610816576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561082157600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036109105760018401600081815260046020526040812054900361090e57600054811461090e5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61098e83838360405180602001604052806000815250610afa565b505050565b61099b611091565b6109a781600080610cde565b6109b081611112565b50565b60006104ed82610fda565b600073ffffffffffffffffffffffffffffffffffffffff8216610a0d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610a48611091565b610a52600061111d565b565b60606003805461050290611a31565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610b058484846106da565b73ffffffffffffffffffffffffffffffffffffffff83163b15610b6457610b2e84848484611194565b610b64576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610b74611091565b610b7f8460016112ef565b6001610b8a60005490565b610b949190611a7e565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff958616815260208082019586526000848152600a90915291909120905181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169516949094178455915160019093019290925592915050565b6000818152600a602090815260409182902082518084018452815473ffffffffffffffffffffffffffffffffffffffff1680825260019092015492810183905292517fc87b56dd00000000000000000000000000000000000000000000000000000000815260048101929092526060929163c87b56dd90602401600060405180830381865afa925050508015610cc457506040513d6000823e601f3d908101601f19168201604052610cc19190810190611abc565b60015b610cd157610cd18361142d565b9392505050565b50919050565b6000610ce9846109b3565b90503373ffffffffffffffffffffffffffffffffffffffff821614610d6d57610d12813361043b565b610d6d5733610d2085610585565b73ffffffffffffffffffffffffffffffffffffffff1614610d6d576040517f4f1dd8e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526008602090815260409182902073ffffffffffffffffffffffffffffffffffffffff861660a086901b7bffffffffffffffff0000000000000000000000000000000000000000168117909155915167ffffffffffffffff8516815286917f4e06b4e7000e659094299b3533b47b6aa8ad048e95e872d23d1f4ee55af89cfe910160405180910390a350505050565b610e08611091565b73ffffffffffffffffffffffffffffffffffffffff8116610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109b08161111d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610f4c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104ed5750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60008054821080156104ed5750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b60008160005481101561105f57600081815260046020526040812054907c01000000000000000000000000000000000000000000000000000000008216900361105d575b80600003610cd157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160008181526004602052604090205461101e565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff163314610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ea7565b6109b08160006114d6565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906111ef903390899088908890600401611b33565b6020604051808303816000875af192505050801561122a575060408051601f3d908101601f1916820190925261122791810190611b7c565b60015b6112a1573d808015611258576040519150601f19603f3d011682016040523d82523d6000602084013e61125d565b606091505b508051600003611299576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b600080549082900361132d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146113e957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016113b1565b5081600003611424576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b606061143882610f9a565b61146e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061148560408051602081019091526000815290565b905080516000036114a55760405180602001604052806000815250610cd1565b806114af84611685565b6040516020016114c0929190611b99565b6040516020818303038152906040529392505050565b60006114e183610fda565b9050806000806114ff86600090815260066020526040902080549091565b91509150841561155857611514818433610763565b61155857611522833361043b565b611558576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561156357600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000851690036116305760018601600081815260046020526040812054900361162e57600054811461162e5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061169f5750819003601f19909101908152919050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109b057600080fd5b60006020828403121561170957600080fd5b8135610cd1816116c9565b60005b8381101561172f578181015183820152602001611717565b83811115610b645750506000910152565b60008151808452611758816020860160208601611714565b601f01601f19169290920160200192915050565b602081526000610cd16020830184611740565b60006020828403121561179157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146117bc57600080fd5b919050565b600080604083850312156117d457600080fd5b6117dd83611798565b946020939093013593505050565b60008060006060848603121561180057600080fd5b61180984611798565b925061181760208501611798565b9150604084013590509250925092565b60006020828403121561183957600080fd5b610cd182611798565b6000806040838503121561185557600080fd5b61185e83611798565b91506020830135801515811461187357600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118d6576118d661187e565b604052919050565b600067ffffffffffffffff8211156118f8576118f861187e565b50601f01601f191660200190565b6000806000806080858703121561191c57600080fd5b61192585611798565b935061193360208601611798565b925060408501359150606085013567ffffffffffffffff81111561195657600080fd5b8501601f8101871361196757600080fd5b803561197a611975826118de565b6118ad565b81815288602083850101111561198f57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806000606084860312156119c657600080fd5b833592506119d660208501611798565b9150604084013567ffffffffffffffff811681146119f357600080fd5b809150509250925092565b60008060408385031215611a1157600080fd5b611a1a83611798565b9150611a2860208401611798565b90509250929050565b600181811c90821680611a4557607f821691505b602082108103610cd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600082821015611ab7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b600060208284031215611ace57600080fd5b815167ffffffffffffffff811115611ae557600080fd5b8201601f81018413611af657600080fd5b8051611b04611975826118de565b818152856020838501011115611b1957600080fd5b611b2a826020830160208601611714565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611b726080830184611740565b9695505050505050565b600060208284031215611b8e57600080fd5b8151610cd1816116c9565b60008351611bab818460208801611714565b835190830190611bbf818360208801611714565b0194935050505056fea26469706673582212202dadfde1354b4329fbb4f3f73ed877f7c2cb3f744bd1963f9f303232d445f44c64736f6c634300080e0033", "deployedBytecode": "0x6080604052600436106101755760003560e01c80638da5cb5b116100cb578063c2f1f14a1161007f578063e030565e11610059578063e030565e14610400578063e985e9c514610420578063f2fde38b1461047657600080fd5b8063c2f1f14a1461038c578063c6c3bbe6146103c0578063c87b56dd146103e057600080fd5b806395d89b41116100b057806395d89b4114610344578063a22cb46514610359578063b88d4fde1461037957600080fd5b80638da5cb5b146102e95780638fc88c481461031457600080fd5b806323b872dd1161012d5780636352211e116101075780636352211e1461029457806370a08231146102b4578063715018a6146102d457600080fd5b806323b872dd1461024e57806342842e0e1461026157806342966c681461027457600080fd5b8063081812fc1161015e578063081812fc146101d1578063095ea7b31461021657806318160ddd1461022b57600080fd5b806301ffc9a71461017a57806306fdde03146101af575b600080fd5b34801561018657600080fd5b5061019a6101953660046116f7565b610496565b60405190151581526020015b60405180910390f35b3480156101bb57600080fd5b506101c46104f3565b6040516101a6919061176c565b3480156101dd57600080fd5b506101f16101ec36600461177f565b610585565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b6102296102243660046117c1565b6105ef565b005b34801561023757600080fd5b50600154600054035b6040519081526020016101a6565b61022961025c3660046117eb565b6106da565b61022961026f3660046117eb565b610973565b34801561028057600080fd5b5061022961028f36600461177f565b610993565b3480156102a057600080fd5b506101f16102af36600461177f565b6109b3565b3480156102c057600080fd5b506102406102cf366004611827565b6109be565b3480156102e057600080fd5b50610229610a40565b3480156102f557600080fd5b5060095473ffffffffffffffffffffffffffffffffffffffff166101f1565b34801561032057600080fd5b5061024061032f36600461177f565b60009081526008602052604090205460a01c90565b34801561035057600080fd5b506101c4610a54565b34801561036557600080fd5b50610229610374366004611842565b610a63565b610229610387366004611906565b610afa565b34801561039857600080fd5b506101f16103a736600461177f565b6000908152600860205260409020544260a01b81110290565b3480156103cc57600080fd5b506102406103db3660046117eb565b610b6a565b3480156103ec57600080fd5b506101c46103fb36600461177f565b610c0c565b34801561040c57600080fd5b5061022961041b3660046119b1565b610cde565b34801561042c57600080fd5b5061019a61043b3660046119fe565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561048257600080fd5b50610229610491366004611827565b610e00565b60006104a182610eb9565b806104ed57507fad092b5c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461050290611a31565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611a31565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b5050505050905090565b600061059082610f9a565b6105c6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105fa826109b3565b90503373ffffffffffffffffffffffffffffffffffffffff82161461065957610623813361043b565b610659576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006106e582610fda565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461074c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260066020526040902080546107858187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b6107c957610793863361043b565b6107c9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610816576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561082157600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000841690036109105760018401600081815260046020526040812054900361090e57600054811461090e5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b61098e83838360405180602001604052806000815250610afa565b505050565b61099b611091565b6109a781600080610cde565b6109b081611112565b50565b60006104ed82610fda565b600073ffffffffffffffffffffffffffffffffffffffff8216610a0d576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b610a48611091565b610a52600061111d565b565b60606003805461050290611a31565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610b058484846106da565b73ffffffffffffffffffffffffffffffffffffffff83163b15610b6457610b2e84848484611194565b610b64576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610b74611091565b610b7f8460016112ef565b6001610b8a60005490565b610b949190611a7e565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff958616815260208082019586526000848152600a90915291909120905181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169516949094178455915160019093019290925592915050565b6000818152600a602090815260409182902082518084018452815473ffffffffffffffffffffffffffffffffffffffff1680825260019092015492810183905292517fc87b56dd00000000000000000000000000000000000000000000000000000000815260048101929092526060929163c87b56dd90602401600060405180830381865afa925050508015610cc457506040513d6000823e601f3d908101601f19168201604052610cc19190810190611abc565b60015b610cd157610cd18361142d565b9392505050565b50919050565b6000610ce9846109b3565b90503373ffffffffffffffffffffffffffffffffffffffff821614610d6d57610d12813361043b565b610d6d5733610d2085610585565b73ffffffffffffffffffffffffffffffffffffffff1614610d6d576040517f4f1dd8e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526008602090815260409182902073ffffffffffffffffffffffffffffffffffffffff861660a086901b7bffffffffffffffff0000000000000000000000000000000000000000168117909155915167ffffffffffffffff8516815286917f4e06b4e7000e659094299b3533b47b6aa8ad048e95e872d23d1f4ee55af89cfe910160405180910390a350505050565b610e08611091565b73ffffffffffffffffffffffffffffffffffffffff8116610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109b08161111d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610f4c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806104ed5750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b60008054821080156104ed5750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b60008160005481101561105f57600081815260046020526040812054907c01000000000000000000000000000000000000000000000000000000008216900361105d575b80600003610cd157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160008181526004602052604090205461101e565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff163314610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ea7565b6109b08160006114d6565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906111ef903390899088908890600401611b33565b6020604051808303816000875af192505050801561122a575060408051601f3d908101601f1916820190925261122791810190611b7c565b60015b6112a1573d808015611258576040519150601f19603f3d011682016040523d82523d6000602084013e61125d565b606091505b508051600003611299576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050949350505050565b600080549082900361132d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146113e957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016113b1565b5081600003611424576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b606061143882610f9a565b61146e576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061148560408051602081019091526000815290565b905080516000036114a55760405180602001604052806000815250610cd1565b806114af84611685565b6040516020016114c0929190611b99565b6040516020818303038152906040529392505050565b60006114e183610fda565b9050806000806114ff86600090815260066020526040902080549091565b91509150841561155857611514818433610763565b61155857611522833361043b565b611558576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b801561156357600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c0200000000000000000000000000000000000000000000000000000000851690036116305760018601600081815260046020526040812054900361162e57600054811461162e5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061169f5750819003601f19909101908152919050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146109b057600080fd5b60006020828403121561170957600080fd5b8135610cd1816116c9565b60005b8381101561172f578181015183820152602001611717565b83811115610b645750506000910152565b60008151808452611758816020860160208601611714565b601f01601f19169290920160200192915050565b602081526000610cd16020830184611740565b60006020828403121561179157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146117bc57600080fd5b919050565b600080604083850312156117d457600080fd5b6117dd83611798565b946020939093013593505050565b60008060006060848603121561180057600080fd5b61180984611798565b925061181760208501611798565b9150604084013590509250925092565b60006020828403121561183957600080fd5b610cd182611798565b6000806040838503121561185557600080fd5b61185e83611798565b91506020830135801515811461187357600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156118d6576118d661187e565b604052919050565b600067ffffffffffffffff8211156118f8576118f861187e565b50601f01601f191660200190565b6000806000806080858703121561191c57600080fd5b61192585611798565b935061193360208601611798565b925060408501359150606085013567ffffffffffffffff81111561195657600080fd5b8501601f8101871361196757600080fd5b803561197a611975826118de565b6118ad565b81815288602083850101111561198f57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6000806000606084860312156119c657600080fd5b833592506119d660208501611798565b9150604084013567ffffffffffffffff811681146119f357600080fd5b809150509250925092565b60008060408385031215611a1157600080fd5b611a1a83611798565b9150611a2860208401611798565b90509250929050565b600181811c90821680611a4557607f821691505b602082108103610cd8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600082821015611ab7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b600060208284031215611ace57600080fd5b815167ffffffffffffffff811115611ae557600080fd5b8201601f81018413611af657600080fd5b8051611b04611975826118de565b818152856020838501011115611b1957600080fd5b611b2a826020830160208601611714565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611b726080830184611740565b9695505050505050565b600060208284031215611b8e57600080fd5b8151610cd1816116c9565b60008351611bab818460208801611714565b835190830190611bbf818360208801611714565b0194935050505056fea26469706673582212202dadfde1354b4329fbb4f3f73ed877f7c2cb3f744bd1963f9f303232d445f44c64736f6c634300080e0033", "linkReferences": {}, "deployedLinkReferences": {} }