0x60806040523480156200001157600080fd5b5060405162001054380380620010548339818101604052810190620000379190620001d5565b620000576200004b6200009f60201b60201c565b620000a760201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000207565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200019d8262000170565b9050919050565b620001af8162000190565b8114620001bb57600080fd5b50565b600081519050620001cf81620001a4565b92915050565b600060208284031215620001ee57620001ed6200016b565b5b6000620001fe84828501620001be565b91505092915050565b610e3d80620002176000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806306b091f91461006757806346e04a2f14610083578063715018a61461009f5780638da5cb5b146100a9578063954aca42146100c7578063f2fde38b146100e3575b600080fd5b610081600480360381019061007c91906108c6565b6100ff565b005b61009d60048036038101906100989190610906565b61027b565b005b6100a7610524565b005b6100b1610538565b6040516100be9190610942565b60405180910390f35b6100e160048036038101906100dc91906108c6565b610561565b005b6100fd60048036038101906100f8919061095d565b61064a565b005b6101076106cd565b6000811161014a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610141906109e7565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016101a7929190610a16565b6020604051808303816000875af11580156101c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ea9190610a77565b610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022090610af0565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8260405161026f9190610b10565b60405180910390a25050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ff90610b77565b60405180910390fd5b6000811161034b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034290610be3565b60405180910390fd5b60006103568261074b565b90506000811161039b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039290610c4f565b60405180910390fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610450929190610a16565b6020604051808303816000875af115801561046f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104939190610a77565b6104d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c990610af0565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430826040516105189190610b10565b60405180910390a25050565b61052c6106cd565b6105366000610761565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081116105a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059b90610be3565b60405180910390fd5b60006105af8261074b565b905080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f998a04c5934939fa413f8abd3ce6f8ada1874b20e47316267595a2d5d462137e838360405161063d929190610c6f565b60405180910390a2505050565b6106526106cd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b890610d0a565b60405180910390fd5b6106ca81610761565b50565b6106d5610825565b73ffffffffffffffffffffffffffffffffffffffff166106f3610538565b73ffffffffffffffffffffffffffffffffffffffff1614610749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074090610d76565b60405180910390fd5b565b600060018261075a9190610dc5565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061085d82610832565b9050919050565b61086d81610852565b811461087857600080fd5b50565b60008135905061088a81610864565b92915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc61082d565b5b60006108eb8582860161087b565b92505060206108fc858286016108b1565b9150509250929050565b60006020828403121561091c5761091b61082d565b5b600061092a848285016108b1565b91505092915050565b61093c81610852565b82525050565b60006020820190506109576000830184610933565b92915050565b6000602082840312156109735761097261082d565b5b60006109818482850161087b565b91505092915050565b600082825260208201905092915050565b7f496e76616c696420616d6f756e74000000000000000000000000000000000000600082015250565b60006109d1600e8361098a565b91506109dc8261099b565b602082019050919050565b60006020820190508181036000830152610a00816109c4565b9050919050565b610a1081610890565b82525050565b6000604082019050610a2b6000830185610933565b610a386020830184610a07565b9392505050565b60008115159050919050565b610a5481610a3f565b8114610a5f57600080fd5b50565b600081519050610a7181610a4b565b92915050565b600060208284031215610a8d57610a8c61082d565b5b6000610a9b84828501610a62565b91505092915050565b7f546f6b656e207472616e73666572206661696c65640000000000000000000000600082015250565b6000610ada60158361098a565b9150610ae582610aa4565b602082019050919050565b60006020820190508181036000830152610b0981610acd565b9050919050565b6000602082019050610b256000830184610a07565b92915050565b7f546f6b656e7320616c726561647920636c61696d656400000000000000000000600082015250565b6000610b6160168361098a565b9150610b6c82610b2b565b602082019050919050565b60006020820190508181036000830152610b9081610b54565b9050919050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b6000610bcd600d8361098a565b9150610bd882610b97565b602082019050919050565b60006020820190508181036000830152610bfc81610bc0565b9050919050565b7f436c61696d61626c6520616d6f756e74206973207a65726f0000000000000000600082015250565b6000610c3960188361098a565b9150610c4482610c03565b602082019050919050565b60006020820190508181036000830152610c6881610c2c565b9050919050565b6000604082019050610c846000830185610a07565b610c916020830184610a07565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610cf460268361098a565b9150610cff82610c98565b604082019050919050565b60006020820190508181036000830152610d2381610ce7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610d6060208361098a565b9150610d6b82610d2a565b602082019050919050565b60006020820190508181036000830152610d8f81610d53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610dd082610890565b9150610ddb83610890565b9250828202610de981610890565b91508282048414831517610e0057610dff610d96565b5b509291505056fea264697066735822122022d7519a56b5f975df5077f8135403ac72e79307f452d738999e366b719757bb64736f6c63430008120033000000000000000000000000ef7c2ab5fafea06f8aee63c866d0be1846c35f68