0x608060405234801561000f575f80fd5b50604051611480380380611480833981810160405281019061003191906101bd565b815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061013e9190610231565b600160146101000a81548160ff021916908360ff160217905550505061025c565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61018c82610163565b9050919050565b61019c81610182565b81146101a6575f80fd5b50565b5f815190506101b781610193565b92915050565b5f80604083850312156101d3576101d261015f565b5b5f6101e0858286016101a9565b92505060206101f1858286016101a9565b9150509250929050565b5f60ff82169050919050565b610210816101fb565b811461021a575f80fd5b50565b5f8151905061022b81610207565b92915050565b5f602082840312156102465761024561015f565b5b5f6102538482850161021d565b91505092915050565b611217806102695f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806314c063d4146100595780633b97e856146100755780636724348214610093578063e49cda08146100af578063fc0c546a146100cd575b5f80fd5b610073600480360381019061006e91906109e6565b6100eb565b005b61007d6102fe565b60405161008a9190610a89565b60405180910390f35b6100ad60048036038101906100a89190610aa2565b610311565b005b6100b76106f0565b6040516100c49190610b27565b60405180910390f35b6100d5610713565b6040516100e29190610b9b565b60405180910390f35b815183511461012f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012690610c34565b60405180910390fd5b5f5b83518110156102f8575f82826101479190610c7f565b9050845181111561015757845190505b5f82826101649190610cb2565b67ffffffffffffffff81111561017d5761017c61075d565b5b6040519080825280602002602001820160405280156101ab5781602001602082028036833780820191505090505b5090505f83836101bb9190610cb2565b67ffffffffffffffff8111156101d4576101d361075d565b5b6040519080825280602002602001820160405280156102025781602001602082028036833780820191505090505b5090505f8490505b838110156102d75787818151811061022557610224610ce5565b5b602002602001015183868361023a9190610cb2565b8151811061024b5761024a610ce5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086818151811061029857610297610ce5565b5b60200260200101518286836102ad9190610cb2565b815181106102be576102bd610ce5565b5b602002602001018181525050808060010191505061020a565b506102e28282610311565b50505081816102f19190610c7f565b9050610131565b50505050565b600160149054906101000a900460ff1681565b8051825114610355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034c90610c34565b60405180910390fd5b5f60605f5b84518110156104b4575f600160149054906101000a900460ff16600a6103809190610e41565b85838151811061039357610392610ce5565b5b60200260200101516103a59190610e8b565b905080846103b39190610c7f565b93505f60015f9054906101000a90505063a9059cbb60e01b8784815181106103de576103dd610ce5565b5b6020026020010151836040516024016103f8929190610edb565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050835f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f84518560405160200161049496959493929190610fed565b60405160208183030381529060405293505050808060010191505061035a565b505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105109190610b27565b602060405180830381865afa15801561052b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054f9190611068565b905082811015610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058b906110dd565b60405180910390fd5b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516024016105dd9190611143565b6040516020818303038152906040527f8d80ff0a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106679190611163565b5f60405180830381855af49150503d805f811461069f576040519150601f19603f3d011682016040523d82523d5f602084013e6106a4565b606091505b50509050806106e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106df906111c3565b60405180910390fd5b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6107938261074d565b810181811067ffffffffffffffff821117156107b2576107b161075d565b5b80604052505050565b5f6107c4610738565b90506107d0828261078a565b919050565b5f67ffffffffffffffff8211156107ef576107ee61075d565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61082d82610804565b9050919050565b61083d81610823565b8114610847575f80fd5b50565b5f8135905061085881610834565b92915050565b5f61087061086b846107d5565b6107bb565b9050808382526020820190506020840283018581111561089357610892610800565b5b835b818110156108bc57806108a8888261084a565b845260208401935050602081019050610895565b5050509392505050565b5f82601f8301126108da576108d9610749565b5b81356108ea84826020860161085e565b91505092915050565b5f67ffffffffffffffff82111561090d5761090c61075d565b5b602082029050602081019050919050565b5f819050919050565b6109308161091e565b811461093a575f80fd5b50565b5f8135905061094b81610927565b92915050565b5f61096361095e846108f3565b6107bb565b9050808382526020820190506020840283018581111561098657610985610800565b5b835b818110156109af578061099b888261093d565b845260208401935050602081019050610988565b5050509392505050565b5f82601f8301126109cd576109cc610749565b5b81356109dd848260208601610951565b91505092915050565b5f805f606084860312156109fd576109fc610741565b5b5f84013567ffffffffffffffff811115610a1a57610a19610745565b5b610a26868287016108c6565b935050602084013567ffffffffffffffff811115610a4757610a46610745565b5b610a53868287016109b9565b9250506040610a648682870161093d565b9150509250925092565b5f60ff82169050919050565b610a8381610a6e565b82525050565b5f602082019050610a9c5f830184610a7a565b92915050565b5f8060408385031215610ab857610ab7610741565b5b5f83013567ffffffffffffffff811115610ad557610ad4610745565b5b610ae1858286016108c6565b925050602083013567ffffffffffffffff811115610b0257610b01610745565b5b610b0e858286016109b9565b9150509250929050565b610b2181610823565b82525050565b5f602082019050610b3a5f830184610b18565b92915050565b5f819050919050565b5f610b63610b5e610b5984610804565b610b40565b610804565b9050919050565b5f610b7482610b49565b9050919050565b5f610b8582610b6a565b9050919050565b610b9581610b7b565b82525050565b5f602082019050610bae5f830184610b8c565b92915050565b5f82825260208201905092915050565b7f526563697069656e747320616e6420616d6f756e747320617272617973206d755f8201527f73742068617665207468652073616d65206c656e677468000000000000000000602082015250565b5f610c1e603783610bb4565b9150610c2982610bc4565b604082019050919050565b5f6020820190508181035f830152610c4b81610c12565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610c898261091e565b9150610c948361091e565b9250828201905080821115610cac57610cab610c52565b5b92915050565b5f610cbc8261091e565b9150610cc78361091e565b9250828203905081811115610cdf57610cde610c52565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610d6757808604811115610d4357610d42610c52565b5b6001851615610d525780820291505b8081029050610d6085610d12565b9450610d27565b94509492505050565b5f82610d7f5760019050610e3a565b81610d8c575f9050610e3a565b8160018114610da25760028114610dac57610ddb565b6001915050610e3a565b60ff841115610dbe57610dbd610c52565b5b8360020a915084821115610dd557610dd4610c52565b5b50610e3a565b5060208310610133831016604e8410600b8410161715610e105782820a905083811115610e0b57610e0a610c52565b5b610e3a565b610e1d8484846001610d1e565b92509050818404811115610e3457610e33610c52565b5b81810290505b9392505050565b5f610e4b8261091e565b9150610e5683610a6e565b9250610e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610d70565b905092915050565b5f610e958261091e565b9150610ea08361091e565b9250828202610eae8161091e565b91508282048414831517610ec557610ec4610c52565b5b5092915050565b610ed58161091e565b82525050565b5f604082019050610eee5f830185610b18565b610efb6020830184610ecc565b9392505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610f2e82610f02565b610f388185610f0c565b9350610f48818560208601610f16565b80840191505092915050565b5f8160f81b9050919050565b5f610f6a82610f54565b9050919050565b610f82610f7d82610a6e565b610f60565b82525050565b5f8160601b9050919050565b5f610f9e82610f88565b9050919050565b5f610faf82610f94565b9050919050565b610fc7610fc282610823565b610fa5565b82525050565b5f819050919050565b610fe7610fe28261091e565b610fcd565b82525050565b5f610ff88289610f24565b91506110048288610f71565b6001820191506110148287610fb6565b6014820191506110248286610fd6565b6020820191506110348285610fd6565b6020820191506110448284610f24565b9150819050979650505050505050565b5f8151905061106281610927565b92915050565b5f6020828403121561107d5761107c610741565b5b5f61108a84828501611054565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f6110c7601a83610bb4565b91506110d282611093565b602082019050919050565b5f6020820190508181035f8301526110f4816110bb565b9050919050565b5f82825260208201905092915050565b5f61111582610f02565b61111f81856110fb565b935061112f818560208601610f16565b6111388161074d565b840191505092915050565b5f6020820190508181035f83015261115b818461110b565b905092915050565b5f61116e8284610f24565b915081905092915050565b7f4d756c746953656e642063616c6c206661696c656400000000000000000000005f82015250565b5f6111ad601583610bb4565b91506111b882611179565b602082019050919050565b5f6020820190508181035f8301526111da816111a1565b905091905056fea2646970667358221220b68bc5aa47a7c2871e524ec997d5d1a9ef2589dbddb8034d773b1b7e29cd81aa64736f6c634300081a0033000000000000000000000000b5e94d5b10d73dd682b449f4e4ae7901bdc3301d0000000000000000000000006986e8458cab788be03f8bb169cbdc9315c26a3c