0x60806040525f5f5f6101000a81548160ff0219169083151502179055503480156026575f5ffd5b50335f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c30806100745f395ff3fe608060405234801561000f575f5ffd5b506004361061007b575f3560e01c80635e1b71a8116100595780635e1b71a8146100fb57806385368b0f1461012b5780638da5cb5b1461015b578063f2fde38b146101795761007b565b80630e3c22b01461007f5780633346f2e9146100af5780633b111c25146100df575b5f5ffd5b61009960048036038101906100949190610716565b610195565b6040516100a6919061079c565b60405180910390f35b6100c960048036038101906100c491906107df565b6101a1565b6040516100d6919061085a565b60405180910390f35b6100f960048036038101906100f49190610873565b6101ad565b005b610115600480360381019061011091906108b1565b610357565b604051610122919061094f565b60405180910390f35b6101456004803603810190610140919061096f565b610397565b604051610152919061094f565b60405180910390f35b6101636103d7565b60405161017091906109bc565b60405180910390f35b610193600480360381019061018e91906109d5565b6103fc565b005b5f600190509392505050565b5f602a90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361021b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021290610a4a565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168283604051602401610245919061085a565b6040516020818303038152906040527fa6b206bf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516102cf9190610aac565b5f6040518083038185875af1925050503d805f8114610309576040519150601f19603f3d011682016040523d82523d5f602084013e61030e565b606091505b5050905080610352576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034990610b0c565b60405180910390fd5b505050565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b60606040518060400160405280600781526020017f5375636365737300000000000000000000000000000000000000000000000000815250905092915050565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048290610b74565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f090610bdc565b60405180910390fd5b805f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61055f8161054d565b8114610569575f5ffd5b50565b5f8135905061057a81610556565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6105ce82610588565b810181811067ffffffffffffffff821117156105ed576105ec610598565b5b80604052505050565b5f6105ff61053c565b905061060b82826105c5565b919050565b5f67ffffffffffffffff82111561062a57610629610598565b5b61063382610588565b9050602081019050919050565b828183375f83830152505050565b5f61066061065b84610610565b6105f6565b90508281526020810184848401111561067c5761067b610584565b5b610687848285610640565b509392505050565b5f82601f8301126106a3576106a2610580565b5b81356106b384826020860161064e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106e5826106bc565b9050919050565b6106f5816106db565b81146106ff575f5ffd5b50565b5f81359050610710816106ec565b92915050565b5f5f5f6060848603121561072d5761072c610545565b5b5f61073a8682870161056c565b935050602084013567ffffffffffffffff81111561075b5761075a610549565b5b6107678682870161068f565b925050604061077886828701610702565b9150509250925092565b5f8115159050919050565b61079681610782565b82525050565b5f6020820190506107af5f83018461078d565b92915050565b6107be81610782565b81146107c8575f5ffd5b50565b5f813590506107d9816107b5565b92915050565b5f5f5f606084860312156107f6576107f5610545565b5b5f610803868287016107cb565b9350506020610814868287016107cb565b925050604084013567ffffffffffffffff81111561083557610834610549565b5b6108418682870161068f565b9150509250925092565b6108548161054d565b82525050565b5f60208201905061086d5f83018461084b565b92915050565b5f5f6040838503121561088957610888610545565b5b5f61089685828601610702565b92505060206108a78582860161056c565b9150509250929050565b5f5f604083850312156108c7576108c6610545565b5b5f6108d48582860161056c565b92505060206108e58582860161056c565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610921826108ef565b61092b81856108f9565b935061093b818560208601610909565b61094481610588565b840191505092915050565b5f6020820190508181035f8301526109678184610917565b905092915050565b5f5f6040838503121561098557610984610545565b5b5f6109928582860161056c565b92505060206109a385828601610702565b9150509250929050565b6109b6816106db565b82525050565b5f6020820190506109cf5f8301846109ad565b92915050565b5f602082840312156109ea576109e9610545565b5b5f6109f784828501610702565b91505092915050565b7f496e76616c696420636f6e7472616374206164647265737300000000000000005f82015250565b5f610a346018836108f9565b9150610a3f82610a00565b602082019050919050565b5f6020820190508181035f830152610a6181610a28565b9050919050565b5f81519050919050565b5f81905092915050565b5f610a8682610a68565b610a908185610a72565b9350610aa0818560208601610909565b80840191505092915050565b5f610ab78284610a7c565b915081905092915050565b7f4661696c656420746f2063616c6c206f7468657220636f6e74726163740000005f82015250565b5f610af6601d836108f9565b9150610b0182610ac2565b602082019050919050565b5f6020820190508181035f830152610b2381610aea565b9050919050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f610b5e6017836108f9565b9150610b6982610b2a565b602082019050919050565b5f6020820190508181035f830152610b8b81610b52565b9050919050565b7f496e76616c6964206164647265737320666f72206e6577206f776e65720000005f82015250565b5f610bc6601d836108f9565b9150610bd182610b92565b602082019050919050565b5f6020820190508181035f830152610bf381610bba565b905091905056fea264697066735822122035b9a5aaa35ff82875a035357e9f4b9c9673b677c12fcb8e51f59af47b58d20764736f6c634300081c0033