0x6080604052600080546001600160a01b0319163317905534801561002257600080fd5b50610bcc806100326000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac14610229578063a9059cbb1461023c578063d3d2bfda1461024f578063dd62ed3e1461026257600080fd5b806340c10f19146101d457806370a08231146101e7578063938b5f321461021057806395d89b411461022157600080fd5b806318160ddd116100d357806318160ddd1461018057806323b872dd146101925780632801617e146101a5578063313ce567146101ba57600080fd5b806301ffc9a71461010557806302d05d3f1461012d57806306fdde0314610158578063095ea7b31461016d575b600080fd5b6101186101133660046108f6565b61029b565b60405190151581526020015b60405180910390f35b600054610140906001600160a01b031681565b6040516001600160a01b039091168152602001610124565b6101606102ed565b604051610124919061094b565b61011861017b36600461099a565b610364565b6003545b604051908152602001610124565b6101186101a03660046109c4565b61041f565b6101b86101b3366004610a00565b61057d565b005b6101c26105b6565b60405160ff9091168152602001610124565b6101b86101e236600461099a565b610624565b6101846101f5366004610a00565b6001600160a01b031660009081526004602052604090205490565b6001546001600160a01b0316610140565b6101606106f8565b6101b861023736600461099a565b61078e565b61011861024a36600461099a565b61085d565b600154610140906001600160a01b031681565b610184610270366004610a1b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60006001600160e01b03198216634a17459160e11b14806102cc57506001600160e01b0319821663809d3ae760e01b145b806102e757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610337573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261035f9190810190610a64565b905090565b60006001600160a01b0383166103ba5760405162461bcd60e51b815260206004820152601660248201527522a9219699181d1029b832b73232b91032b93937b91760511b60448201526064015b60405180910390fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a350600192915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156104925760405162461bcd60e51b815260206004820152601f60248201527f4552432d32303a20496e73756666696369656e7420616c6c6f77616e63652e0060448201526064016103b1565b6001600160a01b038416600090815260046020526040812080548492906104ba908490610b27565b90915550506001600160a01b0384166000908152600260209081526040808320338452909152812080548492906104f2908490610b27565b90915550506001600160a01b0383166000908152600460205260408120805484929061051f908490610b3a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161056b91815260200190565b60405180910390a35060019392505050565b6000546001600160a01b0316331461059457600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f9190610b4d565b6000546001600160a01b031633146106ae5760405162461bcd60e51b815260206004820152604160248201527f5772617070657220546f6b656e3a204f6e6c79207468652063726561746f722060448201527f636f6e74726163742063616e206d696e74207772617070657220746f6b656e736064820152601760f91b608482015260a4016103b1565b6001600160a01b038216600090815260046020526040812080548392906106d6908490610b3a565b9250508190555080600360008282546106ef9190610b3a565b90915550505050565b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610742573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261076a9190810190610a64565b60405160200161077a9190610b70565b604051602081830303815290604052905090565b6000546001600160a01b0316331461081c5760405162461bcd60e51b8152602060048201526044602482018190527f5772617070657220546f6b656e3a204f6e6c79207468652063726561746f7220908201527f636f6e74726163742063616e2064657374726f79207772617070657220746f6b60648201526332b7399760e11b608482015260a4016103b1565b6001600160a01b03821660009081526004602052604081208054839290610844908490610b27565b9250508190555080600360008282546106ef9190610b27565b33600090815260046020526040812054610878908390610b27565b33600090815260046020526040808220929092556001600160a01b038516815220546108a5908390610b3a565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061040e9086815260200190565b60006020828403121561090857600080fd5b81356001600160e01b03198116811461092057600080fd5b9392505050565b60005b8381101561094257818101518382015260200161092a565b50506000910152565b602081526000825180602084015261096a816040850160208701610927565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461099557600080fd5b919050565b600080604083850312156109ad57600080fd5b6109b68361097e565b946020939093013593505050565b6000806000606084860312156109d957600080fd5b6109e28461097e565b92506109f06020850161097e565b9150604084013590509250925092565b600060208284031215610a1257600080fd5b6109208261097e565b60008060408385031215610a2e57600080fd5b610a378361097e565b9150610a456020840161097e565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a7657600080fd5b815167ffffffffffffffff80821115610a8e57600080fd5b818401915084601f830112610aa257600080fd5b815181811115610ab457610ab4610a4e565b604051601f8201601f19908116603f01168101908382118183101715610adc57610adc610a4e565b81604052828152876020848701011115610af557600080fd5b610b06836020830160208801610927565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156102e7576102e7610b11565b808201808211156102e7576102e7610b11565b600060208284031215610b5f57600080fd5b815160ff8116811461092057600080fd5b60008251610b82818460208701610927565b61032360f41b92019182525060020191905056fea26469706673582212206d1cc2fa1bb70b9001650ac3933cbba9bc7ad8ab872c7135521ab57e0f00ff1464736f6c63430008130033
0x608060405234801561001057600080fd5b50600436106101005760003560e01c806340c10f19116100975780639dc29fac116100665780639dc29fac14610229578063a9059cbb1461023c578063d3d2bfda1461024f578063dd62ed3e1461026257600080fd5b806340c10f19146101d457806370a08231146101e7578063938b5f321461021057806395d89b411461022157600080fd5b806318160ddd116100d357806318160ddd1461018057806323b872dd146101925780632801617e146101a5578063313ce567146101ba57600080fd5b806301ffc9a71461010557806302d05d3f1461012d57806306fdde0314610158578063095ea7b31461016d575b600080fd5b6101186101133660046108f6565b61029b565b60405190151581526020015b60405180910390f35b600054610140906001600160a01b031681565b6040516001600160a01b039091168152602001610124565b6101606102ed565b604051610124919061094b565b61011861017b36600461099a565b610364565b6003545b604051908152602001610124565b6101186101a03660046109c4565b61041f565b6101b86101b3366004610a00565b61057d565b005b6101c26105b6565b60405160ff9091168152602001610124565b6101b86101e236600461099a565b610624565b6101846101f5366004610a00565b6001600160a01b031660009081526004602052604090205490565b6001546001600160a01b0316610140565b6101606106f8565b6101b861023736600461099a565b61078e565b61011861024a36600461099a565b61085d565b600154610140906001600160a01b031681565b610184610270366004610a1b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b60006001600160e01b03198216634a17459160e11b14806102cc57506001600160e01b0319821663809d3ae760e01b145b806102e757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610337573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261035f9190810190610a64565b905090565b60006001600160a01b0383166103ba5760405162461bcd60e51b815260206004820152601660248201527522a9219699181d1029b832b73232b91032b93937b91760511b60448201526064015b60405180910390fd5b3360008181526002602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a350600192915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156104925760405162461bcd60e51b815260206004820152601f60248201527f4552432d32303a20496e73756666696369656e7420616c6c6f77616e63652e0060448201526064016103b1565b6001600160a01b038416600090815260046020526040812080548492906104ba908490610b27565b90915550506001600160a01b0384166000908152600260209081526040808320338452909152812080548492906104f2908490610b27565b90915550506001600160a01b0383166000908152600460205260408120805484929061051f908490610b3a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161056b91815260200190565b60405180910390a35060019392505050565b6000546001600160a01b0316331461059457600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610600573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035f9190610b4d565b6000546001600160a01b031633146106ae5760405162461bcd60e51b815260206004820152604160248201527f5772617070657220546f6b656e3a204f6e6c79207468652063726561746f722060448201527f636f6e74726163742063616e206d696e74207772617070657220746f6b656e736064820152601760f91b608482015260a4016103b1565b6001600160a01b038216600090815260046020526040812080548392906106d6908490610b3a565b9250508190555080600360008282546106ef9190610b3a565b90915550505050565b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610742573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261076a9190810190610a64565b60405160200161077a9190610b70565b604051602081830303815290604052905090565b6000546001600160a01b0316331461081c5760405162461bcd60e51b8152602060048201526044602482018190527f5772617070657220546f6b656e3a204f6e6c79207468652063726561746f7220908201527f636f6e74726163742063616e2064657374726f79207772617070657220746f6b60648201526332b7399760e11b608482015260a4016103b1565b6001600160a01b03821660009081526004602052604081208054839290610844908490610b27565b9250508190555080600360008282546106ef9190610b27565b33600090815260046020526040812054610878908390610b27565b33600090815260046020526040808220929092556001600160a01b038516815220546108a5908390610b3a565b6001600160a01b0384166000818152600460205260409081902092909255905133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061040e9086815260200190565b60006020828403121561090857600080fd5b81356001600160e01b03198116811461092057600080fd5b9392505050565b60005b8381101561094257818101518382015260200161092a565b50506000910152565b602081526000825180602084015261096a816040850160208701610927565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461099557600080fd5b919050565b600080604083850312156109ad57600080fd5b6109b68361097e565b946020939093013593505050565b6000806000606084860312156109d957600080fd5b6109e28461097e565b92506109f06020850161097e565b9150604084013590509250925092565b600060208284031215610a1257600080fd5b6109208261097e565b60008060408385031215610a2e57600080fd5b610a378361097e565b9150610a456020840161097e565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610a7657600080fd5b815167ffffffffffffffff80821115610a8e57600080fd5b818401915084601f830112610aa257600080fd5b815181811115610ab457610ab4610a4e565b604051601f8201601f19908116603f01168101908382118183101715610adc57610adc610a4e565b81604052828152876020848701011115610af557600080fd5b610b06836020830160208801610927565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156102e7576102e7610b11565b808201808211156102e7576102e7610b11565b600060208284031215610b5f57600080fd5b815160ff8116811461092057600080fd5b60008251610b82818460208701610927565b61032360f41b92019182525060020191905056fea26469706673582212206d1cc2fa1bb70b9001650ac3933cbba9bc7ad8ab872c7135521ab57e0f00ff1464736f6c63430008130033