608060405234801561001057600080fd5b50600580546001600160a01b031916331790556111c3806100326000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806375b9a54e116100cd578063c2a672e011610081578063dd62ed3e11610066578063dd62ed3e1461043a578063e920e0e414610468578063f5eb42dc146104855761016c565b8063c2a672e0146103e8578063c4d66de8146104145761016c565b8063a457c2d7116100b2578063a457c2d714610364578063a9059cbb14610390578063adc9772e146103bc5761016c565b806375b9a54e1461033f57806395d89b411461035c5761016c565b8063313ce567116101245780633a98ef39116101095780633a98ef39146102ed5780634cf088d9146102f557806370a08231146103195761016c565b8063313ce567146102a357806339509351146102c15761016c565b8063095ea7b311610155578063095ea7b31461021357806318160ddd1461025357806323b872dd1461026d5761016c565b8063058ecdb41461017157806306fdde0314610196575b600080fd5b6101946004803603604081101561018757600080fd5b50803590602001356104ab565b005b61019e610559565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d85781810151838201526020016101c0565b50505050905090810190601f1680156102055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023f6004803603604081101561022957600080fd5b506001600160a01b038135169060200135610590565b604080519115158252519081900360200190f35b61025b6105a7565b60408051918252519081900360200190f35b61023f6004803603606081101561028357600080fd5b506001600160a01b038135811691602081013590911690604001356105ad565b6102ab61063a565b6040805160ff9092168252519081900360200190f35b61023f600480360360408110156102d757600080fd5b506001600160a01b03813516906020013561063f565b61025b610675565b6102fd61067b565b604080516001600160a01b039092168252519081900360200190f35b61025b6004803603602081101561032f57600080fd5b50356001600160a01b031661068a565b61025b6004803603602081101561035557600080fd5b50356106b4565b61019e6106ef565b61023f6004803603604081101561037a57600080fd5b506001600160a01b038135169060200135610726565b61023f600480360360408110156103a657600080fd5b506001600160a01b0381351690602001356107a2565b610194600480360360408110156103d257600080fd5b506001600160a01b0381351690602001356107af565b610194600480360360408110156103fe57600080fd5b506001600160a01b03813516906020013561083b565b6101946004803603602081101561042a57600080fd5b50356001600160a01b03166108c2565b61025b6004803603604081101561045057600080fd5b506001600160a01b03813581169160200135166109bd565b61025b6004803603602081101561047e57600080fd5b50356109e8565b61025b6004803603602081101561049b57600080fd5b50356001600160a01b0316610a16565b6004546001600160a01b0316331461050a576040805162461bcd60e51b815260206004820152601b60248201527f58414c443a206f6e6c79207374616b696e6720636f6e74726163740000000000604482015290519081900360640190fd5b6002546105179082610a31565b600255604080518381526020810183905281517f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511929181900390910190a15050565b60408051808201909152601081527f7374616b656420414c4420546f6b656e00000000000000000000000000000000602082015290565b600061059d338484610a92565b5060015b92915050565b60025490565b6001600160a01b0383166000908152600160209081526040808320338452909152812054828110156106105760405162461bcd60e51b81526004018080602001828103825260278152602001806110b86027913960400191505060405180910390fd5b61061b858585610b7e565b61062f853361062a8487610be7565b610a92565b506001949350505050565b601290565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161059d91859061062a9086610a31565b60035490565b6004546001600160a01b031681565b6001600160a01b0381166000908152602081905260408120546106ac906109e8565b90505b919050565b600254600090806106c857829150506106af565b6106e7816106e160035486610c4490919063ffffffff16565b90610c9d565b9150506106af565b60408051808201909152600481527f78414c4400000000000000000000000000000000000000000000000000000000602082015290565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156107895760405162461bcd60e51b815260040180806020018281038252602481526020018061116a6024913960400191505060405180910390fd5b610798338561062a8487610be7565b5060019392505050565b600061059d338484610b7e565b6004546001600160a01b0316331461080e576040805162461bcd60e51b815260206004820152601b60248201527f58414c443a206f6e6c79207374616b696e6720636f6e74726163740000000000604482015290519081900360640190fd5b6000610819826106b4565b6002549091506108299083610a31565b6002556108368382610d04565b505050565b6004546001600160a01b0316331461089a576040805162461bcd60e51b815260206004820152601b60248201527f58414c443a206f6e6c79207374616b696e6720636f6e74726163740000000000604482015290519081900360640190fd5b60006108a5826106b4565b6002549091506108b59083610be7565b6002556108368382610dec565b6005546001600160a01b03163314610921576040805162461bcd60e51b815260206004820152601660248201527f58414c443a206f6e6c7920696e697469616c697a657200000000000000000000604482015290519081900360640190fd5b6001600160a01b03811661097c576040805162461bcd60e51b815260206004820152601660248201527f58414c443a206e6f74207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600480546001600160a01b039092167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179055600580549091169055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600354600090806109fd5760009150506106af565b6106e7816106e160025486610c4490919063ffffffff16565b6001600160a01b031660009081526020819052604090205490565b600082820183811015610a8b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038316610ad75760405162461bcd60e51b81526004018080602001828103825260238152602001806110526023913960400191505060405180910390fd5b6001600160a01b038216610b1c5760405162461bcd60e51b81526004018080602001828103825260218152602001806110df6021913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610b89826106b4565b9050610b96848483610f14565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600082821115610c3e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082610c53575060006105a1565b82820282848281610c6057fe5b0414610a8b5760405162461bcd60e51b81526004018080602001828103825260218152602001806110756021913960400191505060405180910390fd5b6000808211610cf3576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610cfc57fe5b049392505050565b6001600160a01b038216610d5f576040805162461bcd60e51b815260206004820152601e60248201527f58414c443a206d696e7420746f20746865207a65726f20616464726573730000604482015290519081900360640190fd5b600354610d6c9082610a31565b6003556001600160a01b038216600090815260208190526040902054610d929082610a31565b6001600160a01b0383166000818152602081815260409182902093909355805191825291810183905281517fa336a0cb19174a9c3ff5851ad3dd274df5c9323dbbc6e2177031c7f7c0319d77929181900390910190a15050565b6001600160a01b038216610e47576040805162461bcd60e51b815260206004820181905260248201527f58414c443a206275726e2066726f6d20746865207a65726f2061646472657373604482015290519081900360640190fd5b6001600160a01b03821660009081526020819052604090205480821115610e9f5760405162461bcd60e51b81526004018080602001828103825260218152602001806111246021913960400191505060405180910390fd5b600354610eac9083610be7565b600355610eb98183610be7565b6001600160a01b0384166000818152602081815260409182902093909355805191825291810184905281517ffaddfec5b2541216c9e8d42ec31574199eae6b232c24690ab7f661eb95f5859f929181900390910190a1505050565b6001600160a01b038316610f595760405162461bcd60e51b81526004018080602001828103825260248152602001806111006024913960400191505060405180910390fd5b6001600160a01b038216610f9e5760405162461bcd60e51b81526004018080602001828103825260228152602001806110966022913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205480821115610ff65760405162461bcd60e51b81526004018080602001828103825260258152602001806111456025913960400191505060405180910390fd5b6110008183610be7565b6001600160a01b03808616600090815260208190526040808220939093559085168152205461102f9083610a31565b6001600160a01b0390931660009081526020819052604090209290925550505056fe58414c443a20617070726f76652066726f6d20746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7758414c443a207472616e7366657220746f20746865207a65726f206164647265737358414c443a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636558414c443a20617070726f766520746f20746865207a65726f206164647265737358414c443a207472616e736665722066726f6d20746865207a65726f206164647265737358414c443a206275726e20616d6f756e7420657863656564732062616c616e636558414c443a207472616e7366657220616d6f756e7420657863656564732062616c616e636558414c443a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220df7f6fb3e02bfcfe49bd1a824071bd48939193a44d45fd47b82b4ba7ff6df9e864736f6c63430007060033