Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- cityReward
- Optimization enabled
- true
- Compiler version
- v0.8.0+commit.c7dfd78e
- Optimization runs
- 200
- EVM Version
- default
- Verified at
- 2024-09-12T09:35:41.216156Z
Contract source code
pragma solidity ^0.8.0; contract cityReward { struct Citizen { uint256 rewardPoints; uint256 reputation; uint256 level; mapping(uint256 => bool) completedChallenges; } struct Challenge { string name; string description; uint256 rewardPoints; uint256 reputationPoints; bool active; } address public cityAdmin; mapping(address => Citizen) public citizens; mapping(uint256 => Challenge) public challenges; uint256 public challengeCount; event CitizenRegistered(address indexed citizenAddress); event ChallengeCreated(uint256 indexed challengeId, string name); event ChallengeCompleted(address indexed citizenAddress, uint256 indexed challengeId); event RewardsClaimed(address indexed citizenAddress, uint256 amount); event LevelUp(address indexed citizenAddress, uint256 newLevel); modifier onlyCityAdmin() { require(msg.sender == cityAdmin, "Only city admin can call this function"); _; } modifier onlyRegisteredCitizen() { require(citizens[msg.sender].level > 0, "Only registered citizens can call this function"); _; } constructor() { cityAdmin = msg.sender; } function registerCitizen() public { require(citizens[msg.sender].level == 0, "Citizen already registered"); citizens[msg.sender].level = 1; emit CitizenRegistered(msg.sender); } function createChallenge(string memory _name, string memory _description, uint256 _rewardPoints, uint256 _reputationPoints) public onlyCityAdmin { challengeCount++; challenges[challengeCount] = Challenge(_name, _description, _rewardPoints, _reputationPoints, true); emit ChallengeCreated(challengeCount, _name); } function completeChallenge(uint256 _challengeId) public onlyRegisteredCitizen { require(challenges[_challengeId].active, "Challenge is not active"); require(!citizens[msg.sender].completedChallenges[_challengeId], "Challenge already completed"); Citizen storage citizen = citizens[msg.sender]; Challenge storage challenge = challenges[_challengeId]; citizen.rewardPoints += challenge.rewardPoints; citizen.reputation += challenge.reputationPoints; citizen.completedChallenges[_challengeId] = true; checkLevelUp(msg.sender); emit ChallengeCompleted(msg.sender, _challengeId); } function checkLevelUp(address _citizenAddress) internal { Citizen storage citizen = citizens[_citizenAddress]; uint256 newLevel = (citizen.reputation / 100) + 1; // Simple level calculation if (newLevel > citizen.level) { citizen.level = newLevel; emit LevelUp(_citizenAddress, newLevel); } } function claimRewards(uint256 _amount) public onlyRegisteredCitizen { require(citizens[msg.sender].rewardPoints >= _amount, "Insufficient reward points"); citizens[msg.sender].rewardPoints -= _amount; // Here you would typically transfer actual rewards (e.g., tokens) // For simplicity, we're just deducting points emit RewardsClaimed(msg.sender, _amount); } function getCitizenDetails(address _citizenAddress) public view returns (uint256, uint256, uint256) { Citizen storage citizen = citizens[_citizenAddress]; return (citizen.rewardPoints, citizen.reputation, citizen.level); } function getChallengeDetails(uint256 _challengeId) public view returns (string memory, string memory, uint256, uint256, bool) { Challenge memory challenge = challenges[_challengeId]; return (challenge.name, challenge.description, challenge.rewardPoints, challenge.reputationPoints, challenge.active); } function hasCitizenCompletedChallenge(address _citizenAddress, uint256 _challengeId) public view returns (bool) { return citizens[_citizenAddress].completedChallenges[_challengeId]; } function deactivateChallenge(uint256 _challengeId) public onlyCityAdmin { require(challenges[_challengeId].active, "Challenge is already inactive"); challenges[_challengeId].active = false; } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"ChallengeCompleted","inputs":[{"type":"address","name":"citizenAddress","internalType":"address","indexed":true},{"type":"uint256","name":"challengeId","internalType":"uint256","indexed":true}],"anonymous":false},{"type":"event","name":"ChallengeCreated","inputs":[{"type":"uint256","name":"challengeId","internalType":"uint256","indexed":true},{"type":"string","name":"name","internalType":"string","indexed":false}],"anonymous":false},{"type":"event","name":"CitizenRegistered","inputs":[{"type":"address","name":"citizenAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"LevelUp","inputs":[{"type":"address","name":"citizenAddress","internalType":"address","indexed":true},{"type":"uint256","name":"newLevel","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"RewardsClaimed","inputs":[{"type":"address","name":"citizenAddress","internalType":"address","indexed":true},{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"challengeCount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"name","internalType":"string"},{"type":"string","name":"description","internalType":"string"},{"type":"uint256","name":"rewardPoints","internalType":"uint256"},{"type":"uint256","name":"reputationPoints","internalType":"uint256"},{"type":"bool","name":"active","internalType":"bool"}],"name":"challenges","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"rewardPoints","internalType":"uint256"},{"type":"uint256","name":"reputation","internalType":"uint256"},{"type":"uint256","name":"level","internalType":"uint256"}],"name":"citizens","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"cityAdmin","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimRewards","inputs":[{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"completeChallenge","inputs":[{"type":"uint256","name":"_challengeId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"createChallenge","inputs":[{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_description","internalType":"string"},{"type":"uint256","name":"_rewardPoints","internalType":"uint256"},{"type":"uint256","name":"_reputationPoints","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"deactivateChallenge","inputs":[{"type":"uint256","name":"_challengeId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"},{"type":"string","name":"","internalType":"string"},{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"},{"type":"bool","name":"","internalType":"bool"}],"name":"getChallengeDetails","inputs":[{"type":"uint256","name":"_challengeId","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCitizenDetails","inputs":[{"type":"address","name":"_citizenAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"hasCitizenCompletedChallenge","inputs":[{"type":"address","name":"_citizenAddress","internalType":"address"},{"type":"uint256","name":"_challengeId","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"registerCitizen","inputs":[]}]
Contract Creation Code
0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610f89806100326000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a2f0572511610071578063a2f057251461014b578063a7817bbc14610160578063be7fe8eb14610173578063d4f910a714610188578063e9035bb11461019b578063f352c45c146101bb576100b4565b80630962ef79146100b95780633d40a54f146100ce5780634fcc2c88146100fb578063605ec7501461010e5780638f1d377614610130578063907de2cc14610143575b600080fd5b6100cc6100c7366004610be1565b6101ce565b005b6100e16100dc366004610be1565b610296565b6040516100f2959493929190610c76565b60405180910390f35b6100cc610109366004610be1565b610435565b61012161011c366004610b26565b6104ab565b6040516100f293929190610e6c565b6100e161013e366004610be1565b6104d8565b6100cc61061b565b61015361068b565b6040516100f29190610e63565b6100cc61016e366004610be1565b610691565b61017b6107de565b6040516100f29190610c44565b610121610196366004610b26565b6107ed565b6101ae6101a9366004610b47565b61080d565b6040516100f29190610c58565b6100cc6101c9366004610b70565b61083c565b336000908152600160205260409020600201546102065760405162461bcd60e51b81526004016101fd90610da6565b60405180910390fd5b336000908152600160205260409020548111156102355760405162461bcd60e51b81526004016101fd90610d38565b3360009081526001602052604081208054839290610254908490610eba565b909155505060405133907ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe9061028b908490610e63565b60405180910390a250565b606080600080600080600260008881526020019081526020016000206040518060a00160405290816000820180546102cd90610ed1565b80601f01602080910402602001604051908101604052809291908181526020018280546102f990610ed1565b80156103465780601f1061031b57610100808354040283529160200191610346565b820191906000526020600020905b81548152906001019060200180831161032957829003601f168201915b5050505050815260200160018201805461035f90610ed1565b80601f016020809104026020016040519081016040528092919081815260200182805461038b90610ed1565b80156103d85780601f106103ad576101008083540402835291602001916103d8565b820191906000526020600020905b8154815290600101906020018083116103bb57829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260049093015460ff1615156060928301528351908401519284015191840151608090940151909b929a5090985091965090945092505050565b6000546001600160a01b0316331461045f5760405162461bcd60e51b81526004016101fd90610cbb565b60008181526002602052604090206004015460ff166104905760405162461bcd60e51b81526004016101fd90610d6f565b6000908152600260205260409020600401805460ff19169055565b6001600160a01b031660009081526001602081905260409091208054918101546002909101549192909190565b6002602052600090815260409020805481906104f390610ed1565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90610ed1565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509080600101805461058190610ed1565b80601f01602080910402602001604051908101604052809291908181526020018280546105ad90610ed1565b80156105fa5780601f106105cf576101008083540402835291602001916105fa565b820191906000526020600020905b8154815290600101906020018083116105dd57829003601f168201915b50505050600283015460038401546004909401549293909290915060ff1685565b336000908152600160205260409020600201541561064b5760405162461bcd60e51b81526004016101fd90610df5565b33600081815260016020819052604080832060020191909155517fb5598409719558ebd54a454803d5d44a0b2ae7d77be5ea208f6a3b9698a2cb589190a2565b60035481565b336000908152600160205260409020600201546106c05760405162461bcd60e51b81526004016101fd90610da6565b60008181526002602052604090206004015460ff166106f15760405162461bcd60e51b81526004016101fd90610d01565b33600090815260016020908152604080832084845260030190915290205460ff161561072f5760405162461bcd60e51b81526004016101fd90610e2c565b33600090815260016020908152604080832084845260029283905290832091820154815491939091849190610765908490610e82565b90915550506003810154600183018054600090610783908490610e82565b909155505060008381526003830160205260409020805460ff191660011790556107ac3361095a565b604051839033907f57213678a1941131f1846559e4f0509e68d1a52c4d05bf0c3e8514c7a00b5d0b90600090a3505050565b6000546001600160a01b031681565b600160208190526000918252604090912080549181015460029091015483565b6001600160a01b0391909116600090815260016020908152604080832093835260039093019052205460ff1690565b6000546001600160a01b031633146108665760405162461bcd60e51b81526004016101fd90610cbb565b6003805490600061087683610f0c565b90915550506040805160a081018252858152602080820186905281830185905260608201849052600160808301526003546000908152600282529290922081518051929391926108c992849201906109f0565b5060208281015180516108e292600185019201906109f0565b50604082015181600201556060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055509050506003547f9b29fc75376595e5ccc1cabb6212af1078e7cdea701adc8029ccc6ed8ab6e07b8560405161094c9190610c63565b60405180910390a250505050565b6001600160a01b038116600090815260016020819052604082209081015490919061098790606490610e9a565b610992906001610e82565b905081600201548111156109eb57808260020181905550826001600160a01b03167f91e51c29e7e87a74ad3b8ccba98538970f50a4309242735467f41e27c6b0fbac826040516109e29190610e63565b60405180910390a25b505050565b8280546109fc90610ed1565b90600052602060002090601f016020900481019282610a1e5760008555610a64565b82601f10610a3757805160ff1916838001178555610a64565b82800160010185558215610a64579182015b82811115610a64578251825591602001919060010190610a49565b50610a70929150610a74565b5090565b5b80821115610a705760008155600101610a75565b80356001600160a01b0381168114610aa057600080fd5b919050565b600082601f830112610ab5578081fd5b813567ffffffffffffffff80821115610ad057610ad0610f3d565b604051601f8301601f191681016020018281118282101715610af457610af4610f3d565b604052828152848301602001861015610b0b578384fd5b82602086016020830137918201602001929092529392505050565b600060208284031215610b37578081fd5b610b4082610a89565b9392505050565b60008060408385031215610b59578081fd5b610b6283610a89565b946020939093013593505050565b60008060008060808587031215610b85578182fd5b843567ffffffffffffffff80821115610b9c578384fd5b610ba888838901610aa5565b95506020870135915080821115610bbd578384fd5b50610bca87828801610aa5565b949794965050505060408301359260600135919050565b600060208284031215610bf2578081fd5b5035919050565b60008151808452815b81811015610c1e57602081850181015186830182015201610c02565b81811115610c2f5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b901515815260200190565b600060208252610b406020830184610bf9565b600060a08252610c8960a0830188610bf9565b8281036020840152610c9b8188610bf9565b604084019690965250506060810192909252151560809091015292915050565b60208082526026908201527f4f6e6c7920636974792061646d696e2063616e2063616c6c20746869732066756040820152653731ba34b7b760d11b606082015260800190565b60208082526017908201527f4368616c6c656e6765206973206e6f7420616374697665000000000000000000604082015260600190565b6020808252601a908201527f496e73756666696369656e742072657761726420706f696e7473000000000000604082015260600190565b6020808252601d908201527f4368616c6c656e676520697320616c726561647920696e616374697665000000604082015260600190565b6020808252602f908201527f4f6e6c79207265676973746572656420636974697a656e732063616e2063616c60408201526e36103a3434b990333ab731ba34b7b760891b606082015260800190565b6020808252601a908201527f436974697a656e20616c72656164792072656769737465726564000000000000604082015260600190565b6020808252601b908201527f4368616c6c656e676520616c726561647920636f6d706c657465640000000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610e9557610e95610f27565b500190565b600082610eb557634e487b7160e01b81526012600452602481fd5b500490565b600082821015610ecc57610ecc610f27565b500390565b600281046001821680610ee557607f821691505b60208210811415610f0657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415610f2057610f20610f27565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212209b609bf7ca718ed0f477bb15aa9a4955f17eeac65d325db24bd3bc0279b3eae864736f6c63430008000033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a2f0572511610071578063a2f057251461014b578063a7817bbc14610160578063be7fe8eb14610173578063d4f910a714610188578063e9035bb11461019b578063f352c45c146101bb576100b4565b80630962ef79146100b95780633d40a54f146100ce5780634fcc2c88146100fb578063605ec7501461010e5780638f1d377614610130578063907de2cc14610143575b600080fd5b6100cc6100c7366004610be1565b6101ce565b005b6100e16100dc366004610be1565b610296565b6040516100f2959493929190610c76565b60405180910390f35b6100cc610109366004610be1565b610435565b61012161011c366004610b26565b6104ab565b6040516100f293929190610e6c565b6100e161013e366004610be1565b6104d8565b6100cc61061b565b61015361068b565b6040516100f29190610e63565b6100cc61016e366004610be1565b610691565b61017b6107de565b6040516100f29190610c44565b610121610196366004610b26565b6107ed565b6101ae6101a9366004610b47565b61080d565b6040516100f29190610c58565b6100cc6101c9366004610b70565b61083c565b336000908152600160205260409020600201546102065760405162461bcd60e51b81526004016101fd90610da6565b60405180910390fd5b336000908152600160205260409020548111156102355760405162461bcd60e51b81526004016101fd90610d38565b3360009081526001602052604081208054839290610254908490610eba565b909155505060405133907ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe9061028b908490610e63565b60405180910390a250565b606080600080600080600260008881526020019081526020016000206040518060a00160405290816000820180546102cd90610ed1565b80601f01602080910402602001604051908101604052809291908181526020018280546102f990610ed1565b80156103465780601f1061031b57610100808354040283529160200191610346565b820191906000526020600020905b81548152906001019060200180831161032957829003601f168201915b5050505050815260200160018201805461035f90610ed1565b80601f016020809104026020016040519081016040528092919081815260200182805461038b90610ed1565b80156103d85780601f106103ad576101008083540402835291602001916103d8565b820191906000526020600020905b8154815290600101906020018083116103bb57829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260049093015460ff1615156060928301528351908401519284015191840151608090940151909b929a5090985091965090945092505050565b6000546001600160a01b0316331461045f5760405162461bcd60e51b81526004016101fd90610cbb565b60008181526002602052604090206004015460ff166104905760405162461bcd60e51b81526004016101fd90610d6f565b6000908152600260205260409020600401805460ff19169055565b6001600160a01b031660009081526001602081905260409091208054918101546002909101549192909190565b6002602052600090815260409020805481906104f390610ed1565b80601f016020809104026020016040519081016040528092919081815260200182805461051f90610ed1565b801561056c5780601f106105415761010080835404028352916020019161056c565b820191906000526020600020905b81548152906001019060200180831161054f57829003601f168201915b50505050509080600101805461058190610ed1565b80601f01602080910402602001604051908101604052809291908181526020018280546105ad90610ed1565b80156105fa5780601f106105cf576101008083540402835291602001916105fa565b820191906000526020600020905b8154815290600101906020018083116105dd57829003601f168201915b50505050600283015460038401546004909401549293909290915060ff1685565b336000908152600160205260409020600201541561064b5760405162461bcd60e51b81526004016101fd90610df5565b33600081815260016020819052604080832060020191909155517fb5598409719558ebd54a454803d5d44a0b2ae7d77be5ea208f6a3b9698a2cb589190a2565b60035481565b336000908152600160205260409020600201546106c05760405162461bcd60e51b81526004016101fd90610da6565b60008181526002602052604090206004015460ff166106f15760405162461bcd60e51b81526004016101fd90610d01565b33600090815260016020908152604080832084845260030190915290205460ff161561072f5760405162461bcd60e51b81526004016101fd90610e2c565b33600090815260016020908152604080832084845260029283905290832091820154815491939091849190610765908490610e82565b90915550506003810154600183018054600090610783908490610e82565b909155505060008381526003830160205260409020805460ff191660011790556107ac3361095a565b604051839033907f57213678a1941131f1846559e4f0509e68d1a52c4d05bf0c3e8514c7a00b5d0b90600090a3505050565b6000546001600160a01b031681565b600160208190526000918252604090912080549181015460029091015483565b6001600160a01b0391909116600090815260016020908152604080832093835260039093019052205460ff1690565b6000546001600160a01b031633146108665760405162461bcd60e51b81526004016101fd90610cbb565b6003805490600061087683610f0c565b90915550506040805160a081018252858152602080820186905281830185905260608201849052600160808301526003546000908152600282529290922081518051929391926108c992849201906109f0565b5060208281015180516108e292600185019201906109f0565b50604082015181600201556060820151816003015560808201518160040160006101000a81548160ff0219169083151502179055509050506003547f9b29fc75376595e5ccc1cabb6212af1078e7cdea701adc8029ccc6ed8ab6e07b8560405161094c9190610c63565b60405180910390a250505050565b6001600160a01b038116600090815260016020819052604082209081015490919061098790606490610e9a565b610992906001610e82565b905081600201548111156109eb57808260020181905550826001600160a01b03167f91e51c29e7e87a74ad3b8ccba98538970f50a4309242735467f41e27c6b0fbac826040516109e29190610e63565b60405180910390a25b505050565b8280546109fc90610ed1565b90600052602060002090601f016020900481019282610a1e5760008555610a64565b82601f10610a3757805160ff1916838001178555610a64565b82800160010185558215610a64579182015b82811115610a64578251825591602001919060010190610a49565b50610a70929150610a74565b5090565b5b80821115610a705760008155600101610a75565b80356001600160a01b0381168114610aa057600080fd5b919050565b600082601f830112610ab5578081fd5b813567ffffffffffffffff80821115610ad057610ad0610f3d565b604051601f8301601f191681016020018281118282101715610af457610af4610f3d565b604052828152848301602001861015610b0b578384fd5b82602086016020830137918201602001929092529392505050565b600060208284031215610b37578081fd5b610b4082610a89565b9392505050565b60008060408385031215610b59578081fd5b610b6283610a89565b946020939093013593505050565b60008060008060808587031215610b85578182fd5b843567ffffffffffffffff80821115610b9c578384fd5b610ba888838901610aa5565b95506020870135915080821115610bbd578384fd5b50610bca87828801610aa5565b949794965050505060408301359260600135919050565b600060208284031215610bf2578081fd5b5035919050565b60008151808452815b81811015610c1e57602081850181015186830182015201610c02565b81811115610c2f5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b901515815260200190565b600060208252610b406020830184610bf9565b600060a08252610c8960a0830188610bf9565b8281036020840152610c9b8188610bf9565b604084019690965250506060810192909252151560809091015292915050565b60208082526026908201527f4f6e6c7920636974792061646d696e2063616e2063616c6c20746869732066756040820152653731ba34b7b760d11b606082015260800190565b60208082526017908201527f4368616c6c656e6765206973206e6f7420616374697665000000000000000000604082015260600190565b6020808252601a908201527f496e73756666696369656e742072657761726420706f696e7473000000000000604082015260600190565b6020808252601d908201527f4368616c6c656e676520697320616c726561647920696e616374697665000000604082015260600190565b6020808252602f908201527f4f6e6c79207265676973746572656420636974697a656e732063616e2063616c60408201526e36103a3434b990333ab731ba34b7b760891b606082015260800190565b6020808252601a908201527f436974697a656e20616c72656164792072656769737465726564000000000000604082015260600190565b6020808252601b908201527f4368616c6c656e676520616c726561647920636f6d706c657465640000000000604082015260600190565b90815260200190565b9283526020830191909152604082015260600190565b60008219821115610e9557610e95610f27565b500190565b600082610eb557634e487b7160e01b81526012600452602481fd5b500490565b600082821015610ecc57610ecc610f27565b500390565b600281046001821680610ee557607f821691505b60208210811415610f0657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415610f2057610f20610f27565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212209b609bf7ca718ed0f477bb15aa9a4955f17eeac65d325db24bd3bc0279b3eae864736f6c63430008000033