608060405234801561000f575f80fd5b50604051610cd8380380610cd883398181016040528101906100319190610117565b3360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550805f819055508060015f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050610142565b5f80fd5b5f819050919050565b6100f6816100e4565b8114610100575f80fd5b50565b5f81519050610111816100ed565b92915050565b5f6020828403121561012c5761012b6100e0565b5b5f61013984828501610103565b91505092915050565b610b898061014f5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c806370a082311161005957806370a08231146100e95780638da5cb5b14610119578063a9059cbb14610137578063f2fde38b146101675761007b565b806318160ddd1461007f57806327e235e31461009d57806340c10f19146100cd575b5f80fd5b610087610183565b604051610094919061071d565b60405180910390f35b6100b760048036038101906100b29190610794565b610188565b6040516100c4919061071d565b60405180910390f35b6100e760048036038101906100e291906107e9565b61019d565b005b61010360048036038101906100fe9190610794565b610356565b604051610110919061071d565b60405180910390f35b61012161039c565b60405161012e9190610836565b60405180910390f35b610151600480360381019061014c91906107e9565b6103c1565b60405161015e9190610869565b60405180910390f35b610181600480360381019061017c9190610794565b6105c5565b005b5f5481565b6001602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461022c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610223906108dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361029a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029190610944565b60405180910390fd5b805f808282546102aa919061098f565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102fd919061098f565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161034a919061071d565b60405180910390a25050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610a32565b60405180910390fd5b8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156104b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a790610a9a565b60405180910390fd5b8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546104fc9190610ab8565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461054f919061098f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105b3919061071d565b60405180910390a36001905092915050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064b906108dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b990610b35565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f819050919050565b61071781610705565b82525050565b5f6020820190506107305f83018461070e565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107638261073a565b9050919050565b61077381610759565b811461077d575f80fd5b50565b5f8135905061078e8161076a565b92915050565b5f602082840312156107a9576107a8610736565b5b5f6107b684828501610780565b91505092915050565b6107c881610705565b81146107d2575f80fd5b50565b5f813590506107e3816107bf565b92915050565b5f80604083850312156107ff576107fe610736565b5b5f61080c85828601610780565b925050602061081d858286016107d5565b9150509250929050565b61083081610759565b82525050565b5f6020820190506108495f830184610827565b92915050565b5f8115159050919050565b6108638161084f565b82525050565b5f60208201905061087c5f83018461085a565b92915050565b5f82825260208201905092915050565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f6108c6601783610882565b91506108d182610892565b602082019050919050565b5f6020820190508181035f8301526108f3816108ba565b9050919050565b7f43616e6e6f74206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61092e601f83610882565b9150610939826108fa565b602082019050919050565b5f6020820190508181035f83015261095b81610922565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61099982610705565b91506109a483610705565b92508282019050808211156109bc576109bb610962565b5b92915050565b7f43616e6e6f74207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f610a1c602383610882565b9150610a27826109c2565b604082019050919050565b5f6020820190508181035f830152610a4981610a10565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f610a84601483610882565b9150610a8f82610a50565b602082019050919050565b5f6020820190508181035f830152610ab181610a78565b9050919050565b5f610ac282610705565b9150610acd83610705565b9250828203905081811115610ae557610ae4610962565b5b92915050565b7f4e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f610b1f601d83610882565b9150610b2a82610aeb565b602082019050919050565b5f6020820190508181035f830152610b4c81610b13565b905091905056fea264697066735822122051e1795d2170237c46e8e13b3f7f12f147cde1d1aec80fbc83e098939ed3b49164736f6c634300081900330000000000000000000000000000000000000000000000000000000000000014