0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c48806100745f395ff3fe608060405234801561000f575f5ffd5b5060043610610091575f3560e01c806363f258371161006457806363f25837146101415780638da5cb5b14610171578063df6a15c91461018f578063e0d0f569146101bf578063f2fde38b146101ef57610091565b806318bffb0b14610095578063234d9d53146100c5578063266e791a146100f55780633b111c2514610125575b5f5ffd5b6100af60048036038101906100aa91906105d0565b61020b565b6040516100bc9190610615565b60405180910390f35b6100df60048036038101906100da9190610794565b610215565b6040516100ec919061082d565b60405180910390f35b61010f600480360381019061010a9190610846565b61021f565b60405161011c9190610880565b60405180910390f35b61013f600480360381019061013a91906108c3565b610229565b005b61015b60048036038101906101569190610901565b6103d3565b60405161016891906109cd565b60405180910390f35b610179610414565b604051610186919061082d565b60405180910390f35b6101a960048036038101906101a49190610846565b610439565b6040516101b69190610880565b60405180910390f35b6101d960048036038101906101d49190610846565b610443565b6040516101e6919061082d565b60405180910390f35b610209600480360381019061020491906109ed565b61044c565b005b5f60019050919050565b5f5f905092915050565b5f602a9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028e90610a62565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682836040516024016102c19190610880565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161034b9190610ac4565b5f6040518083038185875af1925050503d805f8114610385576040519150601f19603f3d011682016040523d82523d5f602084013e61038a565b606091505b50509050806103ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c590610b24565b60405180910390fd5b505050565b60606040518060400160405280600781526020017f537563636573730000000000000000000000000000000000000000000000000081525090509392505050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f602a9050919050565b5f5f9050919050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d290610b8c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054090610bf4565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6105af8161059d565b81146105b9575f5ffd5b50565b5f813590506105ca816105a6565b92915050565b5f602082840312156105e5576105e4610595565b5b5f6105f2848285016105bc565b91505092915050565b5f8115159050919050565b61060f816105fb565b82525050565b5f6020820190506106285f830184610606565b92915050565b610637816105fb565b8114610641575f5ffd5b50565b5f813590506106528161062e565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6106a682610660565b810181811067ffffffffffffffff821117156106c5576106c4610670565b5b80604052505050565b5f6106d761058c565b90506106e3828261069d565b919050565b5f67ffffffffffffffff82111561070257610701610670565b5b61070b82610660565b9050602081019050919050565b828183375f83830152505050565b5f610738610733846106e8565b6106ce565b9050828152602081018484840111156107545761075361065c565b5b61075f848285610718565b509392505050565b5f82601f83011261077b5761077a610658565b5b813561078b848260208601610726565b91505092915050565b5f5f604083850312156107aa576107a9610595565b5b5f6107b785828601610644565b925050602083013567ffffffffffffffff8111156107d8576107d7610599565b5b6107e485828601610767565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610817826107ee565b9050919050565b6108278161080d565b82525050565b5f6020820190506108405f83018461081e565b92915050565b5f6020828403121561085b5761085a610595565b5b5f61086884828501610644565b91505092915050565b61087a8161059d565b82525050565b5f6020820190506108935f830184610871565b92915050565b6108a28161080d565b81146108ac575f5ffd5b50565b5f813590506108bd81610899565b92915050565b5f5f604083850312156108d9576108d8610595565b5b5f6108e6858286016108af565b92505060206108f7858286016105bc565b9150509250929050565b5f5f5f6060848603121561091857610917610595565b5b5f61092586828701610644565b935050602084013567ffffffffffffffff81111561094657610945610599565b5b61095286828701610767565b9250506040610963868287016105bc565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61099f8261096d565b6109a98185610977565b93506109b9818560208601610987565b6109c281610660565b840191505092915050565b5f6020820190508181035f8301526109e58184610995565b905092915050565b5f60208284031215610a0257610a01610595565b5b5f610a0f848285016108af565b91505092915050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610a4c601883610977565b9150610a5782610a18565b602082019050919050565b5f6020820190508181035f830152610a7981610a40565b9050919050565b5f81519050919050565b5f81905092915050565b5f610a9e82610a80565b610aa88185610a8a565b9350610ab8818560208601610987565b80840191505092915050565b5f610acf8284610a94565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610b0e601d83610977565b9150610b1982610ada565b602082019050919050565b5f6020820190508181035f830152610b3b81610b02565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610b76601783610977565b9150610b8182610b42565b602082019050919050565b5f6020820190508181035f830152610ba381610b6a565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610bde601d83610977565b9150610be982610baa565b602082019050919050565b5f6020820190508181035f830152610c0b81610bd2565b905091905056fea264697066735822122039956ebf5caa1309ecd2446a8a70ee792021c603a3d975742724211da0bc5e7364736f6c634300081c0033