0x608060405234801561001057600080fd5b5061001a336101d5565b60405163095ea7b360e01b815273ba12222222228d8ba445958a75a0704d566bf2c86004820152600019602482015273d533a949740bb3306d119cc777fa900ba034cd529063095ea7b3906044016020604051808303816000875af1158015610087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ab9190610225565b5060405163095ea7b360e01b815273c1e3ca8a3921719be0ae3690a0e036feb4f691916004820152600019602482015273d533a949740bb3306d119cc777fa900ba034cd529063095ea7b3906044016020604051808303816000875af1158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013d9190610225565b5060405163095ea7b360e01b815273f7b55c3732ad8b2c2da7c24f30a69f55c54fb7176004820152600019602482015273d1b5651e55d4ceed36251c61c50c889b36f6abb59063095ea7b3906044016020604051808303816000875af11580156101ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cf9190610225565b5061024e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561023757600080fd5b8151801515811461024757600080fd5b9392505050565b61100f806200025e6000396000f3fe6080604052600436106100705760003560e01c80637e5465ba1161004e5780637e5465ba146100bf5780638da5cb5b146100df578063f04f270714610118578063f2fde38b1461013857600080fd5b806351cff8d9146100755780635aee7e9214610097578063715018a6146100aa575b600080fd5b34801561008157600080fd5b50610095610090366004610b3d565b610158565b005b6100956100a5366004610b61565b610291565b3480156100b657600080fd5b506100956103cf565b3480156100cb57600080fd5b506100956100da366004610b7a565b6103e3565b3480156100eb57600080fd5b506000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561012457600080fd5b50610095610133366004610d4e565b610465565b34801561014457600080fd5b50610095610153366004610b3d565b6108c0565b610160610977565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156101cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f19190610e59565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810182905290915073ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb906044015b6020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190610e72565b505050565b6040805160018082528183019092526000916020808301908036833701905050905073d533a949740bb3306d119cc777fa900ba034cd52816000815181106102db576102db610e94565b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252600091816020016020820280368337019050509050828160008151811061033957610339610e94565b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ba12222222228d8ba445958a75a0704d566bf2c890635c38449e9061039890309086908690600401610ec3565b600060405180830381600087803b1580156103b257600080fd5b505af11580156103c6573d6000803e3d6000fd5b50505050505050565b6103d7610977565b6103e160006109f8565b565b6103eb610977565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483015283169063095ea7b390604401610249565b3373ba12222222228d8ba445958a75a0704d566bf2c8146104e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216175746800000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000836000815181106104fc576104fc610e94565b60209081029190910101516040517fd0f492f700000000000000000000000000000000000000000000000000000000815260048101829052600160248201526000604482015230606482015290915073c1e3ca8a3921719be0ae3690a0e036feb4f691919063d0f492f790608401600060405180830381600087803b15801561058457600080fd5b505af1158015610598573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000925073d1b5651e55d4ceed36251c61c50c889b36f6abb591506370a0823190602401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190610e59565b905061063681610a6d565b8560008151811061064957610649610e94565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73ba12222222228d8ba445958a75a0704d566bf2c88660008151811061069457610694610e94565b6020026020010151886000815181106106af576106af610e94565b60200260200101516106c19190610f99565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015610731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107559190610e72565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073d533a949740bb3306d119cc777fa900ba034cd52906370a0823190602401602060405180830381865afa1580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190610e59565b905073d533a949740bb3306d119cc777fa900ba034cd5263a9059cbb61082060005473ffffffffffffffffffffffffffffffffffffffff1690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b69190610e72565b5050505050505050565b6108c8610977565b73ffffffffffffffffffffffffffffffffffffffff811661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104de565b610974816109f8565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104de565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517fddc1f59d0000000000000000000000000000000000000000000000000000000081526001600482015260006024820152604481018290526064810182905230608482015273f7b55c3732ad8b2c2da7c24f30a69f55c54fb7179063ddc1f59d9060a4016020604051808303816000875af1158015610af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b179190610e59565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116811461097457600080fd5b600060208284031215610b4f57600080fd5b8135610b5a81610b1b565b9392505050565b600060208284031215610b7357600080fd5b5035919050565b60008060408385031215610b8d57600080fd5b8235610b9881610b1b565b91506020830135610ba881610b1b565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c2957610c29610bb3565b604052919050565b600067ffffffffffffffff821115610c4b57610c4b610bb3565b5060051b60200190565b600082601f830112610c6657600080fd5b81356020610c7b610c7683610c31565b610be2565b82815260059290921b84018101918181019086841115610c9a57600080fd5b8286015b84811015610cb55780358352918301918301610c9e565b509695505050505050565b600082601f830112610cd157600080fd5b813567ffffffffffffffff811115610ceb57610ceb610bb3565b610d1c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610be2565b818152846020838601011115610d3157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610d6457600080fd5b843567ffffffffffffffff80821115610d7c57600080fd5b818701915087601f830112610d9057600080fd5b81356020610da0610c7683610c31565b82815260059290921b8401810191818101908b841115610dbf57600080fd5b948201945b83861015610de6578535610dd781610b1b565b82529482019490820190610dc4565b98505088013592505080821115610dfc57600080fd5b610e0888838901610c55565b94506040870135915080821115610e1e57600080fd5b610e2a88838901610c55565b93506060870135915080821115610e4057600080fd5b50610e4d87828801610cc0565b91505092959194509250565b600060208284031215610e6b57600080fd5b5051919050565b600060208284031215610e8457600080fd5b81518015158114610b5a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006080820173ffffffffffffffffffffffffffffffffffffffff8087168452602060808186015282875180855260a087019150828901945060005b81811015610f1d578551851683529483019491830191600101610eff565b5050858103604087015286518082529082019350915080860160005b83811015610f5557815185529382019390820190600101610f39565b505050508281036060840152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152604081019695505050505050565b80820180821115610fd3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208c5bfa7c963bffd4edef009f00add3e0aa0e32c9df25dbc6d66dce4f3ecc659b64736f6c63430008120033