17 txs
18 calls
constructor
constructor(address _compostDataUpdater)
functions
approve
purefunction approve(address, uint256) pure
badgeCount
viewfunction badgeCount() view returns (uint8)
badgeRegistry
viewfunction badgeRegistry(uint8) view returns (string name, string svgData, string scale)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
compostDataUpdater
viewfunction compostDataUpdater() view returns (address)
compostedTokens
viewfunction compostedTokens(address) view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getUserBadges
viewfunction getUserBadges(address user) view returns (uint8[])
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)
setApprovalForAll
purefunction setApprovalForAll(address, bool) pure
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
transferFrom
purefunction transferFrom(address, address, uint256) pure
userBadgeList
viewfunction userBadgeList(address, uint256) view returns (uint8)
userBadges
viewfunction userBadges(address, uint8) view returns (bool)
userNftId
viewfunction userNftId(address) view returns (uint256)
batchUpdateUserBadges
nonpayablefunction batchUpdateUserBadges(address[] users, uint8[][] userBadgeIds)
registerBadge
nonpayablefunction registerBadge(string name, string svgData, string scale)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setCompostDataUpdater
nonpayablefunction setCompostDataUpdater(address newUpdater)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateCompostDataAndMint
nonpayablefunction updateCompostDataAndMint(address user, uint256 totalComposted, uint8[] userBadgeIds)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BadgeAdded
event BadgeAdded(uint8 indexed badgeId, string name)
BadgeAssigned
event BadgeAssigned(address indexed user, uint8 indexed badgeId)
NFTUpdated
event NFTUpdated(address indexed user, uint256 tokenId, uint256 totalComposted)
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)
SoulboundTokenCannotBeTransferred
error SoulboundTokenCannotBeTransferred()
StringsInsufficientHexLength
error StringsInsufficientHexLength(uint256 value, uint256 length)
creation bytecode
0x608060405260016009555f600b5f6101000a81548160ff021916908360ff16021790555034801561002e575f80fd5b506040516174dc3803806174dc833981810160405281019061005091906106c4565b336040518060400160405280601781526020017f4d657461466163746f72792076312050617373706f72740000000000000000008152506040518060400160405280600481526020017f4d46763100000000000000000000000000000000000000000000000000000000815250815f90816100cb9190610929565b5080600190816100db9190610929565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361014e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101459190610a07565b60405180910390fd5b61015d8161049760201b60201c565b5080600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102346040518060400160405280600f81526020017f44414f20436f6e7472696275746f720000000000000000000000000000000000815250604051806102800160405280610246815260200161729661024691396040518060400160405280600481526020017f302e32320000000000000000000000000000000000000000000000000000000081525061055a60201b60201c565b506102cb6040518060400160405280600881526020017f44657369676e657200000000000000000000000000000000000000000000000081525060405180610180016040528061015c815260200161713a61015c91396040518060400160405280600581526020017f302e30343200000000000000000000000000000000000000000000000000000081525061055a60201b60201c565b506103626040518060400160405280600f81526020017f456c69746520436f6c6c6563746f7200000000000000000000000000000000008152506040518061018001604052806101438152602001616af761014391396040518060400160405280600381526020017f312e31000000000000000000000000000000000000000000000000000000000081525061055a60201b60201c565b506103f96040518060400160405280601381526020017f4469616d6f6e642048616e6420486f646c6572000000000000000000000000008152506040518061018001604052806101568152602001616fe461015691396040518060400160405280600581526020017f302e30343200000000000000000000000000000000000000000000000000000081525061055a60201b60201c565b506104906040518060400160405280600281526020017f4c50000000000000000000000000000000000000000000000000000000000000815250604051806103e001604052806103aa8152602001616c3a6103aa91396040518060400160405280600381526020017f302e38000000000000000000000000000000000000000000000000000000000081525061055a60201b60201c565b5050610b07565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051806060016040528085815260200184815260200183815250600a5f600b5f9054906101000a900460ff1660ff1660ff1681526020019081526020015f205f820151815f0190816105ae9190610929565b5060208201518160010190816105c49190610929565b5060408201518160020190816105da9190610929565b50905050600b5f9054906101000a900460ff1660ff167f22b3a326d7fb5007d6051c07c97c3420d96a60e3c1498dad724cdb4f7830e2298560405161061f9190610a86565b60405180910390a2600b5f81819054906101000a900460ff168092919061064590610adf565b91906101000a81548160ff021916908360ff16021790555090509392505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106938261066a565b9050919050565b6106a381610689565b81146106ad575f80fd5b50565b5f815190506106be8161069a565b92915050565b5f602082840312156106d9576106d8610666565b5b5f6106e6848285016106b0565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061076a57607f821691505b60208210810361077d5761077c610726565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107a4565b6107e986836107a4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61082d61082861082384610801565b61080a565b610801565b9050919050565b5f819050919050565b61084683610813565b61085a61085282610834565b8484546107b0565b825550505050565b5f90565b61086e610862565b61087981848461083d565b505050565b5b8181101561089c576108915f82610866565b60018101905061087f565b5050565b601f8211156108e1576108b281610783565b6108bb84610795565b810160208510156108ca578190505b6108de6108d685610795565b83018261087e565b50505b505050565b5f82821c905092915050565b5f6109015f19846008026108e6565b1980831691505092915050565b5f61091983836108f2565b9150826002028217905092915050565b610932826106ef565b67ffffffffffffffff81111561094b5761094a6106f9565b5b6109558254610753565b6109608282856108a0565b5f60209050601f831160018114610991575f841561097f578287015190505b610989858261090e565b8655506109f0565b601f19841661099f86610783565b5f5b828110156109c6578489015182556001820191506020850194506020810190506109a1565b868310156109e357848901516109df601f8916826108f2565b8355505b6001600288020188555050505b505050505050565b610a0181610689565b82525050565b5f602082019050610a1a5f8301846109f8565b92915050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610a58826106ef565b610a628185610a20565b9350610a72818560208601610a30565b610a7b81610a3e565b840191505092915050565b5f6020820190508181035f830152610a9e8184610a4e565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff82169050919050565b5f610ae982610ad3565b915060ff8203610afc57610afb610aa6565b5b600182019050919050565b615fe380610b145f395ff3fe608060405234801561000f575f80fd5b50600436106101c2575f3560e01c806370a08231116100f7578063b7653d8b11610095578063cdc09c801161006f578063cdc09c8014610528578063da8679bb14610544578063e985e9c514610574578063f2fde38b146105a4576101c2565b8063b7653d8b146104c0578063b88d4fde146104dc578063c87b56dd146104f8576101c2565b80638b93bf18116100d15780638b93bf18146104385780638da5cb5b1461046857806395d89b4114610486578063a22cb465146104a4576101c2565b806370a08231146103e2578063715018a6146104125780638a1e1f821461041c576101c2565b80632a2ce0ab1161016457806342842e0e1161013e57806342842e0e146103485780635b80664514610364578063619a3098146103825780636352211e146103b2576101c2565b80632a2ce0ab146102c857806337c245fe146102e65780633ee5103914610316576101c2565b8063095ea7b3116101a0578063095ea7b3146102445780630b507945146102605780630eb842071461027c57806323b872dd146102ac576101c2565b806301ffc9a7146101c657806306fdde03146101f6578063081812fc14610214575b5f80fd5b6101e060048036038101906101db9190613617565b6105c0565b6040516101ed919061365c565b60405180910390f35b6101fe6106a1565b60405161020b91906136e5565b60405180910390f35b61022e60048036038101906102299190613738565b610730565b60405161023b91906137a2565b60405180910390f35b61025e600480360381019061025991906137e5565b61074b565b005b61027a60048036038101906102759190613884565b61077d565b005b610296600480360381019061029191906138f5565b610bed565b6040516102a3919061392f565b60405180910390f35b6102c660048036038101906102c19190613948565b610c02565b005b6102d0610c34565b6040516102dd91906137a2565b60405180910390f35b61030060048036038101906102fb91906138f5565b610c59565b60405161030d9190613a5b565b60405180910390f35b610330600480360381019061032b9190613aa5565b610d10565b60405161033f93929190613ad0565b60405180910390f35b610362600480360381019061035d9190613948565b610ec8565b005b61036c610ee7565b6040516103799190613b29565b60405180910390f35b61039c600480360381019061039791906138f5565b610ef9565b6040516103a9919061392f565b60405180910390f35b6103cc60048036038101906103c79190613738565b610f0e565b6040516103d991906137a2565b60405180910390f35b6103fc60048036038101906103f791906138f5565b610f1f565b604051610409919061392f565b60405180910390f35b61041a610fd5565b005b61043660048036038101906104319190613b97565b610fe8565b005b610452600480360381019061044d9190613c47565b6110cd565b60405161045f919061365c565b60405180910390f35b6104706110f7565b60405161047d91906137a2565b60405180910390f35b61048e61111f565b60405161049b91906136e5565b60405180910390f35b6104be60048036038101906104b99190613caf565b6111af565b005b6104da60048036038101906104d59190613d97565b6111e1565b005b6104f660048036038101906104f19190613f3d565b611626565b005b610512600480360381019061050d9190613738565b61164b565b60405161051f91906136e5565b60405180910390f35b610542600480360381019061053d91906138f5565b611ad0565b005b61055e600480360381019061055991906137e5565b611b89565b60405161056b9190613b29565b60405180910390f35b61058e60048036038101906105899190613fbd565b611bc7565b60405161059b919061365c565b60405180910390f35b6105be60048036038101906105b991906138f5565b611c55565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061068a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061069a575061069982611cd9565b5b9050919050565b60605f80546106af90614028565b80601f01602080910402602001604051908101604052809291908181526020018280546106db90614028565b80156107265780601f106106fd57610100808354040283529160200191610726565b820191905f5260205f20905b81548152906001019060200180831161070957829003601f168201915b5050505050905090565b5f61073a82611d42565b5061074482611dc8565b9050919050565b6040517f0701eeb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610785611e01565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036107f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ea906140a2565b60405180910390fd5b5f8311610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c90614130565b60405180910390fd5b8260075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f5b82829050811015610aa6575f8383838181106108985761089761414e565b5b90506020020160208101906108ad9190613aa5565b9050600b5f9054906101000a900460ff1660ff168160ff1610610905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fc906141c5565b60405180910390fd5b600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8260ff1660ff1681526020019081526020015f205f9054906101000a900460ff16610a98576001600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8360ff1660ff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090602091828204019190069091909190916101000a81548160ff021916908360ff1602179055508060ff168673ffffffffffffffffffffffffffffffffffffffff167f301251a7bbcb4e9641048288d15dd00cd9573b200a6f44bd91b403ebff1be2c460405160405180910390a35b508080600101915050610879565b505f8060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610b555760095f815480929190610afe90614210565b919050559050610b0e8582611e92565b8060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610b96565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b8473ffffffffffffffffffffffffffffffffffffffff167f2cd30ccad40ccac7f2dc8dabb3053c6018c812dafe0b25de0c40fd273063c21c8286604051610bde929190614257565b60405180910390a25050505050565b6008602052805f5260405f205f915090505481565b6040517f0701eeb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015610d0457602002820191905f5260205f20905f905b82829054906101000a900460ff1660ff16815260200190600101906020825f01049283019260010382029150808411610cce5790505b50505050509050919050565b600a602052805f5260405f205f91509050805f018054610d2f90614028565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5b90614028565b8015610da65780601f10610d7d57610100808354040283529160200191610da6565b820191905f5260205f20905b815481529060010190602001808311610d8957829003601f168201915b505050505090806001018054610dbb90614028565b80601f0160208091040260200160405190810160405280929190818152602001828054610de790614028565b8015610e325780601f10610e0957610100808354040283529160200191610e32565b820191905f5260205f20905b815481529060010190602001808311610e1557829003601f168201915b505050505090806002018054610e4790614028565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7390614028565b8015610ebe5780601f10610e9557610100808354040283529160200191610ebe565b820191905f5260205f20905b815481529060010190602001808311610ea157829003601f168201915b5050505050905083565b610ee283838360405180602001604052805f815250611626565b505050565b600b5f9054906101000a900460ff1681565b6007602052805f5260405f205f915090505481565b5f610f1882611d42565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f90575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610f8791906137a2565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fdd611f85565b610fe65f61200c565b565b610ff0611f85565b6110c486868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505084848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050506120cf565b50505050505050565b600c602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461112e90614028565b80601f016020809104026020016040519081016040528092919081815260200182805461115a90614028565b80156111a55780601f1061117c576101008083540402835291602001916111a5565b820191905f5260205f20905b81548152906001019060200180831161118857829003601f168201915b5050505050905090565b6040517f0701eeb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e9611e01565b818190508484905014611231576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611228906142c8565b60405180910390fd5b5f8484905011611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d90614330565b60405180910390fd5b5f5b8484905081101561161f575f8585838181106112975761129661414e565b5b90506020020160208101906112ac91906138f5565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611313906140a2565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139290614398565b60405180910390fd5b5f5b8484848181106113b0576113af61414e565b5b90506020028101906113c291906143c2565b9050811015611610575f8585858181106113df576113de61414e565b5b90506020028101906113f191906143c2565b838181106114025761140161414e565b5b90506020020160208101906114179190613aa5565b9050600b5f9054906101000a900460ff1660ff168160ff161061146f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611466906141c5565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8260ff1660ff1681526020019081526020015f205f9054906101000a900460ff16611602576001600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8360ff1660ff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090602091828204019190069091909190916101000a81548160ff021916908360ff1602179055508060ff168373ffffffffffffffffffffffffffffffffffffffff167f301251a7bbcb4e9641048288d15dd00cd9573b200a6f44bd91b403ebff1be2c460405160405180910390a35b50808060010191505061139d565b50508080600101915050611278565b5050505050565b611631848484610c02565b61164561163c6121db565b858585856121e2565b50505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1661166d8361238e565b73ffffffffffffffffffffffffffffffffffffffff16036116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba9061446e565b60405180910390fd5b5f6116cd8361238e565b90505f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156117ba57602002820191905f5260205f20905f905b82829054906101000a900460ff1660ff16815260200190600101906020825f010492830192600103820291508084116117845790505b505050505090505f6117cc84846123c7565b90505f6117d882612412565b6040516020016117e89190614510565b60405160208183030381529060405290505f6118038561243f565b60405160200161181391906145eb565b60405160208183030381529060405290505f5b8451811015611a52575f600a5f8784815181106118465761184561414e565b5b602002602001015160ff1660ff1681526020019081526020015f206040518060600160405290815f8201805461187b90614028565b80601f01602080910402602001604051908101604052809291908181526020018280546118a790614028565b80156118f25780601f106118c9576101008083540402835291602001916118f2565b820191905f5260205f20905b8154815290600101906020018083116118d557829003601f168201915b5050505050815260200160018201805461190b90614028565b80601f016020809104026020016040519081016040528092919081815260200182805461193790614028565b80156119825780601f1061195957610100808354040283529160200191611982565b820191905f5260205f20905b81548152906001019060200180831161196557829003601f168201915b5050505050815260200160028201805461199b90614028565b80601f01602080910402602001604051908101604052809291908181526020018280546119c790614028565b8015611a125780601f106119e957610100808354040283529160200191611a12565b820191905f5260205f20905b8154815290600101906020018083116119f557829003601f168201915b505050505081525050905082815f0151604051602001611a339291906146ef565b6040516020818303038152906040529250508080600101915050611826565b5080604051602001611a649190614772565b60405160208183030381529060405290505f8183604051602001611a89929190614aa8565b6040516020818303038152906040529050611aa381612412565b604051602001611ab39190614b57565b604051602081830303815290604052975050505050505050919050565b611ad8611f85565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90614bc2565b60405180910390fd5b80600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d602052815f5260405f208181548110611ba2575f80fd5b905f5260205f209060209182820401919006915091509054906101000a900460ff1681565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611c5d611f85565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ccd575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611cc491906137a2565b60405180910390fd5b611cd68161200c565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80611d4d8361238e565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dbf57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611db6919061392f565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790614c50565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f02575f6040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611ef991906137a2565b60405180910390fd5b5f611f0e83835f6124f9565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611f80575f6040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611f7791906137a2565b60405180910390fd5b505050565b611f8d6121db565b73ffffffffffffffffffffffffffffffffffffffff16611fab6110f7565b73ffffffffffffffffffffffffffffffffffffffff161461200a57611fce6121db565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161200191906137a2565b60405180910390fd5b565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051806060016040528085815260200184815260200183815250600a5f600b5f9054906101000a900460ff1660ff1660ff1681526020019081526020015f205f820151815f0190816121239190614e0b565b5060208201518160010190816121399190614e0b565b50604082015181600201908161214f9190614e0b565b50905050600b5f9054906101000a900460ff1660ff167f22b3a326d7fb5007d6051c07c97c3420d96a60e3c1498dad724cdb4f7830e2298560405161219491906136e5565b60405180910390a2600b5f81819054906101000a900460ff16809291906121ba90614eda565b91906101000a81548160ff021916908360ff16021790555090509392505050565b5f33905090565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115612387578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b81526004016122409493929190614f4a565b6020604051808303815f875af192505050801561227b57506040513d601f19601f820116820180604052508101906122789190614fa8565b60015b6122fc573d805f81146122a9576040519150601f19603f3d011682016040523d82523d5f602084013e6122ae565b606091505b505f8151036122f457836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016122eb91906137a2565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461238557836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161237c91906137a2565b60405180910390fd5b505b5050505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60605f6123d384612704565b90506123de8361243f565b6123e785612a86565b826040516020016123fa939291906158c1565b60405160208183030381529060405291505092915050565b606061243882604051806060016040528060408152602001615f6e604091396001612c87565b9050919050565b60605f662386f26fc100008361245591906159ce565b90505f60648261246591906159ce565b90505f60648361247591906159fe565b9050600a8110156124bc5761248982612e16565b61249282612e16565b6040516020016124a3929190615ac2565b60405160208183030381529060405293505050506124f4565b6124c582612e16565b6124ce82612e16565b6040516020016124df929190615afb565b60405160208183030381529060405293505050505b919050565b5f806125048461238e565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461254557612544818486612ee0565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146125d0576125845f855f80612fa3565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461264f57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60605f600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156127b057602002820191905f5260205f20905f905b82829054906101000a900460ff1660ff16815260200190600101906020825f0104928301926001038202915080841161277a5790505b505050505090505f8151036127d65760405180602001604052805f815250915050612a81565b5f6040516020016127e690615b99565b60405160208183030381529060405290505f805b8351811015612a57575f600a5f86848151811061281a5761281961414e565b5b602002602001015160ff1660ff1681526020019081526020015f206040518060600160405290815f8201805461284f90614028565b80601f016020809104026020016040519081016040528092919081815260200182805461287b90614028565b80156128c65780601f1061289d576101008083540402835291602001916128c6565b820191905f5260205f20905b8154815290600101906020018083116128a957829003601f168201915b505050505081526020016001820180546128df90614028565b80601f016020809104026020016040519081016040528092919081815260200182805461290b90614028565b80156129565780601f1061292d57610100808354040283529160200191612956565b820191905f5260205f20905b81548152906001019060200180831161293957829003601f168201915b5050505050815260200160028201805461296f90614028565b80601f016020809104026020016040519081016040528092919081815260200182805461299b90614028565b80156129e65780601f106129bd576101008083540402835291602001916129e6565b820191905f5260205f20905b8154815290600101906020018083116129c957829003601f168201915b50505050508152505090505f821115612a0957602883612a069190615bad565b92505b83612a168460ff16612e16565b8260400151835f01518460200151604051602001612a38959493929190615d53565b60405160208183030381529060405293505080806001019150506127fa565b5081604051602001612a699190615ddf565b60405160208183030381529060405291508193505050505b919050565b60605f612aaa8373ffffffffffffffffffffffffffffffffffffffff166014613162565b90505f600867ffffffffffffffff811115612ac857612ac7613e19565b5b6040519080825280601f01601f191660200182016040528015612afa5781602001600182028036833780820191505090505b5090505f5b6008811015612b7457828181518110612b1b57612b1a61414e565b5b602001015160f81c60f81b828281518110612b3957612b3861414e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050612aff565b505f600467ffffffffffffffff811115612b9157612b90613e19565b5b6040519080825280601f01601f191660200182016040528015612bc35781602001600182028036833780820191505090505b5090505f835190505f5b6004811015612c59578481600484612be59190615e00565b612bef9190615e33565b81518110612c0057612bff61414e565b5b602001015160f81c60f81b838281518110612c1e57612c1d61414e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050612bcd565b508282604051602001612c6d929190615eb0565b604051602081830303815290604052945050505050919050565b60605f845103612ca75760405180602001604052805f8152509050612e0f565b5f82612cd8576003600286516004612cbf9190615ede565b612cc99190615e33565b612cd391906159ce565b612cff565b600360028651612ce89190615e33565b612cf291906159ce565b6004612cfe9190615ede565b5b90505f8167ffffffffffffffff811115612d1c57612d1b613e19565b5b6040519080825280601f01601f191660200182016040528015612d4e5781602001600182028036833780820191505090505b509050600185016020820187885189016020810180515f82525b82841015612dc3576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865360018601955050612d68565b8082528915612e035760038c510660018114612de65760028114612df957612e01565b603d6001870353603d6002870353612e01565b603d60018703535b505b50505050505080925050505b9392505050565b60605f6001612e24846133a0565b0190505f8167ffffffffffffffff811115612e4257612e41613e19565b5b6040519080825280601f01601f191660200182016040528015612e745781602001600182028036833780820191505090505b5090505f82602001820190505b600115612ed5578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581612eca57612ec96159a1565b5b0494505f8503612e81575b819350505050919050565b612eeb8383836134f1565b612f9e575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f5f57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401612f56919061392f565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612f95929190615f1f565b60405180910390fd5b505050565b8080612fdb57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561310d575f612fea84611d42565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561305457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561306757506130658184611bc7565b155b156130a957826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016130a091906137a2565b60405180910390fd5b811561310b57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60605f8390505f60028460026131789190615ede565b6131829190615e33565b67ffffffffffffffff81111561319b5761319a613e19565b5b6040519080825280601f01601f1916602001820160405280156131cd5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106132045761320361414e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106132675761326661414e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60018560026132a59190615ede565b6132af9190615e33565b90505b600181111561334e577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106132f1576132f061414e565b5b1a60f81b8282815181106133085761330761414e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c92508061334790615f46565b90506132b2565b505f82146133955784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161338c929190614257565b60405180910390fd5b809250505092915050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106133fc577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816133f2576133f16159a1565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613439576d04ee2d6d415b85acef8100000000838161342f5761342e6159a1565b5b0492506020810190505b662386f26fc10000831061346857662386f26fc10000838161345e5761345d6159a1565b5b0492506010810190505b6305f5e1008310613491576305f5e1008381613487576134866159a1565b5b0492506008810190505b61271083106134b65761271083816134ac576134ab6159a1565b5b0492506004810190505b606483106134d957606483816134cf576134ce6159a1565b5b0492506002810190505b600a83106134e8576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156135a857508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061356957506135688484611bc7565b5b806135a757508273ffffffffffffffffffffffffffffffffffffffff1661358f83611dc8565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6135f6816135c2565b8114613600575f80fd5b50565b5f81359050613611816135ed565b92915050565b5f6020828403121561362c5761362b6135ba565b5b5f61363984828501613603565b91505092915050565b5f8115159050919050565b61365681613642565b82525050565b5f60208201905061366f5f83018461364d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6136b782613675565b6136c1818561367f565b93506136d181856020860161368f565b6136da8161369d565b840191505092915050565b5f6020820190508181035f8301526136fd81846136ad565b905092915050565b5f819050919050565b61371781613705565b8114613721575f80fd5b50565b5f813590506137328161370e565b92915050565b5f6020828403121561374d5761374c6135ba565b5b5f61375a84828501613724565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61378c82613763565b9050919050565b61379c81613782565b82525050565b5f6020820190506137b55f830184613793565b92915050565b6137c481613782565b81146137ce575f80fd5b50565b5f813590506137df816137bb565b92915050565b5f80604083850312156137fb576137fa6135ba565b5b5f613808858286016137d1565b925050602061381985828601613724565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261384457613843613823565b5b8235905067ffffffffffffffff81111561386157613860613827565b5b60208301915083602082028301111561387d5761387c61382b565b5b9250929050565b5f805f806060858703121561389c5761389b6135ba565b5b5f6138a9878288016137d1565b94505060206138ba87828801613724565b935050604085013567ffffffffffffffff8111156138db576138da6135be565b5b6138e78782880161382f565b925092505092959194509250565b5f6020828403121561390a576139096135ba565b5b5f613917848285016137d1565b91505092915050565b61392981613705565b82525050565b5f6020820190506139425f830184613920565b92915050565b5f805f6060848603121561395f5761395e6135ba565b5b5f61396c868287016137d1565b935050602061397d868287016137d1565b925050604061398e86828701613724565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f60ff82169050919050565b6139d6816139c1565b82525050565b5f6139e783836139cd565b60208301905092915050565b5f602082019050919050565b5f613a0982613998565b613a1381856139a2565b9350613a1e836139b2565b805f5b83811015613a4e578151613a3588826139dc565b9750613a40836139f3565b925050600181019050613a21565b5085935050505092915050565b5f6020820190508181035f830152613a7381846139ff565b905092915050565b613a84816139c1565b8114613a8e575f80fd5b50565b5f81359050613a9f81613a7b565b92915050565b5f60208284031215613aba57613ab96135ba565b5b5f613ac784828501613a91565b91505092915050565b5f6060820190508181035f830152613ae881866136ad565b90508181036020830152613afc81856136ad565b90508181036040830152613b1081846136ad565b9050949350505050565b613b23816139c1565b82525050565b5f602082019050613b3c5f830184613b1a565b92915050565b5f8083601f840112613b5757613b56613823565b5b8235905067ffffffffffffffff811115613b7457613b73613827565b5b602083019150836001820283011115613b9057613b8f61382b565b5b9250929050565b5f805f805f8060608789031215613bb157613bb06135ba565b5b5f87013567ffffffffffffffff811115613bce57613bcd6135be565b5b613bda89828a01613b42565b9650965050602087013567ffffffffffffffff811115613bfd57613bfc6135be565b5b613c0989828a01613b42565b9450945050604087013567ffffffffffffffff811115613c2c57613c2b6135be565b5b613c3889828a01613b42565b92509250509295509295509295565b5f8060408385031215613c5d57613c5c6135ba565b5b5f613c6a858286016137d1565b9250506020613c7b85828601613a91565b9150509250929050565b613c8e81613642565b8114613c98575f80fd5b50565b5f81359050613ca981613c85565b92915050565b5f8060408385031215613cc557613cc46135ba565b5b5f613cd2858286016137d1565b9250506020613ce385828601613c9b565b9150509250929050565b5f8083601f840112613d0257613d01613823565b5b8235905067ffffffffffffffff811115613d1f57613d1e613827565b5b602083019150836020820283011115613d3b57613d3a61382b565b5b9250929050565b5f8083601f840112613d5757613d56613823565b5b8235905067ffffffffffffffff811115613d7457613d73613827565b5b602083019150836020820283011115613d9057613d8f61382b565b5b9250929050565b5f805f8060408587031215613daf57613dae6135ba565b5b5f85013567ffffffffffffffff811115613dcc57613dcb6135be565b5b613dd887828801613ced565b9450945050602085013567ffffffffffffffff811115613dfb57613dfa6135be565b5b613e0787828801613d42565b925092505092959194509250565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613e4f8261369d565b810181811067ffffffffffffffff82111715613e6e57613e6d613e19565b5b80604052505050565b5f613e806135b1565b9050613e8c8282613e46565b919050565b5f67ffffffffffffffff821115613eab57613eaa613e19565b5b613eb48261369d565b9050602081019050919050565b828183375f83830152505050565b5f613ee1613edc84613e91565b613e77565b905082815260208101848484011115613efd57613efc613e15565b5b613f08848285613ec1565b509392505050565b5f82601f830112613f2457613f23613823565b5b8135613f34848260208601613ecf565b91505092915050565b5f805f8060808587031215613f5557613f546135ba565b5b5f613f62878288016137d1565b9450506020613f73878288016137d1565b9350506040613f8487828801613724565b925050606085013567ffffffffffffffff811115613fa557613fa46135be565b5b613fb187828801613f10565b91505092959194509250565b5f8060408385031215613fd357613fd26135ba565b5b5f613fe0858286016137d1565b9250506020613ff1858286016137d1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061403f57607f821691505b60208210810361405257614051613ffb565b5b50919050565b7f496e76616c6964207573657220616464726573730000000000000000000000005f82015250565b5f61408c60148361367f565b915061409782614058565b602082019050919050565b5f6020820190508181035f8301526140b981614080565b9050919050565b7f436f6d706f737420616d6f756e74206d757374206265206772656174657220745f8201527f68616e2030000000000000000000000000000000000000000000000000000000602082015250565b5f61411a60258361367f565b9150614125826140c0565b604082019050919050565b5f6020820190508181035f8301526141478161410e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c6964206261646765204944000000000000000000000000000000005f82015250565b5f6141af60108361367f565b91506141ba8261417b565b602082019050919050565b5f6020820190508181035f8301526141dc816141a3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61421a82613705565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361424c5761424b6141e3565b5b600182019050919050565b5f60408201905061426a5f830185613920565b6142776020830184613920565b9392505050565b7f4172726179206c656e67746873206d757374206d6174636800000000000000005f82015250565b5f6142b260188361367f565b91506142bd8261427e565b602082019050919050565b5f6020820190508181035f8301526142df816142a6565b9050919050565b7f4172726179732063616e6e6f7420626520656d707479000000000000000000005f82015250565b5f61431a60168361367f565b9150614325826142e6565b602082019050919050565b5f6020820190508181035f8301526143478161430e565b9050919050565b7f55736572206d757374206861766520616e204e465400000000000000000000005f82015250565b5f61438260158361367f565b915061438d8261434e565b602082019050919050565b5f6020820190508181035f8301526143af81614376565b9050919050565b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126143de576143dd6143b6565b5b80840192508235915067ffffffffffffffff821115614400576143ff6143ba565b5b60208301925060208202360383131561441c5761441b6143be565b5b509250929050565b7f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e005f82015250565b5f614458601f8361367f565b915061446382614424565b602082019050919050565b5f6020820190508181035f8301526144858161444c565b9050919050565b5f81905092915050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c0000000000005f82015250565b5f6144ca601a8361448c565b91506144d582614496565b601a82019050919050565b5f6144ea82613675565b6144f4818561448c565b935061450481856020860161368f565b80840191505092915050565b5f61451a826144be565b915061452682846144e0565b915081905092915050565b7f5b7b2274726169745f74797065223a22524f424f5420436f6d706f73746564225f8201527f2c2276616c7565223a0000000000000000000000000000000000000000000000602082015250565b5f61458b60298361448c565b915061459682614531565b602982019050919050565b7f7d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6145d560018361448c565b91506145e0826145a1565b600182019050919050565b5f6145f58261457f565b915061460182846144e0565b915061460c826145c9565b915081905092915050565b5f81519050919050565b5f81905092915050565b5f61463582614617565b61463f8185614621565b935061464f81856020860161368f565b80840191505092915050565b7f2c7b2274726169745f74797065223a22000000000000000000000000000000005f82015250565b5f61468f60108361448c565b915061469a8261465b565b601082019050919050565b7f222c2276616c7565223a2274727565227d0000000000000000000000000000005f82015250565b5f6146d960118361448c565b91506146e4826146a5565b601182019050919050565b5f6146fa828561462b565b915061470582614683565b915061471182846144e0565b915061471c826146cd565b91508190509392505050565b7f5d000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61475c60018361448c565b915061476782614728565b600182019050919050565b5f61477d828461462b565b915061478882614750565b915081905092915050565b7f7b226e616d65223a20224d657461466163746f72792076312050617373706f725f8201527f74222c2000000000000000000000000000000000000000000000000000000000602082015250565b5f6147ed60248361448c565b91506147f882614793565b602482019050919050565b7f226465736372697074696f6e223a2022436f6e67726174756c6174696f6e732e5f8201527f20596f75207375727669766564204d657461466163746f72792076312e20546860208201527f697320736f756c626f756e6420746f6b656e2070726f76657320796f7520616360408201527f7475616c6c7920636f6d706f7374656420524f424f5420746f6b656e7320696e60608201527f7374656164206f662070616e69632d73656c6c696e67206c696b65206576657260808201527f796f6e6520656c73652e2054686f736520636f6c6f7266756c2062616467657360a08201527f3f204a757374206f757220776179206f6620736179696e6720796f752064696460c08201527f20736f6d657468696e67206e6f7465776f727468792e20446973706c6179206960e08201527f742070726f75646c792e222c200000000000000000000000000000000000000061010082015250565b5f61496961010d8361448c565b915061497482614803565b61010d82019050919050565b7f2261747472696275746573223a200000000000000000000000000000000000005f82015250565b5f6149b4600e8361448c565b91506149bf82614980565b600e82019050919050565b7f2c200000000000000000000000000000000000000000000000000000000000005f82015250565b5f6149fe60028361448c565b9150614a09826149ca565b600282019050919050565b7f22696d616765223a2022000000000000000000000000000000000000000000005f82015250565b5f614a48600a8361448c565b9150614a5382614a14565b600a82019050919050565b7f227d0000000000000000000000000000000000000000000000000000000000005f82015250565b5f614a9260028361448c565b9150614a9d82614a5e565b600282019050919050565b5f614ab2826147e1565b9150614abd8261495c565b9150614ac8826149a8565b9150614ad482856144e0565b9150614adf826149f2565b9150614aea82614a3c565b9150614af682846144e0565b9150614b0182614a86565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000005f82015250565b5f614b41601d8361448c565b9150614b4c82614b0d565b601d82019050919050565b5f614b6182614b35565b9150614b6d82846144e0565b915081905092915050565b7f496e76616c6964207570646174657220616464726573730000000000000000005f82015250565b5f614bac60178361367f565b9150614bb782614b78565b602082019050919050565b5f6020820190508181035f830152614bd981614ba0565b9050919050565b7f43616c6c6572206973206e6f7420636f6d706f737420646174612075706461745f8201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b5f614c3a60228361367f565b9150614c4582614be0565b604082019050919050565b5f6020820190508181035f830152614c6781614c2e565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614cca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614c8f565b614cd48683614c8f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f614d0f614d0a614d0584613705565b614cec565b613705565b9050919050565b5f819050919050565b614d2883614cf5565b614d3c614d3482614d16565b848454614c9b565b825550505050565b5f90565b614d50614d44565b614d5b818484614d1f565b505050565b5b81811015614d7e57614d735f82614d48565b600181019050614d61565b5050565b601f821115614dc357614d9481614c6e565b614d9d84614c80565b81016020851015614dac578190505b614dc0614db885614c80565b830182614d60565b50505b505050565b5f82821c905092915050565b5f614de35f1984600802614dc8565b1980831691505092915050565b5f614dfb8383614dd4565b9150826002028217905092915050565b614e1482613675565b67ffffffffffffffff811115614e2d57614e2c613e19565b5b614e378254614028565b614e42828285614d82565b5f60209050601f831160018114614e73575f8415614e61578287015190505b614e6b8582614df0565b865550614ed2565b601f198416614e8186614c6e565b5f5b82811015614ea857848901518255600182019150602085019450602081019050614e83565b86831015614ec55784890151614ec1601f891682614dd4565b8355505b6001600288020188555050505b505050505050565b5f614ee4826139c1565b915060ff8203614ef757614ef66141e3565b5b600182019050919050565b5f82825260208201905092915050565b5f614f1c82614617565b614f268185614f02565b9350614f3681856020860161368f565b614f3f8161369d565b840191505092915050565b5f608082019050614f5d5f830187613793565b614f6a6020830186613793565b614f776040830185613920565b8181036060830152614f898184614f12565b905095945050505050565b5f81519050614fa2816135ed565b92915050565b5f60208284031215614fbd57614fbc6135ba565b5b5f614fca84828501614f94565b91505092915050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32305f8201527f30302f737667222076696577426f783d223020302033353020353030223e0000602082015250565b5f61502d603e8361448c565b915061503882614fd3565b603e82019050919050565b7f3c726563742077696474683d223130302522206865696768743d2231303025225f8201527f2066696c6c3d2223313131222072783d22313522202f3e000000000000000000602082015250565b5f61509d60378361448c565b91506150a882615043565b603782019050919050565b7f3c7265637420783d2231352220793d223135222077696474683d2233323022205f8201527f6865696768743d2234373022207374726f6b653d222334343422207374726f6b60208201527f652d77696474683d22312e35222066696c6c3d226e6f6e65222072783d22313060408201527f22202f3e00000000000000000000000000000000000000000000000000000000606082015250565b5f61515960648361448c565b9150615164826150b3565b606482019050919050565b7f3c67207472616e73666f726d3d227472616e736c6174652833302c20333029205f8201527f7363616c6528312e3529223e0000000000000000000000000000000000000000602082015250565b5f6151c9602c8361448c565b91506151d48261516f565b602c82019050919050565b7f3c7061746820643d224d31302e323220305631352e333348372e3637563048305f8201527f5631372e383848322e353556322e353548352e31315631372e38384831322e3760208201527f3756322e35354831352e33335631372e38384831372e383856304831302e323260408201527f5a222066696c6c3d227768697465222f3e000000000000000000000000000000606082015250565b5f61528560718361448c565b9150615290826151df565b607182019050919050565b7f3c2f673e000000000000000000000000000000000000000000000000000000005f82015250565b5f6152cf60048361448c565b91506152da8261529b565b600482019050919050565b7f3c7465787420783d2233302220793d223130302220666f6e742d66616d696c795f8201527f3d2273797374656d2d75692c2073616e732d73657269662220666f6e742d736960208201527f7a653d2232342220666f6e742d7765696768743d22363030222066696c6c3d2260408201527f7768697465223e4d657461466163746f72792076313c2f746578743e00000000606082015250565b5f61538b607c8361448c565b9150615396826152e5565b607c82019050919050565b7f3c7465787420783d2233302220793d223132352220666f6e742d66616d696c795f8201527f3d2273797374656d2d75692c2073616e732d73657269662220666f6e742d736960208201527f7a653d22313422206c65747465722d73706163696e673d2231222066696c6c3d60408201527f2223373737223e323031392d323032353c2f746578743e000000000000000000606082015250565b5f61544760778361448c565b9150615452826153a1565b607782019050919050565b7f3c6c696e652078313d223330222079313d22313430222078323d2233323022205f8201527f79323d2231343022207374726f6b653d222334343422207374726f6b652d776960208201527f6474683d223122202f3e00000000000000000000000000000000000000000000604082015250565b5f6154dd604a8361448c565b91506154e88261545d565b604a82019050919050565b7f3c7465787420783d2233302220793d223230302220666f6e742d66616d696c795f8201527f3d2273797374656d2d75692c2073616e732d73657269662220666f6e742d736960208201527f7a653d2232382220666f6e742d7765696768743d22373030222066696c6c3d2260408201527f7768697465223e00000000000000000000000000000000000000000000000000606082015250565b5f61559960678361448c565b91506155a4826154f3565b606782019050919050565b7f20524f424f543c2f746578743e000000000000000000000000000000000000005f82015250565b5f6155e3600d8361448c565b91506155ee826155af565b600d82019050919050565b7f3c7465787420783d2233302220793d223234302220666f6e742d66616d696c795f8201527f3d2273797374656d2d75692c2073616e732d73657269662220666f6e742d736960208201527f7a653d223134222066696c6c3d2223373737223e434f4d504f5354454420425960408201527f3c2f746578743e00000000000000000000000000000000000000000000000000606082015250565b5f61569f60678361448c565b91506156aa826155f9565b606782019050919050565b7f3c7465787420783d2233302220793d223236302220666f6e742d66616d696c795f8201527f3d2275692d6d6f6e6f73706163652c20436f6e736f6c61732c206d6f6e6f737060208201527f6163652220666f6e742d73697a653d223134222066696c6c3d2223636363223e604082015250565b5f61573560608361448c565b9150615740826156b5565b606082019050919050565b7f3c2f746578743e000000000000000000000000000000000000000000000000005f82015250565b5f61577f60078361448c565b915061578a8261574b565b600782019050919050565b7f3c7465787420783d2233302220793d223437352220666f6e742d66616d696c795f8201527f3d2273797374656d2d75692c2073616e732d73657269662220666f6e742d736960208201527f7a653d2231302220746578742d616e63686f723d226c65667422206c6574746560408201527f722d73706163696e673d2231222066696c6c3d2223373737223e4d414b45204660608201527f554e205245414c49544945533c2f746578743e00000000000000000000000000608082015250565b5f61586160938361448c565b915061586c82615795565b609382019050919050565b7f3c2f7376673e00000000000000000000000000000000000000000000000000005f82015250565b5f6158ab60068361448c565b91506158b682615877565b600682019050919050565b5f6158cb82615021565b91506158d682615091565b91506158e18261514d565b91506158ec826151bd565b91506158f782615279565b9150615902826152c3565b915061590d8261537f565b91506159188261543b565b9150615923826154d1565b915061592e8261558d565b915061593a82866144e0565b9150615945826155d7565b915061595082615693565b915061595b82615729565b915061596782856144e0565b915061597282615773565b915061597e82846144e0565b915061598982615855565b91506159948261589f565b9150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6159d882613705565b91506159e383613705565b9250826159f3576159f26159a1565b5b828204905092915050565b5f615a0882613705565b9150615a1383613705565b925082615a2357615a226159a1565b5b828206905092915050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f615a6260018361448c565b9150615a6d82615a2e565b600182019050919050565b7f30000000000000000000000000000000000000000000000000000000000000005f82015250565b5f615aac60018361448c565b9150615ab782615a78565b600182019050919050565b5f615acd82856144e0565b9150615ad882615a56565b9150615ae382615aa0565b9150615aef82846144e0565b91508190509392505050565b5f615b0682856144e0565b9150615b1182615a56565b9150615b1d82846144e0565b91508190509392505050565b7f3c67207472616e73666f726d3d227472616e736c6174652833302c20343230295f8201527f223e000000000000000000000000000000000000000000000000000000000000602082015250565b5f615b8360228361448c565b9150615b8e82615b29565b602282019050919050565b5f615ba382615b77565b9150819050919050565b5f615bb7826139c1565b9150615bc2836139c1565b9250828201905060ff811115615bdb57615bda6141e3565b5b92915050565b7f3c67207472616e73666f726d3d227472616e736c6174652800000000000000005f82015250565b5f615c1560188361448c565b9150615c2082615be1565b601882019050919050565b7f2c203029207363616c65280000000000000000000000000000000000000000005f82015250565b5f615c5f600b8361448c565b9150615c6a82615c2b565b600b82019050919050565b7f29223e00000000000000000000000000000000000000000000000000000000005f82015250565b5f615ca960038361448c565b9150615cb482615c75565b600382019050919050565b7f3c7469746c653e000000000000000000000000000000000000000000000000005f82015250565b5f615cf360078361448c565b9150615cfe82615cbf565b600782019050919050565b7f3c2f7469746c653e0000000000000000000000000000000000000000000000005f82015250565b5f615d3d60088361448c565b9150615d4882615d09565b600882019050919050565b5f615d5e828861462b565b9150615d6982615c09565b9150615d7582876144e0565b9150615d8082615c53565b9150615d8c82866144e0565b9150615d9782615c9d565b9150615da282615ce7565b9150615dae82856144e0565b9150615db982615d31565b9150615dc582846144e0565b9150615dd0826152c3565b91508190509695505050505050565b5f615dea828461462b565b9150615df5826152c3565b915081905092915050565b5f615e0a82613705565b9150615e1583613705565b9250828203905081811115615e2d57615e2c6141e3565b5b92915050565b5f615e3d82613705565b9150615e4883613705565b9250828201905080821115615e6057615e5f6141e3565b5b92915050565b7f2e2e2e00000000000000000000000000000000000000000000000000000000005f82015250565b5f615e9a60038361448c565b9150615ea582615e66565b600382019050919050565b5f615ebb82856144e0565b9150615ec682615e8e565b9150615ed282846144e0565b91508190509392505050565b5f615ee882613705565b9150615ef383613705565b9250828202615f0181613705565b91508282048414831517615f1857615f176141e3565b5b5092915050565b5f604082019050615f325f830185613793565b615f3f6020830184613920565b9392505050565b5f615f5082613705565b91505f8203615f6257615f616141e3565b5b60018203905091905056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220ce17308fd031a635740e780c22aa2c7345e4bc9d08b9e638c8d295c32c956ffd64736f6c634300081a00333c7061746820643d224d31392e3339203231632e32382030202e352d2e32322e352d2e35732d2e30312d2e30362d2e30332d2e31384c31382e373320352e3137612e352e352030203020302d2e352d2e34364831362e3356332e32384331362e3320312e34372031342e383320302031332e30322030682d322e313643392e3035203020372e353820312e343720372e353820332e323876312e343348352e3634632d2e323620302d2e34382e322d2e352e34364c342e30312032302e3436632d2e30312e31342e30342e32382e31332e33382e312e312e32332e31362e33362e31367a4d31352e3320342e373148382e353856332e323843382e353820322e303220392e3620312031302e3836203168322e313663312e3236203020322e323820312e303220322e323820322e32387a222066696c6c3d2223344646393730222f3e3c7061746820643d224d32372e32372031352e3563302d2e31362d2e30312d2e33322d2e30322d2e34372d2e30322d2e32382d2e30352d2e35362d2e30392d2e38334c33312031302e37346c2d2e30382d2e3234632d2e32362d2e382d2e35392d312e362d2e39392d322e33376c2d2e31332d2e32332d352e31312e3236632d2e342d2e34392d2e38332d2e39362d312e33312d312e33386c2d2e31332d2e3132632d2e31352d2e31332d2e332d2e32352d2e34352d2e33386c2e322d352e31312d2e31342d2e3137632d2e37372d2e342d312e35372d2e37332d322e33372d2e39394c32302e323620306c2d332e343320332e38632d2e38342d2e312d312e37362d2e312d322e363520304c31302e373420306c2d2e32342e3038632d2e382e32362d312e362e35392d322e33372e39396c2d2e32332e31312e323620352e3132632d2e372e35342d312e333420312e31372d312e383720312e38366c2d352e31322d2e32352d2e31322e3232432e363520382e392e333220392e372e30362031302e356c2d2e30362e323420332e3820332e34336131312e372031312e372030203020302d2e303120322e36364c302032302e32366c2e30382e3234632e32362e382e353920312e362e393920322e33376c2e31312e323320352e31312d2e3236632e31322e31352e32352e332e33382e34356c2e31322e3133632e34332e34382e392e393320312e333920312e336c2d2e323620352e31312e32322e3132632e37372e3420312e35372e373320322e33372e39396c2e32332e303620332e34332d332e38632e33312e30342e362e30362e38382e30362e3631203020312e32332d2e303320312e382d2e30374c32302e32362033316c2e32342d2e3038632e382d2e323620312e362d2e353920322e33372d2e39396c2e32332d2e31312d2e32362d352e3131632e31342d2e31312e32372d2e32322e33392d2e33322e34322d2e33362e38312d2e373620312e31372d312e31372e31312d2e31322e32322d2e32352e33332d2e346c352e31312e32362e31322d2e3232632e342d2e37372e37332d312e35372e39392d322e33376c2e30352d2e32332d332e382d332e3433632e30342d2e34322e30372d2e38362e30372d312e33334d31352e352032322e31632d332e313920302d342e37362d322e30392d342e37362d352e323873342e37362d382e3520342e37362d382e3520342e373620352e333120342e373620382e352d312e353720352e32382d342e373620352e3238222066696c6c3d2223384232434646222f3e3c7061746820643d224d343634203048313132632d3420302d372e3820322d313020352e344c32203135322e36632d322e3920342e342d322e362031302e322e372031342e326c323736203334302e3863342e3820352e392031332e3820352e392031382e3620306c3237362d3334302e3863332e332d342e3120332e362d392e382e372d31342e324c3437342e3120352e34433437312e3820322034363820302034363420306d2d31392e332034382036332e33203936682d36382e346c2d35312e372d39367a6d2d3230322e3120306839302e376c35312e37203936483139317a6d2d3131312e3320306835362e386c2d35312e372039364836387a6d2d3433203134346835312e344c323038203335327a6d3130322e392030683139332e364c323838203433352e337a4d333638203335326c36382e322d3136306835312e347a222066696c6c3d2223303045434646222f3e3c7061746820643d224d3633312e322039362e354c3433362e352030433431362e342032372e38203337312e392034372e32203332302034372e32533232332e362032372e38203230332e3520304c382e382039362e35632d372e3920342d31312e312031332e362d372e322032312e356c35372e32203131342e35633420372e392031332e362031312e312032312e3520372e326c35362e362d32372e376331302e362d352e3220323320322e352032332031342e345634383063302031372e372031342e33203332203332203332683235366331372e3720302033322d31342e332033322d3332563232362e3363302d31312e382031322e342d31392e362032332d31342e346c35362e362032372e3763372e3920342031372e352e382032312e352d372e324c3633382e332031313863342d372e392e382d31372e362d372e312d32312e357a222066696c6c3d222346464545333622202f3e3c706174682066696c6c2d72756c653d226576656e6f64642220636c69702d72756c653d226576656e6f64642220643d224d39372e3932203048307639362e39326839362e393256307a4d38332e30372031332e38354831332e38347634312e35346836392e32337a6d302035352e33387631332e38354831332e38345636392e32337a222066696c6c3d2223464630304333222f3e3c7061746820643d224d33342e36312032362e3536632d322e31322e30322d342e31352e38372d352e363420322e3336732d322e333420332e35322d322e333220352e3634632e303220322e31332e383720342e313620322e333420352e363773332e353220322e333620352e363420322e333563322e31332d2e303220342e31362d2e383720352e36372d322e333673322e33362d332e353220322e33352d352e3634632d2e30322d322e31322d2e38372d342e31352d322e33362d352e3634732d332e35322d322e33342d352e36382d322e33386d32372e372030632d322e31322e30322d342e31352e38372d352e363420322e3336732d322e333420332e35322d322e333220352e3634632e303220322e31332e383720342e313620322e333420352e363773332e353220322e333620352e363420322e333563322e31332d2e303220342e31362d2e383720352e36372d322e333673322e33362d332e353220322e33352d352e3634632d2e30322d322e31322d2e38372d342e31352d322e33362d352e3634732d332e35322d322e33342d352e36382d322e3338222066696c6c3d2223464630304333222f3e0000000000000000000000004e2c4f78bedc312105610f68ffdbb1bf4b70093e