[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "buyer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountSpent", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "tokensBought", "type": "uint256" } ], "name": "Buy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [], "name": "PresaleClosed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nativeReceived", "type": "uint256" } ], "name": "Sell", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_maxPreSaleTokenBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_preSaleTarget", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_presaleOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_sellPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_taxCollector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "payableAmount", "type": "uint256" } ], "name": "getTokensToBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "initialSupply", "type": "uint256" }, { "internalType": "uint256", "name": "preSaleTarget", "type": "uint256" }, { "internalType": "uint256", "name": "maxPreSaleBalancePercentage", "type": "uint256" }, { "internalType": "address", "name": "routerAddress", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "sell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "sellPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensSold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526000600e556000600f60146101000a81548160ff0219169083151502179055503480156200003157600080fd5b50336040518060400160405280601381526020017f4d6f6f6e4b69737350726573616c6542617365000000000000000000000000008152506040518060400160405280600481526020017f4d4b5042000000000000000000000000000000000000000000000000000000008152508160039081620000b09190620004b5565b508060049081620000c29190620004b5565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013a5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001319190620005e1565b60405180910390fd5b6200014b816200017560201b60201c565b5060016006819055506000600960006101000a81548160ff021916908315150217905550620005fe565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002bd57607f821691505b602082108103620002d357620002d262000275565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200033d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002fe565b620003498683620002fe565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000396620003906200038a8462000361565b6200036b565b62000361565b9050919050565b6000819050919050565b620003b28362000375565b620003ca620003c1826200039d565b8484546200030b565b825550505050565b600090565b620003e1620003d2565b620003ee818484620003a7565b505050565b5b8181101562000416576200040a600082620003d7565b600181019050620003f4565b5050565b601f82111562000465576200042f81620002d9565b6200043a84620002ee565b810160208510156200044a578190505b620004626200045985620002ee565b830182620003f3565b50505b505050565b600082821c905092915050565b60006200048a600019846008026200046a565b1980831691505092915050565b6000620004a5838362000477565b9150826002028217905092915050565b620004c0826200023b565b67ffffffffffffffff811115620004dc57620004db62000246565b5b620004e88254620002a4565b620004f58282856200041a565b600060209050601f8311600181146200052d576000841562000518578287015190505b62000524858262000497565b86555062000594565b601f1984166200053d86620002d9565b60005b82811015620005675784890151825560018201915060208501945060208101905062000540565b8683101562000587578489015162000583601f89168262000477565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005c9826200059c565b9050919050565b620005db81620005bc565b82525050565b6000602082019050620005f86000830184620005d0565b92915050565b612a74806200060e6000396000f3fe60806040526004361061014b5760003560e01c80639025c1ed116100b6578063d3e15a9d1161006f578063d3e15a9d1461048b578063dcc6afda146104b6578063dd62ed3e146104e1578063e4849b321461051e578063f066c01714610547578063f2fde38b146105725761014b565b80639025c1ed14610388578063911e279c146103b357806395d89b41146103f0578063a65075271461041b578063a6f2ae3a14610444578063a9059cbb1461044e5761014b565b80634b94f50e116101085780634b94f50e146102765780634fb90eec146102a1578063518ab2a8146102de57806370a0823114610309578063715018a6146103465780638da5cb5b1461035d5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b857806318e8206e146101e357806323b872dd1461020e578063313ce5671461024b575b600080fd5b34801561015c57600080fd5b5061016561059b565b6040516101729190611bbc565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190611c86565b61062d565b6040516101af9190611ce1565b60405180910390f35b3480156101c457600080fd5b506101cd610650565b6040516101da9190611d0b565b60405180910390f35b3480156101ef57600080fd5b506101f861065a565b6040516102059190611d0b565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190611d26565b610660565b6040516102429190611ce1565b60405180910390f35b34801561025757600080fd5b5061026061068f565b60405161026d9190611d95565b60405180910390f35b34801561028257600080fd5b5061028b610698565b6040516102989190611d0b565b60405180910390f35b3480156102ad57600080fd5b506102c860048036038101906102c39190611db0565b610724565b6040516102d59190611d0b565b60405180910390f35b3480156102ea57600080fd5b506102f361078d565b6040516103009190611d0b565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190611ddd565b610793565b60405161033d9190611d0b565b60405180910390f35b34801561035257600080fd5b5061035b6107db565b005b34801561036957600080fd5b506103726107ef565b60405161037f9190611e19565b60405180910390f35b34801561039457600080fd5b5061039d610819565b6040516103aa9190611d0b565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190611db0565b61081f565b6040516103e79190611d0b565b60405180910390f35b3480156103fc57600080fd5b5061040561086a565b6040516104129190611bbc565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d9190611f69565b6108fc565b005b61044c610b5b565b005b34801561045a57600080fd5b5061047560048036038101906104709190611c86565b610d7e565b6040516104829190611ce1565b60405180910390f35b34801561049757600080fd5b506104a0610da1565b6040516104ad9190611ce1565b60405180910390f35b3480156104c257600080fd5b506104cb610db4565b6040516104d89190611d0b565b60405180910390f35b3480156104ed57600080fd5b506105086004803603810190610503919061202e565b610dba565b6040516105159190611d0b565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190611db0565b610e41565b005b34801561055357600080fd5b5061055c611062565b6040516105699190611e19565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190611ddd565b611088565b005b6060600a80546105aa9061209d565b80601f01602080910402602001604051908101604052809291908181526020018280546105d69061209d565b80156106235780601f106105f857610100808354040283529160200191610623565b820191906000526020600020905b81548152906001019060200180831161060657829003601f168201915b5050505050905090565b60008061063861110e565b9050610645818585611116565b600191505092915050565b6000600254905090565b60085481565b60008061066b61110e565b9050610678858285611128565b6106838585856111bc565b60019150509392505050565b60006012905090565b6000806064605a6106a7610650565b6106b191906120fd565b6106bb919061216e565b90506000600e54036106d257600c54915050610721565b80600e54101561071f57600081600e54600c54600d546106f2919061219f565b6106fc91906120fd565b610706919061216e565b905080600c5461071691906121d3565b92505050610721565b505b90565b600080606460058461073691906120fd565b610740919061216e565b905060008184610750919061219f565b9050600061075c610698565b90506000670de0b6b3a76400008284610775919061216e565b61077f91906120fd565b905080945050505050919050565b600e5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107e36112b0565b6107ed6000611337565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b6000808260115461083091906120fd565b90506000606460058361084391906120fd565b61084d919061216e565b90506000818361085d919061219f565b9050809350505050919050565b6060600b80546108799061209d565b80601f01602080910402602001604051908101604052809291908181526020018280546108a59061209d565b80156108f25780601f106108c7576101008083540402835291602001916108f2565b820191906000526020600020905b8154815290600101906020018083116108d557829003601f168201915b5050505050905090565b600960009054906101000a900460ff161561094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094390612279565b60405180910390fd5b606482148061095c57506103e882145b61099b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109929061230b565b60405180910390fd5b73cf49d642fa53e48888191b2b9e831ef24e001841600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600a90816109ff91906124d7565b5084600b9081610a0f91906124d7565b508260078190555060006064600a670de0b6b3a764000087610a3191906120fd565b610a3b91906120fd565b610a45919061216e565b90508281610a53919061216e565b60088190555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006064605a670de0b6b3a764000088610ab491906120fd565b610abe91906120fd565b610ac8919061216e565b9050610ae730670de0b6b3a764000088610ae291906120fd565b6113fd565b60075481610af5919061216e565b600c81905550600c546101f4610b0b91906120fd565b600d819055506001600960006101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550610b516000611337565b5050505050505050565b610b6361147f565b60003411610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906125f5565b60405180910390fd5b60006064600534610bb791906120fd565b610bc1919061216e565b905060008134610bd1919061219f565b90506000610bdd610698565b9050806011819055506000670de0b6b3a76400008284610bfd919061216e565b610c0791906120fd565b90506000610c1430610793565b905080821115610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5090612687565b60405180910390fd5b610c643033846111bc565b81600e6000828254610c7691906121d3565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f1cbc5ab135991bd2b6a4b034a04aa2aa086dac1371cb9b16b8b5e2ed6b036bed3484604051610cc59291906126a7565b60405180910390a26007544710158015610ceb5750600f60149054906101000a900460ff165b15610cfd57610cf86114c5565b610d6f565b844710610d6e57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f19350505050158015610d6c573d6000803e3d6000fd5b505b5b5050505050610d7c611652565b565b600080610d8961110e565b9050610d968185856111bc565b600191505092915050565b600f60149054906101000a900460ff1681565b60115481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e4961147f565b60008111610e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8390612742565b60405180910390fd5b60004790506000670de0b6b3a764000083610ea7919061216e565b601154610eb491906120fd565b905060006064600583610ec791906120fd565b610ed1919061216e565b905060008183610ee1919061219f565b905083811115610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d906127fa565b60405180910390fd5b610f313330876111bc565b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610f77573d6000803e3d6000fd5b5081471115610fea57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610fe8573d6000803e3d6000fd5b505b84600e6000828254610ffc919061219f565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fed7a144fad14804d5c249145e3e0e2b63a9eb455b76aee5bc92d711e9bba3e4a868360405161104b9291906126a7565b60405180910390a25050505061105f611652565b50565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110906112b0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111025760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016110f99190611e19565b60405180910390fd5b61110b81611337565b50565b600033905090565b611123838383600161165c565b505050565b60006111348484610dba565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111b657818110156111a6578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161119d9392919061281a565b60405180910390fd5b6111b58484848403600061165c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361122e5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112259190611e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112a05760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016112979190611e19565b60405180910390fd5b6112ab838383611833565b505050565b6112b861110e565b73ffffffffffffffffffffffffffffffffffffffff166112d66107ef565b73ffffffffffffffffffffffffffffffffffffffff1614611335576112f961110e565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161132c9190611e19565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361146f5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114669190611e19565b60405180910390fd5b61147b60008383611833565b5050565b6002600654036114bb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600681905550565b6000600f60146101000a81548160ff02191690831515021790555061151530601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661151030610793565b611116565b60075447101561155a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611551906128c3565b60405180910390fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f91b3f7247306115a330610793565b6115ac30610793565b4761dead6078426115bd91906121d3565b6040518863ffffffff1660e01b81526004016115de969594939291906128e3565b60606040518083038185885af11580156115fc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116219190612959565b5050507f178883df77bd1da8fe0f452c81786ec2daed0fe6bf06928f621f32239ff9e3fc60405160405180910390a1565b6001600681905550565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116ce5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016116c59190611e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117405760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016117379190611e19565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561182d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516118249190611d0b565b60405180910390a35b50505050565b600960009054906101000a900460ff16801561187b57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118935750600f60149054906101000a900460ff165b156118f7576000816118a484610793565b6118ae91906121d3565b90506008548111156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90612a1e565b60405180910390fd5b505b611902838383611907565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361195957806002600082825461194d91906121d3565b92505081905550611a2c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119e5578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016119dc9392919061281a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a755780600260008282540392505081905550611ac2565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b1f9190611d0b565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b66578082015181840152602081019050611b4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b8e82611b2c565b611b988185611b37565b9350611ba8818560208601611b48565b611bb181611b72565b840191505092915050565b60006020820190508181036000830152611bd68184611b83565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611c1d82611bf2565b9050919050565b611c2d81611c12565b8114611c3857600080fd5b50565b600081359050611c4a81611c24565b92915050565b6000819050919050565b611c6381611c50565b8114611c6e57600080fd5b50565b600081359050611c8081611c5a565b92915050565b60008060408385031215611c9d57611c9c611be8565b5b6000611cab85828601611c3b565b9250506020611cbc85828601611c71565b9150509250929050565b60008115159050919050565b611cdb81611cc6565b82525050565b6000602082019050611cf66000830184611cd2565b92915050565b611d0581611c50565b82525050565b6000602082019050611d206000830184611cfc565b92915050565b600080600060608486031215611d3f57611d3e611be8565b5b6000611d4d86828701611c3b565b9350506020611d5e86828701611c3b565b9250506040611d6f86828701611c71565b9150509250925092565b600060ff82169050919050565b611d8f81611d79565b82525050565b6000602082019050611daa6000830184611d86565b92915050565b600060208284031215611dc657611dc5611be8565b5b6000611dd484828501611c71565b91505092915050565b600060208284031215611df357611df2611be8565b5b6000611e0184828501611c3b565b91505092915050565b611e1381611c12565b82525050565b6000602082019050611e2e6000830184611e0a565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e7682611b72565b810181811067ffffffffffffffff82111715611e9557611e94611e3e565b5b80604052505050565b6000611ea8611bde565b9050611eb48282611e6d565b919050565b600067ffffffffffffffff821115611ed457611ed3611e3e565b5b611edd82611b72565b9050602081019050919050565b82818337600083830152505050565b6000611f0c611f0784611eb9565b611e9e565b905082815260208101848484011115611f2857611f27611e39565b5b611f33848285611eea565b509392505050565b600082601f830112611f5057611f4f611e34565b5b8135611f60848260208601611ef9565b91505092915050565b60008060008060008060c08789031215611f8657611f85611be8565b5b600087013567ffffffffffffffff811115611fa457611fa3611bed565b5b611fb089828a01611f3b565b965050602087013567ffffffffffffffff811115611fd157611fd0611bed565b5b611fdd89828a01611f3b565b9550506040611fee89828a01611c71565b9450506060611fff89828a01611c71565b935050608061201089828a01611c71565b92505060a061202189828a01611c3b565b9150509295509295509295565b6000806040838503121561204557612044611be8565b5b600061205385828601611c3b565b925050602061206485828601611c3b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120b557607f821691505b6020821081036120c8576120c761206e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061210882611c50565b915061211383611c50565b925082820261212181611c50565b91508282048414831517612138576121376120ce565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061217982611c50565b915061218483611c50565b9250826121945761219361213f565b5b828204905092915050565b60006121aa82611c50565b91506121b583611c50565b92508282039050818111156121cd576121cc6120ce565b5b92915050565b60006121de82611c50565b91506121e983611c50565b9250828201905080821115612201576122006120ce565b5b92915050565b7f4d656d65436f696e50726573616c65426173653a20616c726561647920696e6960008201527f7469616c697a6564000000000000000000000000000000000000000000000000602082015250565b6000612263602883611b37565b915061226e82612207565b604082019050919050565b6000602082019050818103600083015261229281612256565b9050919050565b7f4d656d65436f696e50726573616c65426173653a20496e76616c6964206d617860008201527f50726553616c6542616c616e636550657263656e746167650000000000000000602082015250565b60006122f5603883611b37565b915061230082612299565b604082019050919050565b60006020820190508181036000830152612324816122e8565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261238d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612350565b6123978683612350565b95508019841693508086168417925050509392505050565b6000819050919050565b60006123d46123cf6123ca84611c50565b6123af565b611c50565b9050919050565b6000819050919050565b6123ee836123b9565b6124026123fa826123db565b84845461235d565b825550505050565b600090565b61241761240a565b6124228184846123e5565b505050565b5b818110156124465761243b60008261240f565b600181019050612428565b5050565b601f82111561248b5761245c8161232b565b61246584612340565b81016020851015612474578190505b61248861248085612340565b830182612427565b50505b505050565b600082821c905092915050565b60006124ae60001984600802612490565b1980831691505092915050565b60006124c7838361249d565b9150826002028217905092915050565b6124e082611b2c565b67ffffffffffffffff8111156124f9576124f8611e3e565b5b612503825461209d565b61250e82828561244a565b600060209050601f831160018114612541576000841561252f578287015190505b61253985826124bb565b8655506125a1565b601f19841661254f8661232b565b60005b8281101561257757848901518255600182019150602085019450602081019050612552565b868310156125945784890151612590601f89168261249d565b8355505b6001600288020188555050505b505050505050565b7f596f75206e65656420746f2073656e6420736f6d652063757272656e63790000600082015250565b60006125df601e83611b37565b91506125ea826125a9565b602082019050919050565b6000602082019050818103600083015261260e816125d2565b9050919050565b7f4d6f6f6e4b69737350726553616c65426173653a204e6f7420656e6f7567682060008201527f746f6b656e7320696e2074686520726573657276650000000000000000000000602082015250565b6000612671603583611b37565b915061267c82612615565b604082019050919050565b600060208201905081810360008301526126a081612664565b9050919050565b60006040820190506126bc6000830185611cfc565b6126c96020830184611cfc565b9392505050565b7f596f75206e65656420746f2073656c6c206174206c6561737420736f6d65207460008201527f6f6b656e73000000000000000000000000000000000000000000000000000000602082015250565b600061272c602583611b37565b9150612737826126d0565b604082019050919050565b6000602082019050818103600083015261275b8161271f565b9050919050565b7f4d6f6f6e4b69737350726553616c65426173653a20436f6e747261637420646f60008201527f6573206e6f74206861766520656e6f7567682066756e647320746f206275792060208201527f6261636b2074686520746f6b656e730000000000000000000000000000000000604082015250565b60006127e4604f83611b37565b91506127ef82612762565b606082019050919050565b60006020820190508181036000830152612813816127d7565b9050919050565b600060608201905061282f6000830186611e0a565b61283c6020830185611cfc565b6128496040830184611cfc565b949350505050565b7f4d6f6f6e4b69737350726553616c65426173653a204e6f7420656e6f7567682060008201527f6176617820696e2074686520636f6e7472616374000000000000000000000000602082015250565b60006128ad603483611b37565b91506128b882612851565b604082019050919050565b600060208201905081810360008301526128dc816128a0565b9050919050565b600060c0820190506128f86000830189611e0a565b6129056020830188611cfc565b6129126040830187611cfc565b61291f6060830186611cfc565b61292c6080830185611e0a565b61293960a0830184611cfc565b979650505050505050565b60008151905061295381611c5a565b92915050565b60008060006060848603121561297257612971611be8565b5b600061298086828701612944565b935050602061299186828701612944565b92505060406129a286828701612944565b9150509250925092565b7f4d656d65436f696e50726553616c65426173653a2042616c616e63652077696c60008201527f6c20657863656564206d617820686f6c64696e67206361706163697479000000602082015250565b6000612a08603d83611b37565b9150612a13826129ac565b604082019050919050565b60006020820190508181036000830152612a37816129fb565b905091905056fea2646970667358221220d9f06b51d1dfebafff56b1c68158f8de96f0825dab50aba5e6536f040f66a96864736f6c63430008140033