0 txs
2 calls
constructor
constructor(string _name, string _symbol, string _tokenURI, address _creator, uint256 _creatorFee, uint96 _creatorRoyalty, address _admin, uint256 _adminFee, address _referrer, address _payToken, address _bondingCurve)
functions
ADMIN_FEE_BIPS
viewfunction ADMIN_FEE_BIPS() view returns (uint256)
admin
viewfunction admin() view returns (address)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
BONDING_CURVE
viewfunction BONDING_CURVE() view returns (address)
calculateFees
viewfunction calculateFees(uint256 _price) view returns (uint256 _creatorFee, uint256 _adminFee)
CREATOR_FEE_BIPS
viewfunction CREATOR_FEE_BIPS() view returns (uint256)
CREATOR_ROYALTY_BIPS
viewfunction CREATOR_ROYALTY_BIPS() view returns (uint96)
creator
viewfunction creator() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
lastId
viewfunction lastId() view returns (uint256)
name
viewfunction name() view returns (string)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
payToken
viewfunction payToken() view returns (address)
priceToBuyNext
viewfunction priceToBuyNext() view returns (uint256 _tokenPrice, uint256 _creatorFee, uint256 _adminFee)
priceToBuyNext
viewfunction priceToBuyNext(uint256 _numOfTokens) view returns (uint256 _tokenPrice, uint256 _creatorFee, uint256 _adminFee)
priceToSellNext
viewfunction priceToSellNext() view returns (uint256 _tokenPrice, uint256 _creatorFee, uint256 _adminFee)
priceToSellNext
viewfunction priceToSellNext(uint256 _numOfTokens) view returns (uint256 _tokenPrice, uint256 _creatorFee, uint256 _adminFee)
REFERRER
viewfunction REFERRER() view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
bulkBuy
nonpayablefunction bulkBuy(address _to, uint256 _numOfTokens, uint256 _maxPayment) returns (uint256 _totalPrice)
bulkBuy
nonpayablefunction bulkBuy(uint256 _numOfTokens, uint256 _maxPayment) returns (uint256 _totalPrice)
bulkSell
nonpayablefunction bulkSell(uint256[] _tokenIds, uint256 _minAcceptedPrice) returns (uint256 _netProceeds)
bulkSell
nonpayablefunction bulkSell(uint256[] _tokenIds) returns (uint256 _netProceeds)
buy
nonpayablefunction buy(address _to, uint256 _maxPayment) returns (uint256 _totalPrice)
buy
nonpayablefunction buy(uint256 _maxPayment) returns (uint256 _totalPrice)
pause
nonpayablefunction pause(bool _pauseState)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
sell
nonpayablefunction sell(uint256 _tokenId, uint256 _minAcceptedPrice) returns (uint256 _netProceeds)
sell
nonpayablefunction sell(uint256 _tokenId) returns (uint256 _netProceeds)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
updateAdmin
nonpayablefunction updateAdmin(address _newAdmin)
updateCreator
nonpayablefunction updateCreator(address _newCreator)
updateTokenURI
nonpayablefunction updateTokenURI(string _newTokenURI)
events
AdminUpdated
event AdminUpdated(address oldAdmin, address newAdmin)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
Bought
event Bought(address indexed payer, address indexed receiver, uint256 indexed tokenId, uint256 paymentAmount, uint256 creatorFee, uint256 adminFee)
CreatorUpdated
event CreatorUpdated(address oldCreator, address newCreator)
Sold
event Sold(address indexed seller, uint256 indexed tokenId, uint256 salePrice, uint256 creatorFee, uint256 adminFee)
ToggledPause
event ToggledPause(bool oldPauseState, bool newPauseState, address caller)
TokenURIUpdated
event TokenURIUpdated(string oldTokenURI, string newTokenURI)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
CreatorToken__AddressZeroNotAllowed
error CreatorToken__AddressZeroNotAllowed()
CreatorToken__CallerIsNotOwner
error CreatorToken__CallerIsNotOwner(uint256 tokenId, address owner, address caller)
CreatorToken__ContractIsPaused
error CreatorToken__ContractIsPaused()
CreatorToken__LastTokensCannotBeSold
error CreatorToken__LastTokensCannotBeSold(uint256 circulatingSupply)
CreatorToken__MaxFeeExceeded
error CreatorToken__MaxFeeExceeded(uint256 fee, uint256 maxFee)
CreatorToken__MaxPaymentExceeded
error CreatorToken__MaxPaymentExceeded(uint256 price, uint256 maxPayment)
CreatorToken__MinAcceptedPriceExceeded
error CreatorToken__MinAcceptedPriceExceeded(uint256 price, uint256 minAcceptedPrice)
CreatorToken__MinHoldingTimeNotReached
error CreatorToken__MinHoldingTimeNotReached(uint256 holdingTime, uint256 minHoldingTime)
CreatorToken__Unauthorized
error CreatorToken__Unauthorized(bytes32 reason, address caller)
creation bytecode
0x6101206040523480156200001257600080fd5b50604051620045ab380380620045ab8339810160408190526200003591620005e2565b8a8a600262000045838262000797565b50600362000054828262000797565b50899150506001600160a01b0381166200008157604051631745eecb60e21b815260040160405180910390fd5b856001600160a01b038116620000aa57604051631745eecb60e21b815260040160405180910390fd5b6109c4891115620000de57604051630bd0becd60e11b8152600481018a90526109c460248201526044015b60405180910390fd5b6109c4886001600160601b031611156200011f57604051630bd0becd60e11b81526001600160601b03891660048201526109c46024820152604401620000d5565b6109c48611156200014f57604051630bd0becd60e11b8152600481018790526109c46024820152604401620000d5565b600c6200015d8c8262000797565b50600a80546001600160a01b0319166001600160a01b038c1617905560c08990526001600160601b03881660e052620001978a896200020f565b600b80546001600160a01b03808a166001600160a01b031992831617909255610100889052868216608052600d80548784169216919091179055831660a052620001e18a62000310565b6001600160a01b03851615620001fc57620001fc8562000310565b505050505050505050505050506200088b565b6127106001600160601b03821611156200027f5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401620000d5565b6001600160a01b038216620002d75760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401620000d5565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600055565b60016008600082825462000325919062000863565b90915550506008546200033a90829062000357565b6001600960008282546200034f919062000863565b909155505050565b6001600160a01b038216620003af5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401620000d5565b6000818152600460205260409020546001600160a01b031615620004165760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000d5565b6000818152600460205260409020546001600160a01b0316156200047d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000d5565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200051057600080fd5b81516001600160401b03808211156200052d576200052d620004e8565b604051601f8301601f19908116603f01168101908282118183101715620005585762000558620004e8565b816040528381526020925086838588010111156200057557600080fd5b600091505b838210156200059957858201830151818301840152908201906200057a565b600093810190920192909252949350505050565b80516001600160a01b0381168114620005c557600080fd5b919050565b80516001600160601b0381168114620005c557600080fd5b60008060008060008060008060008060006101608c8e0312156200060557600080fd5b8b516001600160401b038111156200061c57600080fd5b6200062a8e828f01620004fe565b60208e0151909c5090506001600160401b038111156200064957600080fd5b620006578e828f01620004fe565b60408e0151909b5090506001600160401b038111156200067657600080fd5b620006848e828f01620004fe565b9950506200069560608d01620005ad565b975060808c01519650620006ac60a08d01620005ca565b9550620006bc60c08d01620005ad565b945060e08c01519350620006d46101008d01620005ad565b9250620006e56101208d01620005ad565b9150620006f66101408d01620005ad565b90509295989b509295989b9093969950565b600181811c908216806200071d57607f821691505b6020821081036200073e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200079257600081815260208120601f850160051c810160208610156200076d5750805b601f850160051c820191505b818110156200078e5782815560010162000779565b5050505b505050565b81516001600160401b03811115620007b357620007b3620004e8565b620007cb81620007c4845462000708565b8462000744565b602080601f831160018114620008035760008415620007ea5750858301515b600019600386901b1c1916600185901b1785556200078e565b600085815260208120601f198616915b82811015620008345788860151825594840194600190910190840162000813565b5085821015620008535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200088557634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05160c05160e05161010051613c95620009166000396000818161037f01526110e301526000818161047e0152610c6a0152600081816106fc01526110aa01526000818161055101528181610e9401528181610fbf015281816112c0015261139b0152600081816105fe015281816123000152818161268001526126cc0152613c956000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c80639138194911610186578063c87b56dd116100e3578063e4849b3211610097578063f1d6b54011610071578063f1d6b5401461071e578063f851a44014610731578063f8a8696f1461075157600080fd5b8063e4849b321461069b578063e985e9c5146106ae578063eeab8ea0146106f757600080fd5b8063d79875eb116100c8578063d79875eb14610662578063d96a094a14610675578063e2f273bd1461068857600080fd5b8063c87b56dd1461063c578063cce7ec131461064f57600080fd5b8063b187bd261161013a578063c05603741161011f578063c0560374146105f9578063c1292cc314610620578063c85381851461062957600080fd5b8063b187bd26146105c1578063b88d4fde146105e657600080fd5b806396336b301161016b57806396336b301461057b57806398cd61531461059b578063a22cb465146105ae57600080fd5b8063913819491461054c57806395d89b411461057357600080fd5b806323b872dd1161023f57806350b7a5fa116101f357806370a08231116101cd57806370a082311461051e57806379e58107146105315780638de9f9721461054457600080fd5b806350b7a5fa146104d057806352238fdd146104e35780636352211e1461050b57600080fd5b806330df46511161022457806330df4651146104565780633eb382f91461047957806342842e0e146104bd57600080fd5b806323b872dd146104045780632a55205a1461041757600080fd5b8063081812fc1161029657806318160ddd1161027b57806318160ddd146103d55780631a2084f1146103de578063211bd194146103f157600080fd5b8063081812fc146103af578063095ea7b3146103c257600080fd5b806302d05d3f116102c757806302d05d3f1461032057806306fdde0314610365578063076771111461037a57600080fd5b806301ffc9a7146102e357806302329a291461030b575b600080fd5b6102f66102f136600461332e565b610764565b60405190151581526020015b60405180910390f35b61031e610319366004613359565b610775565b005b600a546103409073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610302565b61036d6108e0565b60405161030291906133e4565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610302565b6103406103bd3660046133f7565b610972565b61031e6103d0366004613439565b6109a6565b6103a160095481565b61031e6103ec366004613463565b610b5d565b6103a16103ff36600461347e565b610ce1565b61031e6104123660046134a0565b610cf5565b61042a61042536600461347e565b610d96565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610302565b61045e610e8d565b60408051938452602084019290925290820152606001610302565b6104a07f000000000000000000000000000000000000000000000000000000000000000081565b6040516bffffffffffffffffffffffff9091168152602001610302565b61031e6104cb3660046134a0565b610f62565b61045e6104de3660046133f7565b610f7d565b6104f66104f13660046133f7565b61109f565b60408051928352602083019190915201610302565b6103406105193660046133f7565b611119565b6103a161052c366004613463565b6111a5565b61045e61053f3660046133f7565b611273565b61045e611394565b6103407f000000000000000000000000000000000000000000000000000000000000000081565b61036d6113ea565b600d546103409073ffffffffffffffffffffffffffffffffffffffff1681565b61031e6105a93660046135d0565b6113f9565b61031e6105bc366004613619565b6114f9565b600b546102f69074010000000000000000000000000000000000000000900460ff1681565b61031e6105f4366004613650565b611508565b6103407f000000000000000000000000000000000000000000000000000000000000000081565b6103a160085481565b6103a1610637366004613741565b6115b0565b61036d61064a3660046133f7565b6116ef565b6103a161065d366004613439565b611783565b6103a161067036600461347e565b61187a565b6103a16106833660046133f7565b611953565b61031e610696366004613463565b61195f565b6103a16106a93660046133f7565b611aa0565b6102f66106bc366004613786565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260076020908152604080832093909416825291909152205460ff1690565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b6103a161072c3660046137b9565b611aad565b600b546103409073ffffffffffffffffffffffffffffffffffffffff1681565b6103a161075f3660046137ee565b611aba565b600061076f82611bf8565b92915050565b600a54339073ffffffffffffffffffffffffffffffffffffffff1681148015906107ba5750600b5473ffffffffffffffffffffffffffffffffffffffff828116911614155b15610834576040517feb32bc380000000000000000000000000000000000000000000000000000000081527f6e6f742063726561746f72206f722061646d696e000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff821660248201526044015b60405180910390fd5b600b54604080517401000000000000000000000000000000000000000090920460ff1615158252831515602083015233908201527f6310d2775f6f97be8c03bbb6bbb5d8cff9eb3e1d780aa5b615713a06c55f298f9060600160405180910390a150600b805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6060600280546108ef90613821565b80601f016020809104026020016040519081016040528092919081815260200182805461091b90613821565b80156109685780601f1061093d57610100808354040283529160200191610968565b820191906000526020600020905b81548152906001019060200180831161094b57829003601f168201915b5050505050905090565b600061097d82611c9a565b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006109b182611119565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f7200000000000000000000000000000000000000000000000000000000000000606482015260840161082b565b3373ffffffffffffffffffffffffffffffffffffffff82161480610ac2575073ffffffffffffffffffffffffffffffffffffffff8116600090815260076020908152604080832033845290915290205460ff165b610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161082b565b610b588383611d28565b505050565b8073ffffffffffffffffffffffffffffffffffffffff8116610bab576040517f5d17bb2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5473ffffffffffffffffffffffffffffffffffffffff163314610c24576040517feb32bc380000000000000000000000000000000000000000000000000000000081527f6e6f742063726561746f72000000000000000000000000000000000000000000600482015233602482015260440161082b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055610c8e827f0000000000000000000000000000000000000000000000000000000000000000611dc8565b6040805133815273ffffffffffffffffffffffffffffffffffffffff841660208201527f3fd5fa996ec802a4343695754eb4922a2cbba99ad7b6fa1af73a2881d62d7ddd91015b60405180910390a15050565b6000610cee338484611aba565b9392505050565b610cff3382611f41565b610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f76656400000000000000000000000000000000000000606482015260840161082b565b610b58838383612001565b600082815260016020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16928201929092528291610e5157506040805180820190915260005473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610e75906bffffffffffffffffffffffff16876138a3565b610e7f91906138ba565b915196919550909350505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c89ea35d610ed66122fc565b600954610ee49060016138f5565b610eee9190613908565b6040518263ffffffff1660e01b8152600401610f0c91815260200190565b602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d919061391b565b9250610f588361109f565b9394909392509050565b610b5883838360405180602001604052806000815250611508565b600080600080610f8b6122fc565b600954610f989190613908565b905060008080805b888110156110935773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c89ea35d610fee8388613908565b6040518263ffffffff1660e01b815260040161100c91815260200190565b602060405180830381865afa158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d919061391b565b93506110588461109f565b909350915061106784896138f5565b975061107383886138f5565b965061107f82876138f5565b95508061108b81613934565b915050610fa0565b50505050509193909250565b6000806127106110cf7f0000000000000000000000000000000000000000000000000000000000000000856138a3565b6110d991906138ba565b91506127106111087f0000000000000000000000000000000000000000000000000000000000000000856138a3565b61111291906138ba565b9050915091565b60008181526004602052604081205473ffffffffffffffffffffffffffffffffffffffff168061076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161082b565b600073ffffffffffffffffffffffffffffffffffffffff821661124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e65720000000000000000000000000000000000000000000000606482015260840161082b565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b6000806000806112816122fc565b60095461128f9060016138f5565b6112999190613908565b905060008080805b888110156110935773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c89ea35d6112ef87846138f5565b6040518263ffffffff1660e01b815260040161130d91815260200190565b602060405180830381865afa15801561132a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134e919061391b565b93506113598461109f565b909350915061136884896138f5565b975061137483886138f5565b965061138082876138f5565b95508061138c81613934565b9150506112a1565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c89ea35d6113dd6122fc565b600954610eee9190613908565b6060600380546108ef90613821565b600a54339073ffffffffffffffffffffffffffffffffffffffff16811480159061143e5750600b5473ffffffffffffffffffffffffffffffffffffffff828116911614155b156114b3576040517feb32bc380000000000000000000000000000000000000000000000000000000081527f6e6f742063726561746f72206f722061646d696e000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8216602482015260440161082b565b7ffd07e2c2d6dc82f4d6b1b46f25e49eb888aba92d238fb40945856412cce2f2dd600c836040516114e592919061396c565b60405180910390a1600c610b588382613a77565b61150433838361234c565b5050565b6115123383611f41565b61159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f76656400000000000000000000000000000000000000606482015260840161082b565b6115aa84848484612479565b50505050565b60008060008060008060005b8851811015611624576115e78982815181106115da576115da613b91565b602002602001015161251c565b919850935091506115f887876138f5565b955061160483866138f5565b945061161082856138f5565b93508061161c81613934565b9150506115bc565b508495508686101561166c576040517f8af85c15000000000000000000000000000000000000000000000000000000008152600481018790526024810188905260440161082b565b600d546116909073ffffffffffffffffffffffffffffffffffffffff1633886127db565b600a54600d546116ba9173ffffffffffffffffffffffffffffffffffffffff9182169116866127db565b600b54600d546116e49173ffffffffffffffffffffffffffffffffffffffff9182169116856127db565b505050505092915050565b6060600c80546116fe90613821565b80601f016020809104026020016040519081016040528092919081815260200182805461172a90613821565b80156117775780601f1061174c57610100808354040283529160200191611777565b820191906000526020600020905b81548152906001019060200180831161175a57829003601f168201915b50505050509050919050565b600080600080611792866128af565b91945092509050806117a483856138f5565b6117ae91906138f5565b9350848411156117f4576040517fff5f8fe7000000000000000000000000000000000000000000000000000000008152600481018590526024810186905260440161082b565b600d546118199073ffffffffffffffffffffffffffffffffffffffff1633308661298e565b600a54600d546118459173ffffffffffffffffffffffffffffffffffffffff918216913391168561298e565b600b54600d546118719173ffffffffffffffffffffffffffffffffffffffff918216913391168461298e565b50505092915050565b60008060006118888561251c565b91945092509050838310156118d3576040517f8af85c15000000000000000000000000000000000000000000000000000000008152600481018490526024810185905260440161082b565b600d546118f79073ffffffffffffffffffffffffffffffffffffffff1633856127db565b600a54600d546119219173ffffffffffffffffffffffffffffffffffffffff9182169116846127db565b600b54600d5461194b9173ffffffffffffffffffffffffffffffffffffffff9182169116836127db565b505092915050565b600061076f3383611783565b8073ffffffffffffffffffffffffffffffffffffffff81166119ad576040517f5d17bb2c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5473ffffffffffffffffffffffffffffffffffffffff163314611a26576040517feb32bc380000000000000000000000000000000000000000000000000000000081527f6e6f742061646d696e0000000000000000000000000000000000000000000000600482015233602482015260440161082b565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040805133815260208101929092527f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9101610cd5565b600061076f82600061187a565b600061076f8260006115b0565b6000808080808080805b89811015611b1257611ad58b6128af565b91955093509150611ae684886138f5565b9650611af283876138f5565b9550611afe82866138f5565b945080611b0a81613934565b915050611ac4565b5083611b1e86886138f5565b611b2891906138f5565b965087871115611b6e576040517fff5f8fe7000000000000000000000000000000000000000000000000000000008152600481018890526024810189905260440161082b565b600d54611b939073ffffffffffffffffffffffffffffffffffffffff1633308961298e565b600a54600d54611bbf9173ffffffffffffffffffffffffffffffffffffffff918216913391168861298e565b600b54600d54611beb9173ffffffffffffffffffffffffffffffffffffffff918216913391168761298e565b5050505050509392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480611c8b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061076f575061076f826129ec565b60008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff16611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161082b565b50565b600081815260066020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611d8282611119565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6127106bffffffffffffffffffffffff82161115611e68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c65507269636500000000000000000000000000000000000000000000606482015260840161082b565b73ffffffffffffffffffffffffffffffffffffffff8216611ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640161082b565b6040805180820190915273ffffffffffffffffffffffffffffffffffffffff9092168083526bffffffffffffffffffffffff90911660209092018290527401000000000000000000000000000000000000000090910217600055565b600080611f4d83611119565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611fbb575073ffffffffffffffffffffffffffffffffffffffff80821660009081526007602090815260408083209388168352929052205460ff165b80611ff957508373ffffffffffffffffffffffffffffffffffffffff16611fe184610972565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661202182611119565b73ffffffffffffffffffffffffffffffffffffffff16146120c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161082b565b73ffffffffffffffffffffffffffffffffffffffff8216612166576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161082b565b8273ffffffffffffffffffffffffffffffffffffffff1661218682611119565b73ffffffffffffffffffffffffffffffffffffffff1614612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161082b565b600081815260066020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526005855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600490945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1615612341576002612344565b60015b60ff16905090565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161082b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526007602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612484848484612001565b61249084848484612a83565b6115aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161082b565b6000806000600b60149054906101000a900460ff1615612568576040517f032bebb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61257184611119565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461260457836125ad85611119565b6040517f785b88ac000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff16602482015233604482015260640161082b565b6000848152600e6020526040902054603c906126209042613908565b101561267c576000848152600e602052604090205461263f9042613908565b6040517f4f8c28c90000000000000000000000000000000000000000000000000000000081526004810191909152603c602482015260440161082b565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161580156126c457506009546001145b8061271157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161580159061271157506009546002145b90508015612751576009546040517f581d53d600000000000000000000000000000000000000000000000000000000815260040161082b91815260200190565b600061275b611394565b909550935090508261276d8583613908565b6127779190613908565b9450612784333088610cf5565b61278d86612c76565b6040805182815260208101869052908101849052869033907f490fdc1c23c0f3a84bf80a0384eaadcb9188c9ef71b9430da391a0e4c4c39bf69060600160405180910390a350509193909250565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b589084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612c9a565b6000806000600b60149054906101000a900460ff16156128fb576040517f032bebb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612903610e8d565b9194509250905061291384612da9565b600880546000908152600e6020908152604091829020429055915481518681529283018590529082018390529073ffffffffffffffffffffffffffffffffffffffff86169033907f2683a506cc521e11c368ce9c068585a91786a3cb7ab4089b602eb2835acb16399060600160405180910390a49193909250565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526115aa9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161282d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061076f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461076f565b600073ffffffffffffffffffffffffffffffffffffffff84163b15612c6b576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290612afa903390899088908890600401613bc0565b6020604051808303816000875af1925050508015612b53575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612b5091810190613c09565b60015b612c20573d808015612b81576040519150601f19603f3d011682016040523d82523d6000602084013e612b86565b606091505b508051600003612c18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161082b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611ff9565b506001949350505050565b612c7f81612de2565b600160096000828254612c929190613908565b909155505050565b6000612cfc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612dfc9092919063ffffffff16565b9050805160001480612d1d575080806020019051810190612d1d9190613c26565b610b58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161082b565b600160086000828254612dbc91906138f5565b92505081905550612dcf81600854612e0b565b600160096000828254612c9291906138f5565b612deb81613030565b600090815260016020526040812055565b6060611ff98484600085613108565b73ffffffffffffffffffffffffffffffffffffffff8216612e88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161082b565b60008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161082b565b60008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161082b565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260056020908152604080832080546001019055848352600490915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061303b82611119565b905061304682611119565b600083815260066020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff85168085526005845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526004909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60608247101561319a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161082b565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516131c39190613c43565b60006040518083038185875af1925050503d8060008114613200576040519150601f19603f3d011682016040523d82523d6000602084013e613205565b606091505b509150915061321687838387613221565b979650505050505050565b606083156132b75782516000036132b05773ffffffffffffffffffffffffffffffffffffffff85163b6132b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161082b565b5081611ff9565b611ff983838151156132cc5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082b91906133e4565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2557600080fd5b60006020828403121561334057600080fd5b8135610cee81613300565b8015158114611d2557600080fd5b60006020828403121561336b57600080fd5b8135610cee8161334b565b60005b83811015613391578181015183820152602001613379565b50506000910152565b600081518084526133b2816020860160208601613376565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cee602083018461339a565b60006020828403121561340957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461343457600080fd5b919050565b6000806040838503121561344c57600080fd5b61345583613410565b946020939093013593505050565b60006020828403121561347557600080fd5b610cee82613410565b6000806040838503121561349157600080fd5b50508035926020909101359150565b6000806000606084860312156134b557600080fd5b6134be84613410565b92506134cc60208501613410565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613552576135526134dc565b604052919050565b600067ffffffffffffffff831115613574576135746134dc565b6135a560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160161350b565b90508281528383830111156135b957600080fd5b828260208301376000602084830101529392505050565b6000602082840312156135e257600080fd5b813567ffffffffffffffff8111156135f957600080fd5b8201601f8101841361360a57600080fd5b611ff98482356020840161355a565b6000806040838503121561362c57600080fd5b61363583613410565b915060208301356136458161334b565b809150509250929050565b6000806000806080858703121561366657600080fd5b61366f85613410565b935061367d60208601613410565b925060408501359150606085013567ffffffffffffffff8111156136a057600080fd5b8501601f810187136136b157600080fd5b6136c08782356020840161355a565b91505092959194509250565b600082601f8301126136dd57600080fd5b8135602067ffffffffffffffff8211156136f9576136f96134dc565b8160051b61370882820161350b565b928352848101820192828101908785111561372257600080fd5b83870192505b8483101561321657823582529183019190830190613728565b6000806040838503121561375457600080fd5b823567ffffffffffffffff81111561376b57600080fd5b613777858286016136cc565b95602094909401359450505050565b6000806040838503121561379957600080fd5b6137a283613410565b91506137b060208401613410565b90509250929050565b6000602082840312156137cb57600080fd5b813567ffffffffffffffff8111156137e257600080fd5b611ff9848285016136cc565b60008060006060848603121561380357600080fd5b61380c84613410565b95602085013595506040909401359392505050565b600181811c9082168061383557607f821691505b60208210810361386e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761076f5761076f613874565b6000826138f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561076f5761076f613874565b8181038181111561076f5761076f613874565b60006020828403121561392d57600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361396557613965613874565b5060010190565b60408152600080845461397e81613821565b80604086015260606001808416600081146139a057600181146139d857613a09565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550613a09565b8960005260208060002060005b86811015613a005781548b82018701529084019082016139e5565b8a018501975050505b50505050508281036020840152613a20818561339a565b95945050505050565b601f821115610b5857600081815260208120601f850160051c81016020861015613a505750805b601f850160051c820191505b81811015613a6f57828155600101613a5c565b505050505050565b815167ffffffffffffffff811115613a9157613a916134dc565b613aa581613a9f8454613821565b84613a29565b602080601f831160018114613af85760008415613ac25750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555613a6f565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015613b4557888601518255948401946001909101908401613b26565b5085821015613b8157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152613bff608083018461339a565b9695505050505050565b600060208284031215613c1b57600080fd5b8151610cee81613300565b600060208284031215613c3857600080fd5b8151610cee8161334b565b60008251613c55818460208701613376565b919091019291505056fea26469706673582212205d99fea42c95efe2d98a3f16b2143142311b975c93c87669903510173a36a25664736f6c63430008140033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000016847aa1941b5f5172b2b5aebe5163442142dda000000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000244312d5330debd654fe1f4e353badac730d7b3c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ed4e862860bed51a9570b96d89af5e1b0efefed0000000000000000000000000872cd99ddcf4940438b6b5419ba1d92d35443730000000000000000000000000000000000000000000000000000000000000023406164616d372043726561746f7220546f6b656e206f6e204472616b756c612e617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074452414b554c41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042697066733a2f2f626166797265696865327a7965346b616f617374656f79656e6b6e6c726c35766a756b656376366934647a3775717476356376626e7a7133736465000000000000000000000000000000000000000000000000000000000000