0x60806040523480156200001157600080fd5b50604051620015c8380380620015c8833981810160405281019062000037919062000294565b60008060006101000a81548160ff02191690831515021790555062000071620000656200015d60201b60201c565b6200016560201b60201c565b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006004819055506032600581905550600a6006819055506005600781905550505050620002f0565b600033905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200025c826200022f565b9050919050565b6200026e816200024f565b81146200027a57600080fd5b50565b6000815190506200028e8162000263565b92915050565b600080600060608486031215620002b057620002af6200022a565b5b6000620002c0868287016200027d565b9350506020620002d3868287016200027d565b9250506040620002e6868287016200027d565b9150509250925092565b6112c880620003006000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063b6b55f2511610066578063b6b55f25146101cc578063c89039c5146101e8578063f2fde38b14610206578063f441b1c814610222576100cf565b80638da5cb5b146101725780638f84aa09146101905780639fd18a17146101ae576100cf565b806302329a29146100d45780631a062c4d146100f05780632490ed941461010e5780633aeb6c711461012c5780635c975abb1461014a578063715018a614610168575b600080fd5b6100ee60048036038101906100e99190610c17565b610240565b005b6100f8610266565b6040516101059190610c5d565b60405180910390f35b61011661026c565b6040516101239190610c5d565b60405180910390f35b610134610272565b6040516101419190610c5d565b60405180910390f35b610152610278565b60405161015f9190610c87565b60405180910390f35b61017061028e565b005b61017a6102a2565b6040516101879190610ce3565b60405180910390f35b6101986102cb565b6040516101a59190610ce3565b60405180910390f35b6101b66102f1565b6040516101c39190610ce3565b60405180910390f35b6101e660048036038101906101e19190610d2a565b610317565b005b6101f0610888565b6040516101fd9190610ce3565b60405180910390f35b610220600480360381019061021b9190610d83565b6108ae565b005b61022a610932565b6040516102379190610c5d565b60405180910390f35b610248610938565b8061025a576102556109b6565b610263565b610262610a18565b5b50565b60075481565b60065481565b60055481565b60008060009054906101000a900460ff16905090565b610296610938565b6102a06000610a7a565b565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61031f610b3f565b80600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161037b9190610ce3565b602060405180830381865afa158015610398573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bc9190610dc5565b10156103fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f490610e4f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b815260040161047e93929190610e6f565b6020604051808303816000875af115801561049d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c19190610ebb565b50620f4240816104d19190610f46565b600460008282546104e29190610f77565b9250508190555060006064620f4240836104fc9190610f46565b6105069190610fcd565b90506207a12060045411610637576000606460055460646006548561052b9190610fcd565b6105359190610f46565b846105409190610f77565b61054a9190610fcd565b6105549190610f46565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016105b3929190611027565b6020604051808303816000875af11580156105d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f69190610ebb565b610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c9061109c565b60405180910390fd5b505b6207a1206004541180156106505750620f424060045411155b15610778576000606460055460646007548561066c9190610fcd565b6106769190610f46565b846106819190610f77565b61068b9190610fcd565b6106959190610f46565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016106f4929190611027565b6020604051808303816000875af1158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190610ebb565b610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076d9061109c565b60405180910390fd5b505b620f424060045411156108845760006064600554836107979190610fcd565b6107a19190610f46565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610800929190611027565b6020604051808303816000875af115801561081f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108439190610ebb565b610882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108799061109c565b60405180910390fd5b505b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b6610938565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d9061112e565b60405180910390fd5b61092f81610a7a565b50565b60045481565b610940610b89565b73ffffffffffffffffffffffffffffffffffffffff1661095e6102a2565b73ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab9061119a565b60405180910390fd5b565b6109be610b91565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610a01610b89565b604051610a0e9190610ce3565b60405180910390a1565b610a20610b3f565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610a63610b89565b604051610a709190610ce3565b60405180910390a1565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610b47610278565b15610b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7e90611206565b60405180910390fd5b565b600033905090565b610b99610278565b610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90611272565b60405180910390fd5b565b600080fd5b60008115159050919050565b610bf481610bdf565b8114610bff57600080fd5b50565b600081359050610c1181610beb565b92915050565b600060208284031215610c2d57610c2c610bda565b5b6000610c3b84828501610c02565b91505092915050565b6000819050919050565b610c5781610c44565b82525050565b6000602082019050610c726000830184610c4e565b92915050565b610c8181610bdf565b82525050565b6000602082019050610c9c6000830184610c78565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ccd82610ca2565b9050919050565b610cdd81610cc2565b82525050565b6000602082019050610cf86000830184610cd4565b92915050565b610d0781610c44565b8114610d1257600080fd5b50565b600081359050610d2481610cfe565b92915050565b600060208284031215610d4057610d3f610bda565b5b6000610d4e84828501610d15565b91505092915050565b610d6081610cc2565b8114610d6b57600080fd5b50565b600081359050610d7d81610d57565b92915050565b600060208284031215610d9957610d98610bda565b5b6000610da784828501610d6e565b91505092915050565b600081519050610dbf81610cfe565b92915050565b600060208284031215610ddb57610dda610bda565b5b6000610de984828501610db0565b91505092915050565b600082825260208201905092915050565b7f4572726f722e204e6f7420656e6f7567682024555344542062616c616e63652e600082015250565b6000610e39602083610df2565b9150610e4482610e03565b602082019050919050565b60006020820190508181036000830152610e6881610e2c565b9050919050565b6000606082019050610e846000830186610cd4565b610e916020830185610cd4565b610e9e6040830184610c4e565b949350505050565b600081519050610eb581610beb565b92915050565b600060208284031215610ed157610ed0610bda565b5b6000610edf84828501610ea6565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f5182610c44565b9150610f5c83610c44565b925082610f6c57610f6b610ee8565b5b828204905092915050565b6000610f8282610c44565b9150610f8d83610c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610fc257610fc1610f17565b5b828201905092915050565b6000610fd882610c44565b9150610fe383610c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561101c5761101b610f17565b5b828202905092915050565b600060408201905061103c6000830185610cd4565b6110496020830184610c4e565b9392505050565b7f5472616e73666572206661696c65640000000000000000000000000000000000600082015250565b6000611086600f83610df2565b915061109182611050565b602082019050919050565b600060208201905081810360008301526110b581611079565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611118602683610df2565b9150611123826110bc565b604082019050919050565b600060208201905081810360008301526111478161110b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611184602083610df2565b915061118f8261114e565b602082019050919050565b600060208201905081810360008301526111b381611177565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006111f0601083610df2565b91506111fb826111ba565b602082019050919050565b6000602082019050818103600083015261121f816111e3565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061125c601483610df2565b915061126782611226565b602082019050919050565b6000602082019050818103600083015261128b8161124f565b905091905056fea2646970667358221220bf15e6f37e9bc532c01704ca458ccb519b2c1b50dac6d4af708a98b3986d5a3264736f6c634300080a0033000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000077a8a0e809b615f7c802438b21a5862d372c78ad00000000000000000000000092d80cb30a5103b3b0918c85366fd6fe13a38257