608060405234801561001057600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611015806100616000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a082311461016857806395d89b4114610198578063a0712d68146101b6578063a9059cbb146101e6578063dd62ed3e14610216578063f2fde38b14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610ba5565b60405180910390f35b6100e660048036038101906100e19190610c60565b6102af565b6040516100f39190610cbb565b60405180910390f35b6101046103a1565b6040516101119190610ce5565b60405180910390f35b610134600480360381019061012f9190610d00565b6103a7565b6040516101419190610cbb565b60405180910390f35b61015261059f565b60405161015f9190610d6f565b60405180910390f35b610182600480360381019061017d9190610d8a565b6105a4565b60405161018f9190610ce5565b60405180910390f35b6101a06105ed565b6040516101ad9190610ba5565b60405180910390f35b6101d060048036038101906101cb9190610db7565b610626565b6040516101dd9190610cbb565b60405180910390f35b61020060048036038101906101fb9190610c60565b610695565b60405161020d9190610cbb565b60405180910390f35b610230600480360381019061022b9190610de4565b6106ac565b60405161023d9190610ce5565b60405180910390f35b610260600480360381019061025b9190610d8a565b610733565b60405161026d9190610cbb565b60405180910390f35b6040518060400160405280600f81526020017f4d61726b20436f636b657262657267000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161038f9190610ce5565b60405180910390a36001905092915050565b60005481565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561048a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15610587576000848261049d9190610e53565b905080600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161057d9190610ce5565b60405180910390a3505b6105928686866107d9565b6001925050509392505050565b601281565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600481526020017f5a55434b0000000000000000000000000000000000000000000000000000000081525081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461068257600080fd5b61068c3383610a3d565b60019050919050565b60006106a23384846107d9565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078f57600080fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90610ef9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ae90610f8b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109029190610e53565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109909190610fab565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a309190610ce5565b60405180910390a3505050565b80600080828254610a4e9190610fab565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610aa49190610fab565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b099190610ce5565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b4f578082015181840152602081019050610b34565b60008484015250505050565b6000601f19601f8301169050919050565b6000610b7782610b15565b610b818185610b20565b9350610b91818560208601610b31565b610b9a81610b5b565b840191505092915050565b60006020820190508181036000830152610bbf8184610b6c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bf782610bcc565b9050919050565b610c0781610bec565b8114610c1257600080fd5b50565b600081359050610c2481610bfe565b92915050565b6000819050919050565b610c3d81610c2a565b8114610c4857600080fd5b50565b600081359050610c5a81610c34565b92915050565b60008060408385031215610c7757610c76610bc7565b5b6000610c8585828601610c15565b9250506020610c9685828601610c4b565b9150509250929050565b60008115159050919050565b610cb581610ca0565b82525050565b6000602082019050610cd06000830184610cac565b92915050565b610cdf81610c2a565b82525050565b6000602082019050610cfa6000830184610cd6565b92915050565b600080600060608486031215610d1957610d18610bc7565b5b6000610d2786828701610c15565b9350506020610d3886828701610c15565b9250506040610d4986828701610c4b565b9150509250925092565b600060ff82169050919050565b610d6981610d53565b82525050565b6000602082019050610d846000830184610d60565b92915050565b600060208284031215610da057610d9f610bc7565b5b6000610dae84828501610c15565b91505092915050565b600060208284031215610dcd57610dcc610bc7565b5b6000610ddb84828501610c4b565b91505092915050565b60008060408385031215610dfb57610dfa610bc7565b5b6000610e0985828601610c15565b9250506020610e1a85828601610c15565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e5e82610c2a565b9150610e6983610c2a565b9250828203905081811115610e8157610e80610e24565b5b92915050565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160008201527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015250565b6000610ee3603b83610b20565b9150610eee82610e87565b604082019050919050565b60006020820190508181036000830152610f1281610ed6565b9050919050565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160008201527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015250565b6000610f75603983610b20565b9150610f8082610f19565b604082019050919050565b60006020820190508181036000830152610fa481610f68565b9050919050565b6000610fb682610c2a565b9150610fc183610c2a565b9250828201905080821115610fd957610fd8610e24565b5b9291505056fea2646970667358221220b2cf261cd33dbb2ae28cb52de4213bb02b3a98669de1d8ded4bcaf405e4498b264736f6c63430008120033