[ { "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" }, { "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": [ { "internalType": "address[]", "name": "shareholderAddresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "shareholderMaxAmount", "type": "uint256[]" }, { "internalType": "uint256", "name": "initialVestingPeriod", "type": "uint256" } ], "name": "addGroup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "vestingGroupAddress", "type": "address" }, { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "addShareholder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "airdrop", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "changePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "usdtAmount", "type": "uint256" } ], "name": "convertUsdtToEth", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "usdtAmount", "type": "uint256" } ], "name": "convertUsdtToShib", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "treasuryVestingGroup", "type": "address" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "endPrivateListing", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getEthPriceInUSDT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getShibPriceInEth", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintForShib", "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": "privateListingEndTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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" }, { "inputs": [], "name": "usdtPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "vestingGroups", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawShib", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c060405262015f90600655348015610016575f80fd5b50336040518060400160405280600a81526020017f5354415820546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f535441580000000000000000000000000000000000000000000000000000000081525081600390816100939190610a6b565b5080600490816100a39190610a6b565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610116575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161010d9190610b79565b60405180910390fd5b6101258161026660201b60201c565b50738dd1cd88f43af196ae478e91b9f5e4ac69a97c6173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505073ee9f2375b4bdf6387aa8265dd4fb8f16512a1d4673ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505f8067ffffffffffffffff8111156101d1576101d061083b565b5b6040519080825280602002602001820160405280156101ff5781602001602082028036833780820191505090505b5090505f8067ffffffffffffffff81111561021d5761021c61083b565b5b60405190808252806020026020018201604052801561024b5781602001602082028036833780820191505090505b50905061025f82825f61032960201b60201c565b5050611079565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6103376104ad60201b60201c565b5f805b83518110156103785783818151811061035657610355610b92565b5b6020026020010151826103699190610bec565b9150808060010191505061033a565b5061038761054660201b60201c565b600a6103939190610d5a565b633b9aca006103a29190610da4565b816103b161054e60201b60201c565b6103bb9190610bec565b11156103fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f390610e3f565b60405180910390fd5b5f8484848460405161040d90610824565b61041a9493929190610fda565b604051809103905ff080158015610433573d5f803e3d5ffd5b509050610446818361055760201b60201c565b600881908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b6104bb6105dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166104df6105e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610544576105086105dc60201b60201c565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161053b9190610b79565b60405180910390fd5b565b5f6009905090565b5f600254905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105c7575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016105be9190610b79565b60405180910390fd5b6105d85f838361060b60201b60201c565b5050565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361065b578060025f82825461064f9190610bec565b92505081905550610729565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156106e4578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016106db9392919061102b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610770578060025f82825403925050819055506107ba565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108179190611060565b60405180910390a3505050565b61141f8061528d83390190565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806108ac57607f821691505b6020821081036108bf576108be610868565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026109217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826108e6565b61092b86836108e6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61096f61096a61096584610943565b61094c565b610943565b9050919050565b5f819050919050565b61098883610955565b61099c61099482610976565b8484546108f2565b825550505050565b5f90565b6109b06109a4565b6109bb81848461097f565b505050565b5b818110156109de576109d35f826109a8565b6001810190506109c1565b5050565b601f821115610a23576109f4816108c5565b6109fd846108d7565b81016020851015610a0c578190505b610a20610a18856108d7565b8301826109c0565b50505b505050565b5f82821c905092915050565b5f610a435f1984600802610a28565b1980831691505092915050565b5f610a5b8383610a34565b9150826002028217905092915050565b610a7482610831565b67ffffffffffffffff811115610a8d57610a8c61083b565b5b610a978254610895565b610aa28282856109e2565b5f60209050601f831160018114610ad3575f8415610ac1578287015190505b610acb8582610a50565b865550610b32565b601f198416610ae1866108c5565b5f5b82811015610b0857848901518255600182019150602085019450602081019050610ae3565b86831015610b255784890151610b21601f891682610a34565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b6382610b3a565b9050919050565b610b7381610b59565b82525050565b5f602082019050610b8c5f830184610b6a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610bf682610943565b9150610c0183610943565b9250828201905080821115610c1957610c18610bbf565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115610c7457808604811115610c5057610c4f610bbf565b5b6001851615610c5f5780820291505b8081029050610c6d85610c1f565b9450610c34565b94509492505050565b5f82610c8c5760019050610d47565b81610c99575f9050610d47565b8160018114610caf5760028114610cb957610ce8565b6001915050610d47565b60ff841115610ccb57610cca610bbf565b5b8360020a915084821115610ce257610ce1610bbf565b5b50610d47565b5060208310610133831016604e8410600b8410161715610d1d5782820a905083811115610d1857610d17610bbf565b5b610d47565b610d2a8484846001610c2b565b92509050818404811115610d4157610d40610bbf565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610d6482610943565b9150610d6f83610d4e565b9250610d9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610c7d565b905092915050565b5f610dae82610943565b9150610db983610943565b9250828202610dc781610943565b91508282048414831517610dde57610ddd610bbf565b5b5092915050565b5f82825260208201905092915050565b7f4d617820737570706c79206578636565646564000000000000000000000000005f82015250565b5f610e29601383610de5565b9150610e3482610df5565b602082019050919050565b5f6020820190508181035f830152610e5681610e1d565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610e8f81610b59565b82525050565b5f610ea08383610e86565b60208301905092915050565b5f602082019050919050565b5f610ec282610e5d565b610ecc8185610e67565b9350610ed783610e77565b805f5b83811015610f07578151610eee8882610e95565b9750610ef983610eac565b925050600181019050610eda565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610f4681610943565b82525050565b5f610f578383610f3d565b60208301905092915050565b5f602082019050919050565b5f610f7982610f14565b610f838185610f1e565b9350610f8e83610f2e565b805f5b83811015610fbe578151610fa58882610f4c565b9750610fb083610f63565b925050600181019050610f91565b5085935050505092915050565b610fd481610943565b82525050565b5f6080820190508181035f830152610ff28187610eb8565b905081810360208301526110068186610f6f565b90506110156040830185610fcb565b6110226060830184610fcb565b95945050505050565b5f60608201905061103e5f830186610b6a565b61104b6020830185610fcb565b6110586040830184610fcb565b949350505050565b5f6020820190506110735f830184610fcb565b92915050565b60805160a0516141f361109a5f395f610e0201525f61116101526141f35ff3fe6080604052600436106101c1575f3560e01c8063715018a6116100f6578063a2b40d1911610094578063dd62ed3e11610063578063dd62ed3e146105f5578063e136f65f14610631578063eeb6d2dd1461065b578063f2fde38b14610697576101c1565b8063a2b40d191461052b578063a9059cbb14610553578063cbf4e4251461058f578063d5abeb01146105cb576101c1565b8063930928ab116100d0578063930928ab1461049157806395c2b760146104bb57806395d89b41146104e5578063a0712d681461050f576101c1565b8063715018a6146104295780638ba4cc3c1461043f5780638da5cb5b14610467576101c1565b806330cad0351161016357806346b8ec8a1161013d57806346b8ec8a146103855780635faef62b146103ad578063609af8ca146103d757806370a08231146103ed576101c1565b806330cad0351461031d578063313ce567146103455780633ccfd60b1461036f576101c1565b80631cf0970a1161019f5780631cf0970a14610255578063203f9cdd1461027d578063236769d5146102a557806323b872dd146102e1576101c1565b806306fdde03146101c5578063095ea7b3146101ef57806318160ddd1461022b575b5f80fd5b3480156101d0575f80fd5b506101d96106bf565b6040516101e69190611e65565b60405180910390f35b3480156101fa575f80fd5b5061021560048036038101906102109190611f23565b61074f565b6040516102229190611f7b565b60405180910390f35b348015610236575f80fd5b5061023f610771565b60405161024c9190611fa3565b60405180910390f35b348015610260575f80fd5b5061027b60048036038101906102769190611fbc565b61077a565b005b348015610288575f80fd5b506102a3600480360381019061029e919061200c565b610875565b005b3480156102b0575f80fd5b506102cb60048036038101906102c6919061204a565b6108e1565b6040516102d89190612084565b60405180910390f35b3480156102ec575f80fd5b5061030760048036038101906103029190611fbc565b61091c565b6040516103149190611f7b565b60405180910390f35b348015610328575f80fd5b50610343600480360381019061033e919061229d565b61094a565b005b348015610350575f80fd5b50610359610ab6565b6040516103669190612340565b60405180910390f35b34801561037a575f80fd5b50610383610abe565b005b348015610390575f80fd5b506103ab60048036038101906103a6919061204a565b610bbf565b005b3480156103b8575f80fd5b506103c1610dfe565b6040516103ce9190611fa3565b60405180910390f35b3480156103e2575f80fd5b506103eb610e9a565b005b3480156103f8575f80fd5b50610413600480360381019061040e9190612359565b611050565b6040516104209190611fa3565b60405180910390f35b348015610434575f80fd5b5061043d611095565b005b34801561044a575f80fd5b5061046560048036038101906104609190611f23565b6110a8565b005b348015610472575f80fd5b5061047b611135565b6040516104889190612084565b60405180910390f35b34801561049c575f80fd5b506104a561115d565b6040516104b29190611fa3565b60405180910390f35b3480156104c6575f80fd5b506104cf6111f9565b6040516104dc9190611fa3565b60405180910390f35b3480156104f0575f80fd5b506104f96111ff565b6040516105069190611e65565b60405180910390f35b6105296004803603810190610524919061204a565b61128f565b005b348015610536575f80fd5b50610551600480360381019061054c919061204a565b6114dc565b005b34801561055e575f80fd5b5061057960048036038101906105749190611f23565b6114ee565b6040516105869190611f7b565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b0919061204a565b611510565b6040516105c29190611fa3565b60405180910390f35b3480156105d6575f80fd5b506105df611555565b6040516105ec9190611fa3565b60405180910390f35b348015610600575f80fd5b5061061b6004803603810190610616919061200c565b61155d565b6040516106289190611fa3565b60405180910390f35b34801561063c575f80fd5b506106456115df565b6040516106529190611fa3565b60405180910390f35b348015610666575f80fd5b50610681600480360381019061067c919061204a565b6115e5565b60405161068e9190611fa3565b60405180910390f35b3480156106a2575f80fd5b506106bd60048036038101906106b89190612359565b611618565b005b6060600380546106ce906123b1565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa906123b1565b80156107455780601f1061071c57610100808354040283529160200191610745565b820191905f5260205f20905b81548152906001019060200180831161072857829003601f168201915b5050505050905090565b5f8061075961169c565b90506107668185856116a3565b600191505092915050565b5f600254905090565b6107826116b5565b61078a610ab6565b600a610796919061253d565b633b9aca006107a59190612587565b816107ae610771565b6107b891906125c8565b11156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f090612645565b60405180910390fd5b5f839050610807848361173c565b8073ffffffffffffffffffffffffffffffffffffffff16637572499084846040518363ffffffff1660e01b8152600401610842929190612663565b5f604051808303815f87803b158015610859575f80fd5b505af115801561086b573d5f803e3d5ffd5b5050505050505050565b61087d6116b5565b426007819055505f61088d610ab6565b600a610899919061253d565b633b9aca006108a89190612587565b9050806108b3610771565b10156108dc575f6108c2610771565b826108cd919061268a565b90506108da84848361077a565b505b505050565b600881815481106108f0575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8061092661169c565b90506109338582856117bb565b61093e85858561184d565b60019150509392505050565b6109526116b5565b5f805b835181101561099357838181518110610971576109706126bd565b5b60200260200101518261098491906125c8565b91508080600101915050610955565b5061099c610ab6565b600a6109a8919061253d565b633b9aca006109b79190612587565b816109c0610771565b6109ca91906125c8565b1115610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0290612645565b60405180910390fd5b5f84848484604051610a1c90611de8565b610a299493929190612858565b604051809103905ff080158015610a42573d5f803e3d5ffd5b509050610a4f818361173c565b600881908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b5f6009905090565b610ac66116b5565b5f4790505f8111610b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b03906128f3565b60405180910390fd5b5f610b15611135565b73ffffffffffffffffffffffffffffffffffffffff1682604051610b389061293e565b5f6040518083038185875af1925050503d805f8114610b72576040519150601f19603f3d011682016040523d82523d5f602084013e610b77565b606091505b5050905080610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb29061299c565b60405180910390fd5b5050565b5f60075414610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90612a04565b60405180910390fd5b5f610c38610c0f610ab6565b600a610c1b919061253d565b60065484610c299190612587565b610c339190612a4f565b611510565b9050610c42610ab6565b600a610c4e919061253d565b633b9aca00610c5d9190612587565b82610c66610771565b610c7091906125c8565b1115610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca890612645565b60405180910390fd5b7395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401610d0293929190612a7f565b6020604051808303815f875af1158015610d1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d429190612ade565b505f60085f81548110610d5857610d576126bd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f819050610d90828561173c565b8073ffffffffffffffffffffffffffffffffffffffff16637572499033866040518363ffffffff1660e01b8152600401610dcb929190612663565b5f604051808303815f87803b158015610de2575f80fd5b505af1158015610df4573d5f803e3d5ffd5b5050505050505050565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610e69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8d9190612b8f565b5050509150508091505090565b610ea26116b5565b5f7395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ef09190612084565b602060405180830381865afa158015610f0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2f9190612c06565b90505f8111610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90612c7b565b60405180910390fd5b5f7395ad61b0a150d79219dcf64e1e6cc01f0b64c4ce73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610fac611135565b846040518363ffffffff1660e01b8152600401610fca929190612663565b6020604051808303815f875af1158015610fe6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100a9190612ade565b90508061104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390612ce3565b60405180910390fd5b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61109d6116b5565b6110a65f61193d565b565b6110b06116b5565b6110b8610ab6565b600a6110c4919061253d565b633b9aca006110d39190612587565b816110dc610771565b6110e691906125c8565b1115611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90612645565b60405180910390fd5b611131828261173c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156111c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ec9190612b8f565b5050509150508091505090565b60075481565b60606004805461120e906123b1565b80601f016020809104026020016040519081016040528092919081815260200182805461123a906123b1565b80156112855780601f1061125c57610100808354040283529160200191611285565b820191905f5260205f20905b81548152906001019060200180831161126857829003601f168201915b5050505050905090565b5f600754146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca90612a04565b60405180910390fd5b5f6113086112df610ab6565b600a6112eb919061253d565b600654846112f99190612587565b6113039190612a4f565b6115e5565b9050611312610ab6565b600a61131e919061253d565b633b9aca0061132d9190612587565b82611336610771565b61134091906125c8565b1115611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137890612645565b60405180910390fd5b803410156113c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90612d4b565b60405180910390fd5b80341115611421575f81346113d9919061268a565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561141e573d5f803e3d5ffd5b50505b5f60085f81548110611436576114356126bd565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f81905061146e828561173c565b8073ffffffffffffffffffffffffffffffffffffffff16637572499033866040518363ffffffff1660e01b81526004016114a9929190612663565b5f604051808303815f87803b1580156114c0575f80fd5b505af11580156114d2573d5f803e3d5ffd5b5050505050505050565b6114e46116b5565b8060068190555050565b5f806114f861169c565b905061150581858561184d565b600191505092915050565b5f8061151a61115d565b90505f611526846115e5565b90505f670de0b6b3a7640000838361153e9190612a4f565b6115489190612587565b9050809350505050919050565b633b9aca0081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065481565b5f806115ef610dfe565b90505f620f424082856116029190612587565b61160c9190612a4f565b90508092505050919050565b6116206116b5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611690575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016116879190612084565b60405180910390fd5b6116998161193d565b50565b5f33905090565b6116b08383836001611a00565b505050565b6116bd61169c565b73ffffffffffffffffffffffffffffffffffffffff166116db611135565b73ffffffffffffffffffffffffffffffffffffffff161461173a576116fe61169c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016117319190612084565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117ac575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016117a39190612084565b60405180910390fd5b6117b75f8383611bcf565b5050565b5f6117c6848461155d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118475781811015611838578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161182f93929190612d69565b60405180910390fd5b61184684848484035f611a00565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118bd575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016118b49190612084565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361192d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016119249190612084565b60405180910390fd5b611938838383611bcf565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a70575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611a679190612084565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ae0575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611ad79190612084565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611bc9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611bc09190611fa3565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c1f578060025f828254611c1391906125c8565b92505081905550611ced565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ca8578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611c9f93929190612d69565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d34578060025f8282540392505081905550611d7e565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ddb9190611fa3565b60405180910390a3505050565b61141f80612d9f83390190565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e3782611df5565b611e418185611dff565b9350611e51818560208601611e0f565b611e5a81611e1d565b840191505092915050565b5f6020820190508181035f830152611e7d8184611e2d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ebf82611e96565b9050919050565b611ecf81611eb5565b8114611ed9575f80fd5b50565b5f81359050611eea81611ec6565b92915050565b5f819050919050565b611f0281611ef0565b8114611f0c575f80fd5b50565b5f81359050611f1d81611ef9565b92915050565b5f8060408385031215611f3957611f38611e8e565b5b5f611f4685828601611edc565b9250506020611f5785828601611f0f565b9150509250929050565b5f8115159050919050565b611f7581611f61565b82525050565b5f602082019050611f8e5f830184611f6c565b92915050565b611f9d81611ef0565b82525050565b5f602082019050611fb65f830184611f94565b92915050565b5f805f60608486031215611fd357611fd2611e8e565b5b5f611fe086828701611edc565b9350506020611ff186828701611edc565b925050604061200286828701611f0f565b9150509250925092565b5f806040838503121561202257612021611e8e565b5b5f61202f85828601611edc565b925050602061204085828601611edc565b9150509250929050565b5f6020828403121561205f5761205e611e8e565b5b5f61206c84828501611f0f565b91505092915050565b61207e81611eb5565b82525050565b5f6020820190506120975f830184612075565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6120d782611e1d565b810181811067ffffffffffffffff821117156120f6576120f56120a1565b5b80604052505050565b5f612108611e85565b905061211482826120ce565b919050565b5f67ffffffffffffffff821115612133576121326120a1565b5b602082029050602081019050919050565b5f80fd5b5f61215a61215584612119565b6120ff565b9050808382526020820190506020840283018581111561217d5761217c612144565b5b835b818110156121a657806121928882611edc565b84526020840193505060208101905061217f565b5050509392505050565b5f82601f8301126121c4576121c361209d565b5b81356121d4848260208601612148565b91505092915050565b5f67ffffffffffffffff8211156121f7576121f66120a1565b5b602082029050602081019050919050565b5f61221a612215846121dd565b6120ff565b9050808382526020820190506020840283018581111561223d5761223c612144565b5b835b8181101561226657806122528882611f0f565b84526020840193505060208101905061223f565b5050509392505050565b5f82601f8301126122845761228361209d565b5b8135612294848260208601612208565b91505092915050565b5f805f606084860312156122b4576122b3611e8e565b5b5f84013567ffffffffffffffff8111156122d1576122d0611e92565b5b6122dd868287016121b0565b935050602084013567ffffffffffffffff8111156122fe576122fd611e92565b5b61230a86828701612270565b925050604061231b86828701611f0f565b9150509250925092565b5f60ff82169050919050565b61233a81612325565b82525050565b5f6020820190506123535f830184612331565b92915050565b5f6020828403121561236e5761236d611e8e565b5b5f61237b84828501611edc565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806123c857607f821691505b6020821081036123db576123da612384565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156124635780860481111561243f5761243e6123e1565b5b600185161561244e5780820291505b808102905061245c8561240e565b9450612423565b94509492505050565b5f8261247b5760019050612536565b81612488575f9050612536565b816001811461249e57600281146124a8576124d7565b6001915050612536565b60ff8411156124ba576124b96123e1565b5b8360020a9150848211156124d1576124d06123e1565b5b50612536565b5060208310610133831016604e8410600b841016171561250c5782820a905083811115612507576125066123e1565b5b612536565b612519848484600161241a565b925090508184048111156125305761252f6123e1565b5b81810290505b9392505050565b5f61254782611ef0565b915061255283612325565b925061257f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461246c565b905092915050565b5f61259182611ef0565b915061259c83611ef0565b92508282026125aa81611ef0565b915082820484148315176125c1576125c06123e1565b5b5092915050565b5f6125d282611ef0565b91506125dd83611ef0565b92508282019050808211156125f5576125f46123e1565b5b92915050565b7f4d617820737570706c79206578636565646564000000000000000000000000005f82015250565b5f61262f601383611dff565b915061263a826125fb565b602082019050919050565b5f6020820190508181035f83015261265c81612623565b9050919050565b5f6040820190506126765f830185612075565b6126836020830184611f94565b9392505050565b5f61269482611ef0565b915061269f83611ef0565b92508282039050818111156126b7576126b66123e1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61271c81611eb5565b82525050565b5f61272d8383612713565b60208301905092915050565b5f602082019050919050565b5f61274f826126ea565b61275981856126f4565b935061276483612704565b805f5b8381101561279457815161277b8882612722565b975061278683612739565b925050600181019050612767565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6127d381611ef0565b82525050565b5f6127e483836127ca565b60208301905092915050565b5f602082019050919050565b5f612806826127a1565b61281081856127ab565b935061281b836127bb565b805f5b8381101561284b57815161283288826127d9565b975061283d836127f0565b92505060018101905061281e565b5085935050505092915050565b5f6080820190508181035f8301526128708187612745565b9050818103602083015261288481866127fc565b90506128936040830185611f94565b6128a06060830184611f94565b95945050505050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f6128dd601283611dff565b91506128e8826128a9565b602082019050919050565b5f6020820190508181035f83015261290a816128d1565b9050919050565b5f81905092915050565b50565b5f6129295f83612911565b91506129348261291b565b5f82019050919050565b5f6129488261291e565b9150819050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f612986600f83611dff565b915061299182612952565b602082019050919050565b5f6020820190508181035f8301526129b38161297a565b9050919050565b7f4d696e74696e672069732066696e6973686564000000000000000000000000005f82015250565b5f6129ee601383611dff565b91506129f9826129ba565b602082019050919050565b5f6020820190508181035f830152612a1b816129e2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a5982611ef0565b9150612a6483611ef0565b925082612a7457612a73612a22565b5b828204905092915050565b5f606082019050612a925f830186612075565b612a9f6020830185612075565b612aac6040830184611f94565b949350505050565b612abd81611f61565b8114612ac7575f80fd5b50565b5f81519050612ad881612ab4565b92915050565b5f60208284031215612af357612af2611e8e565b5b5f612b0084828501612aca565b91505092915050565b5f69ffffffffffffffffffff82169050919050565b612b2781612b09565b8114612b31575f80fd5b50565b5f81519050612b4281612b1e565b92915050565b5f819050919050565b612b5a81612b48565b8114612b64575f80fd5b50565b5f81519050612b7581612b51565b92915050565b5f81519050612b8981611ef9565b92915050565b5f805f805f60a08688031215612ba857612ba7611e8e565b5b5f612bb588828901612b34565b9550506020612bc688828901612b67565b9450506040612bd788828901612b7b565b9350506060612be888828901612b7b565b9250506080612bf988828901612b34565b9150509295509295909350565b5f60208284031215612c1b57612c1a611e8e565b5b5f612c2884828501612b7b565b91505092915050565b7f4e6f205348494220746f6b656e7320696e2074686520636f6e747261637400005f82015250565b5f612c65601e83611dff565b9150612c7082612c31565b602082019050919050565b5f6020820190508181035f830152612c9281612c59565b9050919050565b7f53484942207472616e73666572206661696c65640000000000000000000000005f82015250565b5f612ccd601483611dff565b9150612cd882612c99565b602082019050919050565b5f6020820190508181035f830152612cfa81612cc1565b9050919050565b7f496e73756666696369656e74207061796d656e740000000000000000000000005f82015250565b5f612d35601483611dff565b9150612d4082612d01565b602082019050919050565b5f6020820190508181035f830152612d6281612d29565b9050919050565b5f606082019050612d7c5f830186612075565b612d896020830185611f94565b612d966040830184611f94565b94935050505056fe60e060405234801561000f575f80fd5b5060405161141f38038061141f83398181016040528101906100319190610522565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009991906105cd565b60405180910390fd5b6100b1816101b360201b60201c565b503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508160a081815250508060c081815250505f5b84518110156101a957604051806040016040528085838151811061011f5761011e6105e6565b5b602002602001015181526020015f81525060015f878481518110610146576101456105e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015590505080806001019150506100f8565b5050505050610613565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6102cf82610289565b810181811067ffffffffffffffff821117156102ee576102ed610299565b5b80604052505050565b5f610300610274565b905061030c82826102c6565b919050565b5f67ffffffffffffffff82111561032b5761032a610299565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61036982610340565b9050919050565b6103798161035f565b8114610383575f80fd5b50565b5f8151905061039481610370565b92915050565b5f6103ac6103a784610311565b6102f7565b905080838252602082019050602084028301858111156103cf576103ce61033c565b5b835b818110156103f857806103e48882610386565b8452602084019350506020810190506103d1565b5050509392505050565b5f82601f83011261041657610415610285565b5b815161042684826020860161039a565b91505092915050565b5f67ffffffffffffffff82111561044957610448610299565b5b602082029050602081019050919050565b5f819050919050565b61046c8161045a565b8114610476575f80fd5b50565b5f8151905061048781610463565b92915050565b5f61049f61049a8461042f565b6102f7565b905080838252602082019050602084028301858111156104c2576104c161033c565b5b835b818110156104eb57806104d78882610479565b8452602084019350506020810190506104c4565b5050509392505050565b5f82601f83011261050957610508610285565b5b815161051984826020860161048d565b91505092915050565b5f805f806080858703121561053a5761053961027d565b5b5f85015167ffffffffffffffff81111561055757610556610281565b5b61056387828801610402565b945050602085015167ffffffffffffffff81111561058457610583610281565b5b610590878288016104f5565b93505060406105a187828801610479565b92505060606105b287828801610479565b91505092959194509250565b6105c78161035f565b82525050565b5f6020820190506105e05f8301846105be565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c051610dcd6106525f395f6107bc01525f818161057d015261068201525f818161032b015281816105ea01526107980152610dcd5ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c80637f69f44d1161008a578063a68da36b11610064578063a68da36b146101da578063ae066897146101f8578063ce47d6d414610216578063f2fde38b14610234576100cd565b80637f69f44d1461016e5780638da5cb5b1461019e578063936c63d9146101bc576100cd565b806320988cef146100d15780633ccfd60b146100ef5780635c2930ad146100f9578063715018a61461012a578063757249901461013457806377f73b4a14610150575b5f80fd5b6100d9610250565b6040516100e691906109cf565b60405180910390f35b6100f7610257565b005b610113600480360381019061010e9190610a46565b610433565b604051610121929190610a71565b60405180910390f35b610132610453565b005b61014e60048036038101906101499190610ac2565b610466565b005b61015861057b565b60405161016591906109cf565b60405180910390f35b61018860048036038101906101839190610a46565b61059f565b60405161019591906109cf565b60405180910390f35b6101a6610769565b6040516101b39190610b0f565b60405180910390f35b6101c4610790565b6040516101d191906109cf565b60405180910390f35b6101e2610796565b6040516101ef9190610b0f565b60405180910390f35b6102006107ba565b60405161020d91906109cf565b60405180910390f35b61021e6107de565b60405161022b91906109cf565b60405180910390f35b61024e60048036038101906102499190610a46565b6107e4565b005b62278d0081565b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154116102d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cf90610b82565b60405180910390fd5b5f6102e23361059f565b90505f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015490505f7f000000000000000000000000000000000000000000000000000000000000000090505f82846103599190610bcd565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610396929190610c00565b6020604051808303815f875af11580156103b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d69190610c5c565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8282546104269190610c87565b9250508190555050505050565b6001602052805f5260405f205f91509050805f0154908060010154905082565b61045b610868565b6104645f6108ef565b565b61046e610868565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154111561050f578060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282546105039190610c87565b92505081905550610577565b60405180604001604052808281526020015f81525060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101559050505b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f805f90505f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015490505f7f000000000000000000000000000000000000000000000000000000000000000090505f8173ffffffffffffffffffffffffffffffffffffffff166395c2b7606040518163ffffffff1660e01b8152600401602060405180830381865afa158015610655573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106799190610cce565b90505f62278d007f00000000000000000000000000000000000000000000000000000000000000006106ab9190610cf9565b826106b69190610c87565b90505f821180156106c75750428111155b156106dd576103e8856106da9190610c87565b94505b80421180156106eb57505f82115b1561073f575f81426106fd9190610bcd565b90505f62278d008261070f9190610d67565b90506103e88161071f9190610cf9565b8761072a9190610c87565b965061271087111561073c5761271096505b50505b5f612710868661074f9190610cf9565b6107599190610d67565b9050809650505050505050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61271081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103e881565b6107ec610868565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361085c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108539190610b0f565b60405180910390fd5b610865816108ef565b50565b6108706109b0565b73ffffffffffffffffffffffffffffffffffffffff1661088e610769565b73ffffffffffffffffffffffffffffffffffffffff16146108ed576108b16109b0565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108e49190610b0f565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b6109c9816109b7565b82525050565b5f6020820190506109e25f8301846109c0565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a15826109ec565b9050919050565b610a2581610a0b565b8114610a2f575f80fd5b50565b5f81359050610a4081610a1c565b92915050565b5f60208284031215610a5b57610a5a6109e8565b5b5f610a6884828501610a32565b91505092915050565b5f604082019050610a845f8301856109c0565b610a9160208301846109c0565b9392505050565b610aa1816109b7565b8114610aab575f80fd5b50565b5f81359050610abc81610a98565b92915050565b5f8060408385031215610ad857610ad76109e8565b5b5f610ae585828601610a32565b9250506020610af685828601610aae565b9150509250929050565b610b0981610a0b565b82525050565b5f602082019050610b225f830184610b00565b92915050565b5f82825260208201905092915050565b7f4f6e6c79207368617265686f6c6465722063616e2063616c6c000000000000005f82015250565b5f610b6c601983610b28565b9150610b7782610b38565b602082019050919050565b5f6020820190508181035f830152610b9981610b60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610bd7826109b7565b9150610be2836109b7565b9250828203905081811115610bfa57610bf9610ba0565b5b92915050565b5f604082019050610c135f830185610b00565b610c2060208301846109c0565b9392505050565b5f8115159050919050565b610c3b81610c27565b8114610c45575f80fd5b50565b5f81519050610c5681610c32565b92915050565b5f60208284031215610c7157610c706109e8565b5b5f610c7e84828501610c48565b91505092915050565b5f610c91826109b7565b9150610c9c836109b7565b9250828201905080821115610cb457610cb3610ba0565b5b92915050565b5f81519050610cc881610a98565b92915050565b5f60208284031215610ce357610ce26109e8565b5b5f610cf084828501610cba565b91505092915050565b5f610d03826109b7565b9150610d0e836109b7565b9250828202610d1c816109b7565b91508282048414831517610d3357610d32610ba0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610d71826109b7565b9150610d7c836109b7565b925082610d8c57610d8b610d3a565b5b82820490509291505056fea26469706673582212205a253e430447e73833580f6d1ae26ab6220f495ff48c4419425289c81c327d3c64736f6c634300081a0033a26469706673582212209eecd6959b1d68077473aea31b627db473beb56ef64f1b949ec4cc10f6358b4d64736f6c634300081a003360e060405234801561000f575f80fd5b5060405161141f38038061141f83398181016040528101906100319190610522565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009991906105cd565b60405180910390fd5b6100b1816101b360201b60201c565b503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508160a081815250508060c081815250505f5b84518110156101a957604051806040016040528085838151811061011f5761011e6105e6565b5b602002602001015181526020015f81525060015f878481518110610146576101456105e6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f01556020820151816001015590505080806001019150506100f8565b5050505050610613565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6102cf82610289565b810181811067ffffffffffffffff821117156102ee576102ed610299565b5b80604052505050565b5f610300610274565b905061030c82826102c6565b919050565b5f67ffffffffffffffff82111561032b5761032a610299565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61036982610340565b9050919050565b6103798161035f565b8114610383575f80fd5b50565b5f8151905061039481610370565b92915050565b5f6103ac6103a784610311565b6102f7565b905080838252602082019050602084028301858111156103cf576103ce61033c565b5b835b818110156103f857806103e48882610386565b8452602084019350506020810190506103d1565b5050509392505050565b5f82601f83011261041657610415610285565b5b815161042684826020860161039a565b91505092915050565b5f67ffffffffffffffff82111561044957610448610299565b5b602082029050602081019050919050565b5f819050919050565b61046c8161045a565b8114610476575f80fd5b50565b5f8151905061048781610463565b92915050565b5f61049f61049a8461042f565b6102f7565b905080838252602082019050602084028301858111156104c2576104c161033c565b5b835b818110156104eb57806104d78882610479565b8452602084019350506020810190506104c4565b5050509392505050565b5f82601f83011261050957610508610285565b5b815161051984826020860161048d565b91505092915050565b5f805f806080858703121561053a5761053961027d565b5b5f85015167ffffffffffffffff81111561055757610556610281565b5b61056387828801610402565b945050602085015167ffffffffffffffff81111561058457610583610281565b5b610590878288016104f5565b93505060406105a187828801610479565b92505060606105b287828801610479565b91505092959194509250565b6105c78161035f565b82525050565b5f6020820190506105e05f8301846105be565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b60805160a05160c051610dcd6106525f395f6107bc01525f818161057d015261068201525f818161032b015281816105ea01526107980152610dcd5ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c80637f69f44d1161008a578063a68da36b11610064578063a68da36b146101da578063ae066897146101f8578063ce47d6d414610216578063f2fde38b14610234576100cd565b80637f69f44d1461016e5780638da5cb5b1461019e578063936c63d9146101bc576100cd565b806320988cef146100d15780633ccfd60b146100ef5780635c2930ad146100f9578063715018a61461012a578063757249901461013457806377f73b4a14610150575b5f80fd5b6100d9610250565b6040516100e691906109cf565b60405180910390f35b6100f7610257565b005b610113600480360381019061010e9190610a46565b610433565b604051610121929190610a71565b60405180910390f35b610132610453565b005b61014e60048036038101906101499190610ac2565b610466565b005b61015861057b565b60405161016591906109cf565b60405180910390f35b61018860048036038101906101839190610a46565b61059f565b60405161019591906109cf565b60405180910390f35b6101a6610769565b6040516101b39190610b0f565b60405180910390f35b6101c4610790565b6040516101d191906109cf565b60405180910390f35b6101e2610796565b6040516101ef9190610b0f565b60405180910390f35b6102006107ba565b60405161020d91906109cf565b60405180910390f35b61021e6107de565b60405161022b91906109cf565b60405180910390f35b61024e60048036038101906102499190610a46565b6107e4565b005b62278d0081565b5f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154116102d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102cf90610b82565b60405180910390fd5b5f6102e23361059f565b90505f60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015490505f7f000000000000000000000000000000000000000000000000000000000000000090505f82846103599190610bcd565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610396929190610c00565b6020604051808303815f875af11580156103b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d69190610c5c565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001015f8282546104269190610c87565b9250508190555050505050565b6001602052805f5260405f205f91509050805f0154908060010154905082565b61045b610868565b6104645f6108ef565b565b61046e610868565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154111561050f578060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f8282546105039190610c87565b92505081905550610577565b60405180604001604052808281526020015f81525060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101559050505b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f805f90505f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015490505f7f000000000000000000000000000000000000000000000000000000000000000090505f8173ffffffffffffffffffffffffffffffffffffffff166395c2b7606040518163ffffffff1660e01b8152600401602060405180830381865afa158015610655573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106799190610cce565b90505f62278d007f00000000000000000000000000000000000000000000000000000000000000006106ab9190610cf9565b826106b69190610c87565b90505f821180156106c75750428111155b156106dd576103e8856106da9190610c87565b94505b80421180156106eb57505f82115b1561073f575f81426106fd9190610bcd565b90505f62278d008261070f9190610d67565b90506103e88161071f9190610cf9565b8761072a9190610c87565b965061271087111561073c5761271096505b50505b5f612710868661074f9190610cf9565b6107599190610d67565b9050809650505050505050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61271081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6103e881565b6107ec610868565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361085c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108539190610b0f565b60405180910390fd5b610865816108ef565b50565b6108706109b0565b73ffffffffffffffffffffffffffffffffffffffff1661088e610769565b73ffffffffffffffffffffffffffffffffffffffff16146108ed576108b16109b0565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108e49190610b0f565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f33905090565b5f819050919050565b6109c9816109b7565b82525050565b5f6020820190506109e25f8301846109c0565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a15826109ec565b9050919050565b610a2581610a0b565b8114610a2f575f80fd5b50565b5f81359050610a4081610a1c565b92915050565b5f60208284031215610a5b57610a5a6109e8565b5b5f610a6884828501610a32565b91505092915050565b5f604082019050610a845f8301856109c0565b610a9160208301846109c0565b9392505050565b610aa1816109b7565b8114610aab575f80fd5b50565b5f81359050610abc81610a98565b92915050565b5f8060408385031215610ad857610ad76109e8565b5b5f610ae585828601610a32565b9250506020610af685828601610aae565b9150509250929050565b610b0981610a0b565b82525050565b5f602082019050610b225f830184610b00565b92915050565b5f82825260208201905092915050565b7f4f6e6c79207368617265686f6c6465722063616e2063616c6c000000000000005f82015250565b5f610b6c601983610b28565b9150610b7782610b38565b602082019050919050565b5f6020820190508181035f830152610b9981610b60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610bd7826109b7565b9150610be2836109b7565b9250828203905081811115610bfa57610bf9610ba0565b5b92915050565b5f604082019050610c135f830185610b00565b610c2060208301846109c0565b9392505050565b5f8115159050919050565b610c3b81610c27565b8114610c45575f80fd5b50565b5f81519050610c5681610c32565b92915050565b5f60208284031215610c7157610c706109e8565b5b5f610c7e84828501610c48565b91505092915050565b5f610c91826109b7565b9150610c9c836109b7565b9250828201905080821115610cb457610cb3610ba0565b5b92915050565b5f81519050610cc881610a98565b92915050565b5f60208284031215610ce357610ce26109e8565b5b5f610cf084828501610cba565b91505092915050565b5f610d03826109b7565b9150610d0e836109b7565b9250828202610d1c816109b7565b91508282048414831517610d3357610d32610ba0565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610d71826109b7565b9150610d7c836109b7565b925082610d8c57610d8b610d3a565b5b82820490509291505056fea26469706673582212205a253e430447e73833580f6d1ae26ab6220f495ff48c4419425289c81c327d3c64736f6c634300081a0033