0x60806040526004361061008a5760003560e01c806382e717f71161005957806382e717f7146101605780639377d71114610184578063a9059cbb146101d0578063b5dc40c3146101f0578063f05d57521461021057600080fd5b8063025e7c27146100965780632c48e7db146100d35780632f54bf6e146100f55780633411c81c1461012557600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b13660046109a8565b610230565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100df57600080fd5b506100f36100ee3660046109a8565b610250565b005b34801561010157600080fd5b506101156101103660046109dd565b6104d9565b60405190151581526020016100ca565b34801561013157600080fd5b506101156101403660046109ff565b600360209081526000928352604080842090915290825290205460ff1681565b34801561016c57600080fd5b5061017660005481565b6040519081526020016100ca565b34801561019057600080fd5b506101a461019f3660046109a8565b610537565b604080516001600160a01b039095168552602085019390935291830152151560608201526080016100ca565b3480156101dc57600080fd5b506100f36101eb366004610a2b565b61057e565b3480156101fc57600080fd5b5061017661020b3660046109a8565b6105b1565b34801561021c57600080fd5b506100f361022b3660046109a8565b6105df565b6001816001811061024057600080fd5b01546001600160a01b0316905081565b610259336104d9565b61027e5760405162461bcd60e51b815260040161027590610a55565b60405180910390fd5b600254819081106102cb5760405162461bcd60e51b8152602060048201526017602482015276151c985b9cd9995c88191bd95cc81b9bdd08195e1a5cdd604a1b6044820152606401610275565b81600281815481106102df576102df610a7b565b600091825260209091206003600490920201015460ff161561033f5760405162461bcd60e51b8152602060048201526019602482015278151c985b9cd9995c88185b1c9958591e48195e1958dd5d1959603a1b6044820152606401610275565b6000838152600360209081526040808320338452909152902054839060ff16156103ab5760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616c726561647920636f6e6669726d65640000000000006044820152606401610275565b60008481526003602090815260408083203384529091529020805460ff1916600190811790915560028054869081106103e6576103e6610a7b565b906000526020600020906004020160020160008282546104069190610aa7565b92505081905550837f20c18a4abede0bc1c157356b42bd0e228b4f123993fae6a0b7cd8b86797c69de6002868154811061044257610442610a7b565b6000918252602090912060049091020154600280546001600160a01b03909216918890811061047357610473610a7b565b9060005260206000209060040201600101546002888154811061049857610498610a7b565b600091825260209182902060026004909202010154604080516001600160a01b0390951685529184019290925282015260600160405180910390a250505050565b6000805b600181101561052e57826001600160a01b03166001826001811061050357610503610a7b565b01546001600160a01b03160361051c5750600192915050565b8061052681610ac0565b9150506104dd565b50600092915050565b6002818154811061054757600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919060ff1684565b610587336104d9565b6105a35760405162461bcd60e51b815260040161027590610a55565b6105ad828261084d565b5050565b6000600282815481106105c6576105c6610a7b565b9060005260206000209060040201600201549050919050565b6105e8336104d9565b6106045760405162461bcd60e51b815260040161027590610a55565b600254819081106106515760405162461bcd60e51b8152602060048201526017602482015276151c985b9cd9995c88191bd95cc81b9bdd08195e1a5cdd604a1b6044820152606401610275565b816002818154811061066557610665610a7b565b600091825260209091206003600490920201015460ff16156106c55760405162461bcd60e51b8152602060048201526019602482015278151c985b9cd9995c88185b1c9958591e48195e1958dd5d1959603a1b6044820152606401610275565b6000600284815481106106da576106da610a7b565b90600052602060002090600402019050600054816002015410156107405760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f75676820636f6e6669726d6174696f6e7300000000000000006044820152606401610275565b60038101805460ff191660019081179091558154908201546040516000926001600160a01b031691908381818185875af1925050503d80600081146107a1576040519150601f19603f3d011682016040523d82523d6000602084013e6107a6565b606091505b50509050806107e95760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610275565b815460018301546003840154604080516001600160a01b039094168452602084019290925260ff1615159082015285907f45ab90878528df9cfe448cc8056b2d48a9f9209058019995332e0b8a0e8087159060600160405180910390a25050505050565b604080516080810182526001600160a01b03848116825260208201848152600093830184815260608401858152600280546001808201835582895296517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600490920291820180546001600160a01b031916919097161790955592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf85015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0840155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1909201805460ff191692151592909217909155546109539190610ad9565b604080516001600160a01b03861681526020810185905291925082917f22d766a62759e3850f9b3df9bef593b2ef6c4a9b8209dc578905321f0d342d20910160405180910390a26109a381610250565b505050565b6000602082840312156109ba57600080fd5b5035919050565b80356001600160a01b03811681146109d857600080fd5b919050565b6000602082840312156109ef57600080fd5b6109f8826109c1565b9392505050565b60008060408385031215610a1257600080fd5b82359150610a22602084016109c1565b90509250929050565b60008060408385031215610a3e57600080fd5b610a47836109c1565b946020939093013593505050565b6020808252600c908201526b2737ba1030b71037bbb732b960a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610aba57610aba610a91565b92915050565b600060018201610ad257610ad2610a91565b5060010190565b81810381811115610aba57610aba610a9156fea264697066735822122025ca0a3a57da3944b0b575fcd6a5e2d69a34085be9c7f04bfc4c86d9648dc00f64736f6c63430008130033
0x60806040526004361061008a5760003560e01c806382e717f71161005957806382e717f7146101605780639377d71114610184578063a9059cbb146101d0578063b5dc40c3146101f0578063f05d57521461021057600080fd5b8063025e7c27146100965780632c48e7db146100d35780632f54bf6e146100f55780633411c81c1461012557600080fd5b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b13660046109a8565b610230565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100df57600080fd5b506100f36100ee3660046109a8565b610250565b005b34801561010157600080fd5b506101156101103660046109dd565b6104d9565b60405190151581526020016100ca565b34801561013157600080fd5b506101156101403660046109ff565b600360209081526000928352604080842090915290825290205460ff1681565b34801561016c57600080fd5b5061017660005481565b6040519081526020016100ca565b34801561019057600080fd5b506101a461019f3660046109a8565b610537565b604080516001600160a01b039095168552602085019390935291830152151560608201526080016100ca565b3480156101dc57600080fd5b506100f36101eb366004610a2b565b61057e565b3480156101fc57600080fd5b5061017661020b3660046109a8565b6105b1565b34801561021c57600080fd5b506100f361022b3660046109a8565b6105df565b6001816001811061024057600080fd5b01546001600160a01b0316905081565b610259336104d9565b61027e5760405162461bcd60e51b815260040161027590610a55565b60405180910390fd5b600254819081106102cb5760405162461bcd60e51b8152602060048201526017602482015276151c985b9cd9995c88191bd95cc81b9bdd08195e1a5cdd604a1b6044820152606401610275565b81600281815481106102df576102df610a7b565b600091825260209091206003600490920201015460ff161561033f5760405162461bcd60e51b8152602060048201526019602482015278151c985b9cd9995c88185b1c9958591e48195e1958dd5d1959603a1b6044820152606401610275565b6000838152600360209081526040808320338452909152902054839060ff16156103ab5760405162461bcd60e51b815260206004820152601a60248201527f5472616e7366657220616c726561647920636f6e6669726d65640000000000006044820152606401610275565b60008481526003602090815260408083203384529091529020805460ff1916600190811790915560028054869081106103e6576103e6610a7b565b906000526020600020906004020160020160008282546104069190610aa7565b92505081905550837f20c18a4abede0bc1c157356b42bd0e228b4f123993fae6a0b7cd8b86797c69de6002868154811061044257610442610a7b565b6000918252602090912060049091020154600280546001600160a01b03909216918890811061047357610473610a7b565b9060005260206000209060040201600101546002888154811061049857610498610a7b565b600091825260209182902060026004909202010154604080516001600160a01b0390951685529184019290925282015260600160405180910390a250505050565b6000805b600181101561052e57826001600160a01b03166001826001811061050357610503610a7b565b01546001600160a01b03160361051c5750600192915050565b8061052681610ac0565b9150506104dd565b50600092915050565b6002818154811061054757600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919060ff1684565b610587336104d9565b6105a35760405162461bcd60e51b815260040161027590610a55565b6105ad828261084d565b5050565b6000600282815481106105c6576105c6610a7b565b9060005260206000209060040201600201549050919050565b6105e8336104d9565b6106045760405162461bcd60e51b815260040161027590610a55565b600254819081106106515760405162461bcd60e51b8152602060048201526017602482015276151c985b9cd9995c88191bd95cc81b9bdd08195e1a5cdd604a1b6044820152606401610275565b816002818154811061066557610665610a7b565b600091825260209091206003600490920201015460ff16156106c55760405162461bcd60e51b8152602060048201526019602482015278151c985b9cd9995c88185b1c9958591e48195e1958dd5d1959603a1b6044820152606401610275565b6000600284815481106106da576106da610a7b565b90600052602060002090600402019050600054816002015410156107405760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f75676820636f6e6669726d6174696f6e7300000000000000006044820152606401610275565b60038101805460ff191660019081179091558154908201546040516000926001600160a01b031691908381818185875af1925050503d80600081146107a1576040519150601f19603f3d011682016040523d82523d6000602084013e6107a6565b606091505b50509050806107e95760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610275565b815460018301546003840154604080516001600160a01b039094168452602084019290925260ff1615159082015285907f45ab90878528df9cfe448cc8056b2d48a9f9209058019995332e0b8a0e8087159060600160405180910390a25050505050565b604080516080810182526001600160a01b03848116825260208201848152600093830184815260608401858152600280546001808201835582895296517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace600490920291820180546001600160a01b031916919097161790955592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf85015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad0840155517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1909201805460ff191692151592909217909155546109539190610ad9565b604080516001600160a01b03861681526020810185905291925082917f22d766a62759e3850f9b3df9bef593b2ef6c4a9b8209dc578905321f0d342d20910160405180910390a26109a381610250565b505050565b6000602082840312156109ba57600080fd5b5035919050565b80356001600160a01b03811681146109d857600080fd5b919050565b6000602082840312156109ef57600080fd5b6109f8826109c1565b9392505050565b60008060408385031215610a1257600080fd5b82359150610a22602084016109c1565b90509250929050565b60008060408385031215610a3e57600080fd5b610a47836109c1565b946020939093013593505050565b6020808252600c908201526b2737ba1030b71037bbb732b960a11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610aba57610aba610a91565b92915050565b600060018201610ad257610ad2610a91565b5060010190565b81810381811115610aba57610aba610a9156fea264697066735822122025ca0a3a57da3944b0b575fcd6a5e2d69a34085be9c7f04bfc4c86d9648dc00f64736f6c63430008130033