60806040526b033b2e3c9fd0803ce800000060005534801561002057600080fd5b50600054600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040516100c791906100ed565b60405180910390a3610108565b6000819050919050565b6100e7816100d4565b82525050565b600060208201905061010260008301846100de565b92915050565b610db2806101176000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad919061094d565b60405180910390f35b6100d060048036038101906100cb9190610a08565b610239565b6040516100dd9190610a63565b60405180910390f35b6100ee61032b565b6040516100fb9190610a8d565b60405180910390f35b61011e60048036038101906101199190610aa8565b610331565b60405161012b9190610a63565b60405180910390f35b61013c610529565b6040516101499190610b17565b60405180910390f35b61016c60048036038101906101679190610b32565b61052e565b6040516101799190610a8d565b60405180910390f35b61018a610577565b604051610197919061094d565b60405180910390f35b6101ba60048036038101906101b59190610a08565b6105b0565b6040516101c79190610a63565b60405180910390f35b6101ea60048036038101906101e59190610b5f565b6105c7565b6040516101f79190610a8d565b60405180910390f35b6040518060400160405280600a81526020017f536861726b20436f696e0000000000000000000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103199190610a8d565b60405180910390a36001905092915050565b60005481565b6000803390506000600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561041457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b1561051157600084826104279190610bce565b905080600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516105079190610a8d565b60405180910390a3505b61051c86868661064e565b6001925050509392505050565b601281565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600681526020017f534841524b59000000000000000000000000000000000000000000000000000081525081565b60006105bd33848461064e565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b590610c74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072590610d06565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107799190610bce565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108079190610d26565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108a79190610a8d565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108ee5780820151818401526020810190506108d3565b838111156108fd576000848401525b50505050565b6000601f19601f8301169050919050565b600061091f826108b4565b61092981856108bf565b93506109398185602086016108d0565b61094281610903565b840191505092915050565b600060208201905081810360008301526109678184610914565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061099f82610974565b9050919050565b6109af81610994565b81146109ba57600080fd5b50565b6000813590506109cc816109a6565b92915050565b6000819050919050565b6109e5816109d2565b81146109f057600080fd5b50565b600081359050610a02816109dc565b92915050565b60008060408385031215610a1f57610a1e61096f565b5b6000610a2d858286016109bd565b9250506020610a3e858286016109f3565b9150509250929050565b60008115159050919050565b610a5d81610a48565b82525050565b6000602082019050610a786000830184610a54565b92915050565b610a87816109d2565b82525050565b6000602082019050610aa26000830184610a7e565b92915050565b600080600060608486031215610ac157610ac061096f565b5b6000610acf868287016109bd565b9350506020610ae0868287016109bd565b9250506040610af1868287016109f3565b9150509250925092565b600060ff82169050919050565b610b1181610afb565b82525050565b6000602082019050610b2c6000830184610b08565b92915050565b600060208284031215610b4857610b4761096f565b5b6000610b56848285016109bd565b91505092915050565b60008060408385031215610b7657610b7561096f565b5b6000610b84858286016109bd565b9250506020610b95858286016109bd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bd9826109d2565b9150610be4836109d2565b925082821015610bf757610bf6610b9f565b5b828203905092915050565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160008201527f6e736665722066726f6d20746865207a65726f20616464726573730000000000602082015250565b6000610c5e603b836108bf565b9150610c6982610c02565b604082019050919050565b60006020820190508181036000830152610c8d81610c51565b9050919050565b7f556e693a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160008201527f6e7366657220746f20746865207a65726f206164647265737300000000000000602082015250565b6000610cf06039836108bf565b9150610cfb82610c94565b604082019050919050565b60006020820190508181036000830152610d1f81610ce3565b9050919050565b6000610d31826109d2565b9150610d3c836109d2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610d7157610d70610b9f565b5b82820190509291505056fea2646970667358221220cead7ff7e6b6d682fb901c5bea337e04e7304ab6254e0c986a4afb83cdd5fd5264736f6c63430008090033