0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a457c2d711610066578063a457c2d7146101f4578063a9059cbb14610207578063da1919b31461021a578063dd62ed3e1461022d57600080fd5b806342966c681461019b57806370a08231146101b057806379cc6790146101d957806395d89b41146101ec57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461017557806340c10f191461018857600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610266565b60405161010f9190610a13565b60405180910390f35b61012b610126366004610a84565b6102f8565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004610aae565b61030e565b60385460405160ff909116815260200161010f565b61012b610183366004610a84565b610388565b61012b610196366004610a84565b6103be565b6101ae6101a9366004610aea565b6103ca565b005b61013f6101be366004610b03565b6001600160a01b031660009081526033602052604090205490565b6101ae6101e7366004610a84565b6103d7565b6101026103e5565b61012b610202366004610a84565b6103f4565b61012b610215366004610a84565b610443565b6101ae610228366004610a84565b610450565b61013f61023b366004610b1e565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b60606036805461027590610b51565b80601f01602080910402602001604051908101604052809291908181526020018280546102a190610b51565b80156102ee5780601f106102c3576101008083540402835291602001916102ee565b820191906000526020600020905b8154815290600101906020018083116102d157829003601f168201915b5050505050905090565b600061030533848461045a565b50600192915050565b600061031b848484610583565b61037e843361037985604051806060016040528060278152602001610c3a602791396001600160a01b038a16600090815260346020526040812090335b6001600160a01b031681526020810191909152604001600020549190610706565b61045a565b5060019392505050565b3360008181526034602090815260408083206001600160a01b038716845290915281205490916103059185906103799086610740565b600061030583836107a6565b6103d4338261088c565b50565b6103e18282610986565b5050565b60606037805461027590610b51565b6000610305338461037985604051806060016040528060248152602001610c16602491393360009081526034602090815260408083206001600160a01b038d1684529091529020549190610706565b6000610305338484610583565b6103e182826107a6565b6001600160a01b0383166104c15760405162461bcd60e51b815260206004820152602360248201527f4b4950373a20617070726f76652066726f6d20746865207a65726f206164647260448201526265737360e81b60648201526084015b60405180910390fd5b6001600160a01b0382166105215760405162461bcd60e51b815260206004820152602160248201527f4b4950373a20617070726f766520746f20746865207a65726f206164647265736044820152607360f81b60648201526084016104b8565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166105e55760405162461bcd60e51b8152602060048201526024808201527f4b4950373a207472616e736665722066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b8565b6001600160a01b0382166106465760405162461bcd60e51b815260206004820152602260248201527f4b4950373a207472616e7366657220746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b8565b61068381604051806060016040528060258152602001610c61602591396001600160a01b0386166000908152603360205260409020549190610706565b6001600160a01b0380851660009081526033602052604080822093909355908416815220546106b29082610740565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105769085815260200190565b6000818484111561072a5760405162461bcd60e51b81526004016104b89190610a13565b5060006107378486610ba2565b95945050505050565b60008061074d8385610bb9565b90508381101561079f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104b8565b9392505050565b6001600160a01b0382166107fc5760405162461bcd60e51b815260206004820152601e60248201527f4b4950373a206d696e7420746f20746865207a65726f2061646472657373000060448201526064016104b8565b6035546108099082610740565b6035556001600160a01b03821660009081526033602052604090205461082f9082610740565b6001600160a01b0383166000818152603360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108809085815260200190565b60405180910390a35050565b6001600160a01b0382166108e25760405162461bcd60e51b815260206004820181905260248201527f4b4950373a206275726e2066726f6d20746865207a65726f206164647265737360448201526064016104b8565b61091f81604051806060016040528060218152602001610bd2602191396001600160a01b0385166000908152603360205260409020549190610706565b6001600160a01b03831660009081526033602052604090205560355461094590826109d1565b6035556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610880565b610990828261088c565b6103e1823361037984604051806060016040528060238152602001610bf3602391396001600160a01b03881660009081526034602052604081209033610358565b600061079f83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250610706565b600060208083528351808285015260005b81811015610a4057858101830151858201604001528201610a24565b81811115610a52576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610a7f57600080fd5b919050565b60008060408385031215610a9757600080fd5b610aa083610a68565b946020939093013593505050565b600080600060608486031215610ac357600080fd5b610acc84610a68565b9250610ada60208501610a68565b9150604084013590509250925092565b600060208284031215610afc57600080fd5b5035919050565b600060208284031215610b1557600080fd5b61079f82610a68565b60008060408385031215610b3157600080fd5b610b3a83610a68565b9150610b4860208401610a68565b90509250929050565b600181811c90821680610b6557607f821691505b60208210811415610b8657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bb457610bb4610b8c565b500390565b60008219821115610bcc57610bcc610b8c565b50019056fe4b4950373a206275726e20616d6f756e7420657863656564732062616c616e63654b4950373a206275726e20616d6f756e74206578636565647320616c6c6f77616e63654b4950373a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4b4950373a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654b4950373a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a26469706673582212204ef06fec03a1054d159c89bec43b31a7ba39938854c4266aa73612452fc024f764736f6c634300080b0033