0x608060405234801561000f575f80fd5b5060043610610111575f3560e01c806370a082311161009e5780639b792a441161006e5780639b792a441461025d578063a1c617f514610270578063a457c2d714610283578063a9059cbb14610296578063dd62ed3e146102a9575f80fd5b806370a0823114610202578063715018a61461022a5780638da5cb5b1461023257806395d89b4114610115575f80fd5b806323b872dd116100e457806323b872dd1461019c578063313ce567146101af57806335d16274146101c957806339509351146101dc57806366d38203146101ef575f80fd5b806306fdde0314610115578063095ea7b31461014d57806318160ddd1461017057806318aee92014610187575b5f80fd5b6101376040518060400160405280600381526020016246555960e81b81525081565b6040516101449190610e43565b60405180910390f35b61016061015b366004610eb5565b6102bc565b6040519015158152602001610144565b61017960095481565b604051908152602001610144565b61019a610195366004610edf565b6102d2565b005b6101606101aa366004610f5a565b6103f8565b6101b7601281565b60405160ff9091168152602001610144565b6101796101d7366004610f98565b610419565b6101606101ea366004610eb5565b610545565b61019a6101fd366004610f98565b610566565b610179610210366004610f98565b6001600160a01b03165f9081526007602052604090205490565b61019a6105dc565b600254610245906001600160a01b031681565b6040516001600160a01b039091168152602001610144565b61016061026b366004610fc7565b610642565b61019a61027e366004610edf565b6106e6565b610160610291366004610eb5565b6107ef565b6101606102a4366004610eb5565b610874565b6101796102b73660046110a9565b610880565b5f6102c83384846108aa565b5060015b92915050565b6003546001600160a01b0316331461032b5760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329027bbb732b960491b60448201526064015b60405180910390fd5b5f5b838110156103f1578261036086868481811061034b5761034b6110e0565b90506020020160208101906102109190610f98565b11156103df575f61039786868481811061037c5761037c6110e0565b90506020020160208101906103919190610f98565b846109ce565b90508060075f8888868181106103af576103af6110e0565b90506020020160208101906103c49190610f98565b6001600160a01b0316815260208101919091526040015f2055505b806103e981611108565b91505061032d565b5050505050565b5f6104048433846109f7565b61040f848484610a6f565b5060019392505050565b5f805f60015f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561046c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104909190611136565b50915091505f846001600160a01b031660015f9054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105149190611182565b6001600160a01b03161461053157816001600160701b031661053c565b826001600160701b03165b95945050505050565b5f3361040f8185856105578383610880565b610561919061119d565b6108aa565b6002546001600160a01b031633146105ba5760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329037bbb732b960491b6044820152606401610322565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146106305760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329037bbb732b960491b6044820152606401610322565b600280546001600160a01b0319169055565b6003545f906001600160a01b031633146106985760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329027bbb732b960491b6044820152606401610322565b5f5b85518110156106da576106c88682815181106106b8576106b86110e0565b6020026020010151868686610c45565b806106d281611108565b91505061069a565b50600195945050505050565b5f5b838110156103f157848482818110610702576107026110e0565b90506020020160208101906107179190610f98565b600554604080518681525f60208201819052818301526060810186905290516001600160a01b0393841693909216917f75b2fdf4488954cfbe3fad3f07ca6ebf12156d6b897c6df1014d7c51ed3227719181900360800190a3848482818110610782576107826110e0565b90506020020160208101906107979190610f98565b6006546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806107e781611108565b9150506106e8565b5f33816107fc8286610880565b90508381101561085c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610322565b61086982868684036108aa565b506001949350505050565b5f6102c8338484610a6f565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6001600160a01b03831661090c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610322565b6001600160a01b03821661096d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610322565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382165f908152600760205260408120546109f09083610cd6565b9392505050565b5f610a028484610880565b90505f198114610a695781811015610a5c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610322565b610a6984848484036108aa565b50505050565b6001600160a01b038316610ad35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610322565b6001600160a01b038216610b355760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610322565b6001600160a01b0383165f9081526007602052604090205481811015610bac5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610322565b610bb68183610ce1565b6001600160a01b038086165f908152600760205260408082209390935590851681522054610be49083610d45565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c379086815260200190565b60405180910390a350505050565b610c4f8484610da3565b610c5a838386610deb565b6001546040516370ab58db60e11b81526001600160a01b0386811660048301529182166024820152604481018490529082169063e156b1b6906064016020604051808303815f875af1158015610cb2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f191906111b0565b5f6109f082846111cf565b5f82821115610d325760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610322565b5f610d3d83856111ee565b949350505050565b5f80610d51838561119d565b9050838110156109f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610322565b6001546040518281526001600160a01b038481169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600454604080518581525f6020820181905291810191909152606081018490526001600160a01b038381169216907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822906080016109c1565b5f6020808352835180828501525f5b81811015610e6e57858101830151858201604001528201610e52565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ea2575f80fd5b50565b8035610eb081610e8e565b919050565b5f8060408385031215610ec6575f80fd5b8235610ed181610e8e565b946020939093013593505050565b5f805f8060608587031215610ef2575f80fd5b843567ffffffffffffffff80821115610f09575f80fd5b818701915087601f830112610f1c575f80fd5b813581811115610f2a575f80fd5b8860208260051b8501011115610f3e575f80fd5b6020928301999098509187013596604001359550909350505050565b5f805f60608486031215610f6c575f80fd5b8335610f7781610e8e565b92506020840135610f8781610e8e565b929592945050506040919091013590565b5f60208284031215610fa8575f80fd5b81356109f081610e8e565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610fda575f80fd5b843567ffffffffffffffff80821115610ff1575f80fd5b818701915087601f830112611004575f80fd5b813560208282111561101857611018610fb3565b8160051b604051601f19603f8301168101818110868211171561103d5761103d610fb3565b60405292835281830193508481018201928b84111561105a575f80fd5b948201945b8386101561107f5761107086610ea5565b8552948201949382019361105f565b985050880135955050506040860135925061109e905060608601610ea5565b905092959194509250565b5f80604083850312156110ba575f80fd5b82356110c581610e8e565b915060208301356110d581610e8e565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611119576111196110f4565b5060010190565b80516001600160701b0381168114610eb0575f80fd5b5f805f60608486031215611148575f80fd5b61115184611120565b925061115f60208501611120565b9150604084015163ffffffff81168114611177575f80fd5b809150509250925092565b5f60208284031215611192575f80fd5b81516109f081610e8e565b808201808211156102cc576102cc6110f4565b5f602082840312156111c0575f80fd5b815180151581146109f0575f80fd5b5f826111e957634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156102cc576102cc6110f456fea26469706673582212207a1f1620ecb8f6046cf977f3465dcc2017ecb96f80b0eaaecddd7b4fb9fca62164736f6c63430008140033
0x6080604052600480546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556005805490911673ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b1790556b06765c793fa10079d0000000600955348015610067575f80fd5b5060028054336001600160a01b03199182168117909255600380548216909217909155600480545f80546001600160a01b039092169190931681179092556040805163c45a015560e01b8152905163c45a0155928281019260209291908290030181865afa1580156100db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ff919061025d565b6001600160a01b031663c9c65396305f8054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610180919061025d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156101ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee919061025d565b600180546001600160a01b0319166001600160a01b0392909216919091179055600954335f81815260076020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361028a565b5f6020828403121561026d575f80fd5b81516001600160a01b0381168114610283575f80fd5b9392505050565b61123780620002985f395ff3fe608060405234801561000f575f80fd5b5060043610610111575f3560e01c806370a082311161009e5780639b792a441161006e5780639b792a441461025d578063a1c617f514610270578063a457c2d714610283578063a9059cbb14610296578063dd62ed3e146102a9575f80fd5b806370a0823114610202578063715018a61461022a5780638da5cb5b1461023257806395d89b4114610115575f80fd5b806323b872dd116100e457806323b872dd1461019c578063313ce567146101af57806335d16274146101c957806339509351146101dc57806366d38203146101ef575f80fd5b806306fdde0314610115578063095ea7b31461014d57806318160ddd1461017057806318aee92014610187575b5f80fd5b6101376040518060400160405280600381526020016246555960e81b81525081565b6040516101449190610e43565b60405180910390f35b61016061015b366004610eb5565b6102bc565b6040519015158152602001610144565b61017960095481565b604051908152602001610144565b61019a610195366004610edf565b6102d2565b005b6101606101aa366004610f5a565b6103f8565b6101b7601281565b60405160ff9091168152602001610144565b6101796101d7366004610f98565b610419565b6101606101ea366004610eb5565b610545565b61019a6101fd366004610f98565b610566565b610179610210366004610f98565b6001600160a01b03165f9081526007602052604090205490565b61019a6105dc565b600254610245906001600160a01b031681565b6040516001600160a01b039091168152602001610144565b61016061026b366004610fc7565b610642565b61019a61027e366004610edf565b6106e6565b610160610291366004610eb5565b6107ef565b6101606102a4366004610eb5565b610874565b6101796102b73660046110a9565b610880565b5f6102c83384846108aa565b5060015b92915050565b6003546001600160a01b0316331461032b5760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329027bbb732b960491b60448201526064015b60405180910390fd5b5f5b838110156103f1578261036086868481811061034b5761034b6110e0565b90506020020160208101906102109190610f98565b11156103df575f61039786868481811061037c5761037c6110e0565b90506020020160208101906103919190610f98565b846109ce565b90508060075f8888868181106103af576103af6110e0565b90506020020160208101906103c49190610f98565b6001600160a01b0316815260208101919091526040015f2055505b806103e981611108565b91505061032d565b5050505050565b5f6104048433846109f7565b61040f848484610a6f565b5060019392505050565b5f805f60015f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561046c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104909190611136565b50915091505f846001600160a01b031660015f9054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105149190611182565b6001600160a01b03161461053157816001600160701b031661053c565b826001600160701b03165b95945050505050565b5f3361040f8185856105578383610880565b610561919061119d565b6108aa565b6002546001600160a01b031633146105ba5760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329037bbb732b960491b6044820152606401610322565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031633146106305760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329037bbb732b960491b6044820152606401610322565b600280546001600160a01b0319169055565b6003545f906001600160a01b031633146106985760405162461bcd60e51b815260206004820152601760248201527621b0b63632b91034b9903737ba103a34329027bbb732b960491b6044820152606401610322565b5f5b85518110156106da576106c88682815181106106b8576106b86110e0565b6020026020010151868686610c45565b806106d281611108565b91505061069a565b50600195945050505050565b5f5b838110156103f157848482818110610702576107026110e0565b90506020020160208101906107179190610f98565b600554604080518681525f60208201819052818301526060810186905290516001600160a01b0393841693909216917f75b2fdf4488954cfbe3fad3f07ca6ebf12156d6b897c6df1014d7c51ed3227719181900360800190a3848482818110610782576107826110e0565b90506020020160208101906107979190610f98565b6006546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806107e781611108565b9150506106e8565b5f33816107fc8286610880565b90508381101561085c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610322565b61086982868684036108aa565b506001949350505050565b5f6102c8338484610a6f565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b6001600160a01b03831661090c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610322565b6001600160a01b03821661096d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610322565b6001600160a01b038381165f8181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382165f908152600760205260408120546109f09083610cd6565b9392505050565b5f610a028484610880565b90505f198114610a695781811015610a5c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610322565b610a6984848484036108aa565b50505050565b6001600160a01b038316610ad35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610322565b6001600160a01b038216610b355760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610322565b6001600160a01b0383165f9081526007602052604090205481811015610bac5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610322565b610bb68183610ce1565b6001600160a01b038086165f908152600760205260408082209390935590851681522054610be49083610d45565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c379086815260200190565b60405180910390a350505050565b610c4f8484610da3565b610c5a838386610deb565b6001546040516370ab58db60e11b81526001600160a01b0386811660048301529182166024820152604481018490529082169063e156b1b6906064016020604051808303815f875af1158015610cb2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f191906111b0565b5f6109f082846111cf565b5f82821115610d325760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610322565b5f610d3d83856111ee565b949350505050565b5f80610d51838561119d565b9050838110156109f05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610322565b6001546040518281526001600160a01b038481169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600454604080518581525f6020820181905291810191909152606081018490526001600160a01b038381169216907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822906080016109c1565b5f6020808352835180828501525f5b81811015610e6e57858101830151858201604001528201610e52565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ea2575f80fd5b50565b8035610eb081610e8e565b919050565b5f8060408385031215610ec6575f80fd5b8235610ed181610e8e565b946020939093013593505050565b5f805f8060608587031215610ef2575f80fd5b843567ffffffffffffffff80821115610f09575f80fd5b818701915087601f830112610f1c575f80fd5b813581811115610f2a575f80fd5b8860208260051b8501011115610f3e575f80fd5b6020928301999098509187013596604001359550909350505050565b5f805f60608486031215610f6c575f80fd5b8335610f7781610e8e565b92506020840135610f8781610e8e565b929592945050506040919091013590565b5f60208284031215610fa8575f80fd5b81356109f081610e8e565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610fda575f80fd5b843567ffffffffffffffff80821115610ff1575f80fd5b818701915087601f830112611004575f80fd5b813560208282111561101857611018610fb3565b8160051b604051601f19603f8301168101818110868211171561103d5761103d610fb3565b60405292835281830193508481018201928b84111561105a575f80fd5b948201945b8386101561107f5761107086610ea5565b8552948201949382019361105f565b985050880135955050506040860135925061109e905060608601610ea5565b905092959194509250565b5f80604083850312156110ba575f80fd5b82356110c581610e8e565b915060208301356110d581610e8e565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611119576111196110f4565b5060010190565b80516001600160701b0381168114610eb0575f80fd5b5f805f60608486031215611148575f80fd5b61115184611120565b925061115f60208501611120565b9150604084015163ffffffff81168114611177575f80fd5b809150509250925092565b5f60208284031215611192575f80fd5b81516109f081610e8e565b808201808211156102cc576102cc6110f4565b5f602082840312156111c0575f80fd5b815180151581146109f0575f80fd5b5f826111e957634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156102cc576102cc6110f456fea26469706673582212207a1f1620ecb8f6046cf977f3465dcc2017ecb96f80b0eaaecddd7b4fb9fca62164736f6c63430008140033