203 txs
648 calls
constructor
constructor(address initialOwner)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getNFTsByOwner
viewfunction getNFTsByOwner(address ownerOfNFT) view returns (uint256[])
getOwnerOfNFT
viewfunction getOwnerOfNFT(uint256 tokenId) view returns (address)
getPowerOfNFT
viewfunction getPowerOfNFT(uint256 _id) view returns (uint256 power)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId)
mint
nonpayablefunction mint(uint256 tokenId, string _tokenURI, address to, uint256 power)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
transfer
nonpayablefunction transfer(address from, address to, uint256 tokenId)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040526000600a553480156200001657600080fd5b50604051620035873803806200358783398181016040528101906200003c91906200028d565b806040518060400160405280600681526020017f4d696e696e6700000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d4e4700000000000000000000000000000000000000000000000000000000008152508160009081620000ba919062000539565b508060019081620000cc919062000539565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001445760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200013b919062000631565b60405180910390fd5b62000155816200015d60201b60201c565b50506200064e565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002558262000228565b9050919050565b620002678162000248565b81146200027357600080fd5b50565b60008151905062000287816200025c565b92915050565b600060208284031215620002a657620002a562000223565b5b6000620002b68482850162000276565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200034157607f821691505b602082108103620003575762000356620002f9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000382565b620003cd868362000382565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200041a620004146200040e84620003e5565b620003ef565b620003e5565b9050919050565b6000819050919050565b6200043683620003f9565b6200044e620004458262000421565b8484546200038f565b825550505050565b600090565b6200046562000456565b620004728184846200042b565b505050565b5b818110156200049a576200048e6000826200045b565b60018101905062000478565b5050565b601f821115620004e957620004b3816200035d565b620004be8462000372565b81016020851015620004ce578190505b620004e6620004dd8562000372565b83018262000477565b50505b505050565b600082821c905092915050565b60006200050e60001984600802620004ee565b1980831691505092915050565b6000620005298383620004fb565b9150826002028217905092915050565b6200054482620002bf565b67ffffffffffffffff81111562000560576200055f620002ca565b5b6200056c825462000328565b620005798282856200049e565b600060209050601f831160018114620005b157600084156200059c578287015190505b620005a885826200051b565b86555062000618565b601f198416620005c1866200035d565b60005b82811015620005eb57848901518255600182019150602085019450602081019050620005c4565b868310156200060b578489015162000607601f891682620004fb565b8355505b6001600288020188555050505b505050505050565b6200062b8162000248565b82525050565b600060208201905062000648600083018462000620565b92915050565b612f29806200065e6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637b71b671116100b8578063beabacc81161007c578063beabacc81461035f578063c87b56dd1461037b578063e2afe8b3146103ab578063e985e9c5146103db578063ea01ea221461040b578063f2fde38b1461043b57610142565b80637b71b671146102cf5780638da5cb5b146102eb57806395d89b4114610309578063a22cb46514610327578063b88d4fde1461034357610142565b806323b872dd1161010a57806323b872dd1461021157806342842e0e1461022d57806342966c68146102495780636352211e1461026557806370a0823114610295578063715018a6146102c557610142565b806301ffc9a71461014757806306fdde0314610177578063081812fc14610195578063095ea7b3146101c557806309a32e1c146101e1575b600080fd5b610161600480360381019061015c91906120c4565b610457565b60405161016e919061210c565b60405180910390f35b61017f6104b8565b60405161018c91906121b7565b60405180910390f35b6101af60048036038101906101aa919061220f565b61054a565b6040516101bc919061227d565b60405180910390f35b6101df60048036038101906101da91906122c4565b610566565b005b6101fb60048036038101906101f6919061220f565b61057c565b6040516102089190612313565b60405180910390f35b61022b6004803603810190610226919061232e565b610599565b005b6102476004803603810190610242919061232e565b61069b565b005b610263600480360381019061025e919061220f565b6106bb565b005b61027f600480360381019061027a919061220f565b6107ee565b60405161028c919061227d565b60405180910390f35b6102af60048036038101906102aa9190612381565b610800565b6040516102bc9190612313565b60405180910390f35b6102cd6108ba565b005b6102e960048036038101906102e491906124e3565b6108ce565b005b6102f3610978565b604051610300919061227d565b60405180910390f35b6103116109a2565b60405161031e91906121b7565b60405180910390f35b610341600480360381019061033c9190612592565b610a34565b005b61035d60048036038101906103589190612673565b610a4a565b005b6103796004803603810190610374919061232e565b610a67565b005b6103956004803603810190610390919061220f565b610cab565b6040516103a291906121b7565b60405180910390f35b6103c560048036038101906103c09190612381565b610dbe565b6040516103d291906127b4565b60405180910390f35b6103f560048036038101906103f091906127d6565b610e55565b604051610402919061210c565b60405180910390f35b6104256004803603810190610420919061220f565b610ee9565b604051610432919061227d565b60405180910390f35b61045560048036038101906104509190612381565b610efb565b005b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104b157506104b082610f81565b5b9050919050565b6060600080546104c790612845565b80601f01602080910402602001604051908101604052809291908181526020018280546104f390612845565b80156105405780601f1061051557610100808354040283529160200191610540565b820191906000526020600020905b81548152906001019060200180831161052357829003601f168201915b5050505050905090565b600061055582611063565b5061055f826110eb565b9050919050565b6105788282610573611128565b611130565b5050565b600060096000838152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361060b5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610602919061227d565b60405180910390fd5b600061061f838361061a611128565b611142565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610695578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161068c93929190612876565b60405180910390fd5b50505050565b6106b683838360405180602001604052806000815250610a4a565b505050565b6106c361135c565b60006106ce826107ee565b90506106d9826113e3565b6106e4826000611469565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b81805490508110156107e8578382828154811061074a576107496128ad565b5b9060005260206000200154036107d557816001838054905061076c919061290b565b8154811061077d5761077c6128ad565b5b906000526020600020015482828154811061079b5761079a6128ad565b5b9060005260206000200181905550818054806107ba576107b961293f565b5b600190038181906000526020600020016000905590556107e8565b80806107e09061296e565b91505061072a565b50505050565b60006107f982611063565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108735760006040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161086a919061227d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108c261135c565b6108cc6000611485565b565b6108d661135c565b6108e08482611469565b6108ea828561154b565b6108f48484611644565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020849080600181540180825580915050600190039060005260206000200160009091909190915055600a600081548092919061096d9061296e565b919050555050505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546109b190612845565b80601f01602080910402602001604051908101604052809291908181526020018280546109dd90612845565b8015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b820191906000526020600020905b815481529060010190602001808311610a0d57829003601f168201915b5050505050905090565b610a46610a3f611128565b83836116a0565b5050565b610a55848484610599565b610a618484848461180f565b50505050565b610a7a610a73826107ee565b33836119c6565b610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090612a28565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610ad9826107ee565b73ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690612aba565b60405180910390fd5b610b3a838383610599565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015610c3e5782828281548110610ba057610b9f6128ad565b5b906000526020600020015403610c2b578160018380549050610bc2919061290b565b81548110610bd357610bd26128ad565b5b9060005260206000200154828281548110610bf157610bf06128ad565b5b906000526020600020018190555081805480610c1057610c0f61293f565b5b60019003818190600052602060002001600090559055610c3e565b8080610c369061296e565b915050610b80565b50600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091505550505050565b6060610cb682611063565b506000600660008481526020019081526020016000208054610cd790612845565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0390612845565b8015610d505780601f10610d2557610100808354040283529160200191610d50565b820191906000526020600020905b815481529060010190602001808311610d3357829003601f168201915b505050505090506000610d61611a87565b90506000815103610d76578192505050610db9565b600082511115610dab578082604051602001610d93929190612b16565b60405160208183030381529060405292505050610db9565b610db484611a9e565b925050505b919050565b6060600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610e4957602002820191906000526020600020905b815481526020019060010190808311610e35575b50505050509050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610ef4826107ee565b9050919050565b610f0361135c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f755760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f6c919061227d565b60405180910390fd5b610f7e81611485565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061104c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061105c575061105b82611b07565b5b9050919050565b60008061106f83611b71565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e257826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016110d99190612313565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b61113d8383836001611bae565b505050565b60008061114e84611b71565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111905761118f818486611d73565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611221576111d2600085600080611bae565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146112a4576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b611364611128565b73ffffffffffffffffffffffffffffffffffffffff16611382610978565b73ffffffffffffffffffffffffffffffffffffffff16146113e1576113a5611128565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113d8919061227d565b60405180910390fd5b565b60006113f26000836000611142565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361146557816040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161145c9190612313565b60405180910390fd5b5050565b8060096000848152602001908152602001600020819055505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115bd5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016115b4919061227d565b60405180910390fd5b60006115cb83836000611142565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461163f5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611636919061227d565b60405180910390fd5b505050565b806006600084815260200190815260200160002090816116649190612ce6565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516116949190612313565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171157816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611708919061227d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611802919061210c565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156119c0578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611853611128565b8685856040518563ffffffff1660e01b81526004016118759493929190612e0d565b6020604051808303816000875af19250505080156118b157506040513d601f19601f820116820180604052508101906118ae9190612e6e565b60015b611935573d80600081146118e1576040519150601f19603f3d011682016040523d82523d6000602084013e6118e6565b606091505b50600081510361192d57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611924919061227d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146119be57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016119b5919061227d565b60405180910390fd5b505b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a7e57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a3f5750611a3e8484610e55565b5b80611a7d57508273ffffffffffffffffffffffffffffffffffffffff16611a65836110eb565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b606060405180602001604052806000815250905090565b6060611aa982611063565b506000611ab4611a87565b90506000815111611ad45760405180602001604052806000815250611aff565b80611ade84611e37565b604051602001611aef929190612b16565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611be75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d1b576000611bf784611063565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c6257508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611c755750611c738184610e55565b155b15611cb757826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611cae919061227d565b60405180910390fd5b8115611d1957838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611d7e8383836119c6565b611e3257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611df357806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611dea9190612313565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611e29929190612e9b565b60405180910390fd5b505050565b606060006001611e4684611f05565b01905060008167ffffffffffffffff811115611e6557611e646123b8565b5b6040519080825280601f01601f191660200182016040528015611e975781602001600182028036833780820191505090505b509050600082602001820190505b600115611efa578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611eee57611eed612ec4565b5b04945060008503611ea5575b819350505050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611f63577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611f5957611f58612ec4565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611fa0576d04ee2d6d415b85acef81000000008381611f9657611f95612ec4565b5b0492506020810190505b662386f26fc100008310611fcf57662386f26fc100008381611fc557611fc4612ec4565b5b0492506010810190505b6305f5e1008310611ff8576305f5e1008381611fee57611fed612ec4565b5b0492506008810190505b612710831061201d57612710838161201357612012612ec4565b5b0492506004810190505b60648310612040576064838161203657612035612ec4565b5b0492506002810190505b600a831061204f576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6120a18161206c565b81146120ac57600080fd5b50565b6000813590506120be81612098565b92915050565b6000602082840312156120da576120d9612062565b5b60006120e8848285016120af565b91505092915050565b60008115159050919050565b612106816120f1565b82525050565b600060208201905061212160008301846120fd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612161578082015181840152602081019050612146565b60008484015250505050565b6000601f19601f8301169050919050565b600061218982612127565b6121938185612132565b93506121a3818560208601612143565b6121ac8161216d565b840191505092915050565b600060208201905081810360008301526121d1818461217e565b905092915050565b6000819050919050565b6121ec816121d9565b81146121f757600080fd5b50565b600081359050612209816121e3565b92915050565b60006020828403121561222557612224612062565b5b6000612233848285016121fa565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122678261223c565b9050919050565b6122778161225c565b82525050565b6000602082019050612292600083018461226e565b92915050565b6122a18161225c565b81146122ac57600080fd5b50565b6000813590506122be81612298565b92915050565b600080604083850312156122db576122da612062565b5b60006122e9858286016122af565b92505060206122fa858286016121fa565b9150509250929050565b61230d816121d9565b82525050565b60006020820190506123286000830184612304565b92915050565b60008060006060848603121561234757612346612062565b5b6000612355868287016122af565b9350506020612366868287016122af565b9250506040612377868287016121fa565b9150509250925092565b60006020828403121561239757612396612062565b5b60006123a5848285016122af565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123f08261216d565b810181811067ffffffffffffffff8211171561240f5761240e6123b8565b5b80604052505050565b6000612422612058565b905061242e82826123e7565b919050565b600067ffffffffffffffff82111561244e5761244d6123b8565b5b6124578261216d565b9050602081019050919050565b82818337600083830152505050565b600061248661248184612433565b612418565b9050828152602081018484840111156124a2576124a16123b3565b5b6124ad848285612464565b509392505050565b600082601f8301126124ca576124c96123ae565b5b81356124da848260208601612473565b91505092915050565b600080600080608085870312156124fd576124fc612062565b5b600061250b878288016121fa565b945050602085013567ffffffffffffffff81111561252c5761252b612067565b5b612538878288016124b5565b9350506040612549878288016122af565b925050606061255a878288016121fa565b91505092959194509250565b61256f816120f1565b811461257a57600080fd5b50565b60008135905061258c81612566565b92915050565b600080604083850312156125a9576125a8612062565b5b60006125b7858286016122af565b92505060206125c88582860161257d565b9150509250929050565b600067ffffffffffffffff8211156125ed576125ec6123b8565b5b6125f68261216d565b9050602081019050919050565b6000612616612611846125d2565b612418565b905082815260208101848484011115612632576126316123b3565b5b61263d848285612464565b509392505050565b600082601f83011261265a576126596123ae565b5b813561266a848260208601612603565b91505092915050565b6000806000806080858703121561268d5761268c612062565b5b600061269b878288016122af565b94505060206126ac878288016122af565b93505060406126bd878288016121fa565b925050606085013567ffffffffffffffff8111156126de576126dd612067565b5b6126ea87828801612645565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61272b816121d9565b82525050565b600061273d8383612722565b60208301905092915050565b6000602082019050919050565b6000612761826126f6565b61276b8185612701565b935061277683612712565b8060005b838110156127a757815161278e8882612731565b975061279983612749565b92505060018101905061277a565b5085935050505092915050565b600060208201905081810360008301526127ce8184612756565b905092915050565b600080604083850312156127ed576127ec612062565b5b60006127fb858286016122af565b925050602061280c858286016122af565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061285d57607f821691505b6020821081036128705761286f612816565b5b50919050565b600060608201905061288b600083018661226e565b6128986020830185612304565b6128a5604083018461226e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612916826121d9565b9150612921836121d9565b9250828203905081811115612939576129386128dc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000612979826121d9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129ab576129aa6128dc565b5b600182019050919050565b7f43616c6c6572206973206e6f7420617574686f72697a656420746f207472616e60008201527f73666572207468697320746f6b656e0000000000000000000000000000000000602082015250565b6000612a12602f83612132565b9150612a1d826129b6565b604082019050919050565b60006020820190508181036000830152612a4181612a05565b9050919050565b7f546f6b656e206973206e6f74206f776e6564206279202766726f6d272061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612aa4602483612132565b9150612aaf82612a48565b604082019050919050565b60006020820190508181036000830152612ad381612a97565b9050919050565b600081905092915050565b6000612af082612127565b612afa8185612ada565b9350612b0a818560208601612143565b80840191505092915050565b6000612b228285612ae5565b9150612b2e8284612ae5565b91508190509392505050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612b9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b5f565b612ba68683612b5f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612be3612bde612bd9846121d9565b612bbe565b6121d9565b9050919050565b6000819050919050565b612bfd83612bc8565b612c11612c0982612bea565b848454612b6c565b825550505050565b600090565b612c26612c19565b612c31818484612bf4565b505050565b5b81811015612c5557612c4a600082612c1e565b600181019050612c37565b5050565b601f821115612c9a57612c6b81612b3a565b612c7484612b4f565b81016020851015612c83578190505b612c97612c8f85612b4f565b830182612c36565b50505b505050565b600082821c905092915050565b6000612cbd60001984600802612c9f565b1980831691505092915050565b6000612cd68383612cac565b9150826002028217905092915050565b612cef82612127565b67ffffffffffffffff811115612d0857612d076123b8565b5b612d128254612845565b612d1d828285612c59565b600060209050601f831160018114612d505760008415612d3e578287015190505b612d488582612cca565b865550612db0565b601f198416612d5e86612b3a565b60005b82811015612d8657848901518255600182019150602085019450602081019050612d61565b86831015612da35784890151612d9f601f891682612cac565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b6000612ddf82612db8565b612de98185612dc3565b9350612df9818560208601612143565b612e028161216d565b840191505092915050565b6000608082019050612e22600083018761226e565b612e2f602083018661226e565b612e3c6040830185612304565b8181036060830152612e4e8184612dd4565b905095945050505050565b600081519050612e6881612098565b92915050565b600060208284031215612e8457612e83612062565b5b6000612e9284828501612e59565b91505092915050565b6000604082019050612eb0600083018561226e565b612ebd6020830184612304565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122055b0f06e2b5bf7a4f353c1a8fa981290748d32d773304060178375ca41b7a9e564736f6c6343000814003300000000000000000000000082503946e026e9f3c82a5a494e6f27fbfd3f7350