0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c57806100745f395ff3fe608060405234801561000f575f5ffd5b5060043610610086575f3560e01c80638da5cb5b116100595780638da5cb5b14610136578063c5fbfea814610154578063f26e276b14610184578063f2fde38b146101b457610086565b80633b111c251461008a578063564cfa0d146100a657806360821821146100d65780638468220b14610106575b5f5ffd5b6100a4600480360381019061009f91906105e8565b6101d0565b005b6100c060048036038101906100bb919061065b565b61037a565b6040516100cd91906106ba565b60405180910390f35b6100f060048036038101906100eb91906106d3565b610386565b6040516100fd9190610781565b60405180910390f35b610120600480360381019061011b91906108cd565b6103c6565b60405161012d9190610936565b60405180910390f35b61013e6103d0565b60405161014b9190610936565b60405180910390f35b61016e6004803603810190610169919061094f565b6103f5565b60405161017b91906106ba565b60405180910390f35b61019e60048036038101906101999190610996565b6103ff565b6040516101ab91906106ba565b60405180910390f35b6101ce60048036038101906101c991906109d4565b61040a565b005b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361023e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023590610a49565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682836040516024016102689190610a76565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516102f29190610ad3565b5f6040518083038185875af1925050503d805f811461032c576040519150601f19603f3d011682016040523d82523d5f602084013e610331565b606091505b5050905080610375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036c90610b33565b60405180910390fd5b505050565b5f600190509392505050565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b5f5f905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60019050919050565b5f6001905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049090610b9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe90610c03565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105848261055b565b9050919050565b6105948161057a565b811461059e575f5ffd5b50565b5f813590506105af8161058b565b92915050565b5f819050919050565b6105c7816105b5565b81146105d1575f5ffd5b50565b5f813590506105e2816105be565b92915050565b5f5f604083850312156105fe576105fd610553565b5b5f61060b858286016105a1565b925050602061061c858286016105d4565b9150509250929050565b5f8115159050919050565b61063a81610626565b8114610644575f5ffd5b50565b5f8135905061065581610631565b92915050565b5f5f5f6060848603121561067257610671610553565b5b5f61067f868287016105d4565b935050602061069086828701610647565b92505060406106a186828701610647565b9150509250925092565b6106b481610626565b82525050565b5f6020820190506106cd5f8301846106ab565b92915050565b5f5f604083850312156106e9576106e8610553565b5b5f6106f685828601610647565b925050602061070785828601610647565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61075382610711565b61075d818561071b565b935061076d81856020860161072b565b61077681610739565b840191505092915050565b5f6020820190508181035f8301526107998184610749565b905092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107df82610739565b810181811067ffffffffffffffff821117156107fe576107fd6107a9565b5b80604052505050565b5f61081061054a565b905061081c82826107d6565b919050565b5f67ffffffffffffffff82111561083b5761083a6107a9565b5b61084482610739565b9050602081019050919050565b828183375f83830152505050565b5f61087161086c84610821565b610807565b90508281526020810184848401111561088d5761088c6107a5565b5b610898848285610851565b509392505050565b5f82601f8301126108b4576108b36107a1565b5b81356108c484826020860161085f565b91505092915050565b5f5f604083850312156108e3576108e2610553565b5b5f83013567ffffffffffffffff811115610900576108ff610557565b5b61090c858286016108a0565b925050602061091d85828601610647565b9150509250929050565b6109308161057a565b82525050565b5f6020820190506109495f830184610927565b92915050565b5f6020828403121561096457610963610553565b5b5f82013567ffffffffffffffff81111561098157610980610557565b5b61098d848285016108a0565b91505092915050565b5f5f604083850312156109ac576109ab610553565b5b5f6109b9858286016105a1565b92505060206109ca858286016105a1565b9150509250929050565b5f602082840312156109e9576109e8610553565b5b5f6109f6848285016105a1565b91505092915050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610a3360188361071b565b9150610a3e826109ff565b602082019050919050565b5f6020820190508181035f830152610a6081610a27565b9050919050565b610a70816105b5565b82525050565b5f602082019050610a895f830184610a67565b92915050565b5f81519050919050565b5f81905092915050565b5f610aad82610a8f565b610ab78185610a99565b9350610ac781856020860161072b565b80840191505092915050565b5f610ade8284610aa3565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610b1d601d8361071b565b9150610b2882610ae9565b602082019050919050565b5f6020820190508181035f830152610b4a81610b11565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610b8560178361071b565b9150610b9082610b51565b602082019050919050565b5f6020820190508181035f830152610bb281610b79565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610bed601d8361071b565b9150610bf882610bb9565b602082019050919050565b5f6020820190508181035f830152610c1a81610be1565b905091905056fea26469706673582212202de511cfd01955f5b73686d1cf09ce3cd5ab3c7ea9899250e937cff0388ae97d64736f6c634300081c0033