0x608060405234801561000f575f80fd5b506040516114aa3803806114aa83398181016040528101906100319190610238565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100999190610272565b60405180910390fd5b6100b18161011960201b60201c565b50600180819055505f60025f6101000a81548160ff02191690831515021790555080600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061028b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610207826101de565b9050919050565b610217816101fd565b8114610221575f80fd5b50565b5f815190506102328161020e565b92915050565b5f6020828403121561024d5761024c6101da565b5b5f61025a84828501610224565b91505092915050565b61026c816101fd565b82525050565b5f6020820190506102855f830184610263565b92915050565b611212806102985f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c80638456cb591161006f5780638456cb591461012e5780638da5cb5b146101385780639c277ebd14610156578063dd0bd2dd14610174578063dd49756e14610192578063f2fde38b146101ae576100b2565b8063048a1a9d146100b65780633f4ba83a146100d457806349d3a0c1146100de5780635c975abb146100fc578063614619541461011a578063715018a614610124575b5f80fd5b6100be6101ca565b6040516100cb9190610ca3565b60405180910390f35b6100dc6101d6565b005b6100e66101e8565b6040516100f39190610ca3565b60405180910390f35b6101046101ef565b6040516101119190610cd6565b60405180910390f35b610122610204565b005b61012c610427565b005b61013661043a565b005b61014061044c565b60405161014d9190610d2e565b60405180910390f35b61015e610473565b60405161016b9190610ca3565b60405180910390f35b61017c6104b7565b6040516101899190610ca3565b60405180910390f35b6101ac60048036038101906101a79190610d75565b610570565b005b6101c860048036038101906101c39190610dca565b610659565b005b670de0b6b3a764000081565b6101de6106dd565b6101e6610764565b565b6201518081565b5f60025f9054906101000a900460ff16905090565b61020c6107c5565b610214610806565b6201518060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546102609190610e22565b4210156102a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029990610ed5565b60405180910390fd5b670de0b6b3a7640000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103069190610d2e565b602060405180830381865afa158015610321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103459190610f07565b1015610386576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037d90610fa2565b60405180910390fd5b4260035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061041d33670de0b6b3a7640000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108559092919063ffffffff16565b6104256108d4565b565b61042f6106dd565b6104385f6108dd565b565b6104426106dd565b61044a61099e565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905090565b5f426201518060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546105059190610e22565b111561056957426201518060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546105589190610e22565b6105629190610fc0565b905061056d565b5f90505b90565b6105786106dd565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016105d793929190610ff3565b6020604051808303815f875af11580156105f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190611052565b610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064d906110c7565b60405180910390fd5b50565b6106616106dd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106d1575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106c89190610d2e565b60405180910390fd5b6106da816108dd565b50565b6106e5610a00565b73ffffffffffffffffffffffffffffffffffffffff1661070361044c565b73ffffffffffffffffffffffffffffffffffffffff161461076257610726610a00565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016107599190610d2e565b60405180910390fd5b565b61076c610a07565b5f60025f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6107ae610a00565b6040516107bb9190610d2e565b60405180910390a1565b6107cd6101ef565b15610804576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60026001540361084b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108429061112f565b60405180910390fd5b6002600181905550565b6108cf838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161088892919061114d565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a47565b505050565b60018081905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6109a66107c5565b600160025f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e9610a00565b6040516109f69190610d2e565b60405180910390a1565b5f33905090565b610a0f6101ef565b610a45576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f610a71828473ffffffffffffffffffffffffffffffffffffffff16610adc90919063ffffffff16565b90505f815114158015610a95575080806020019051810190610a939190611052565b155b15610ad757826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610ace9190610d2e565b60405180910390fd5b505050565b6060610ae983835f610af1565b905092915050565b606081471015610b3857306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401610b2f9190610d2e565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff168486604051610b6091906111c6565b5f6040518083038185875af1925050503d805f8114610b9a576040519150601f19603f3d011682016040523d82523d5f602084013e610b9f565b606091505b5091509150610baf868383610bba565b925050509392505050565b606082610bcf57610bca82610c47565b610c3f565b5f8251148015610bf557505f8473ffffffffffffffffffffffffffffffffffffffff163b145b15610c3757836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610c2e9190610d2e565b60405180910390fd5b819050610c40565b5b9392505050565b5f81511115610c595780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f819050919050565b610c9d81610c8b565b82525050565b5f602082019050610cb65f830184610c94565b92915050565b5f8115159050919050565b610cd081610cbc565b82525050565b5f602082019050610ce95f830184610cc7565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d1882610cef565b9050919050565b610d2881610d0e565b82525050565b5f602082019050610d415f830184610d1f565b92915050565b5f80fd5b610d5481610c8b565b8114610d5e575f80fd5b50565b5f81359050610d6f81610d4b565b92915050565b5f60208284031215610d8a57610d89610d47565b5b5f610d9784828501610d61565b91505092915050565b610da981610d0e565b8114610db3575f80fd5b50565b5f81359050610dc481610da0565b92915050565b5f60208284031215610ddf57610dde610d47565b5b5f610dec84828501610db6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e2c82610c8b565b9150610e3783610c8b565b9250828201905080821115610e4f57610e4e610df5565b5b92915050565b5f82825260208201905092915050565b7f47697665617761793a20596f752063616e206f6e6c7920636c61696d206f6e635f8201527f6520657665727920323420686f75727300000000000000000000000000000000602082015250565b5f610ebf603083610e55565b9150610eca82610e65565b604082019050919050565b5f6020820190508181035f830152610eec81610eb3565b9050919050565b5f81519050610f0181610d4b565b92915050565b5f60208284031215610f1c57610f1b610d47565b5b5f610f2984828501610ef3565b91505092915050565b7f47697665617761793a20496e73756666696369656e7420746f6b656e7320696e5f8201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b5f610f8c602983610e55565b9150610f9782610f32565b604082019050919050565b5f6020820190508181035f830152610fb981610f80565b9050919050565b5f610fca82610c8b565b9150610fd583610c8b565b9250828203905081811115610fed57610fec610df5565b5b92915050565b5f6060820190506110065f830186610d1f565b6110136020830185610d1f565b6110206040830184610c94565b949350505050565b61103181610cbc565b811461103b575f80fd5b50565b5f8151905061104c81611028565b92915050565b5f6020828403121561106757611066610d47565b5b5f6110748482850161103e565b91505092915050565b7f47697665617761793a205472616e73666572206661696c6564000000000000005f82015250565b5f6110b1601983610e55565b91506110bc8261107d565b602082019050919050565b5f6020820190508181035f8301526110de816110a5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611119601f83610e55565b9150611124826110e5565b602082019050919050565b5f6020820190508181035f8301526111468161110d565b9050919050565b5f6040820190506111605f830185610d1f565b61116d6020830184610c94565b9392505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6111a082611174565b6111aa818561117e565b93506111ba818560208601611188565b80840191505092915050565b5f6111d18284611196565b91508190509291505056fea2646970667358221220627fb4516a41fc971b9944eb890d25e47b14790a78f87919862bd568d6b742a564736f6c634300081900330000000000000000000000002ec1c429385bd6175a8758012a43b2eb211710c4