0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b1461010b5780638daf1ab5146101265780639bdafcb314610139578063f2fde38b14610159578063f817dff91461016c57600080fd5b80631358716b146100985780631edaacf0146100ad578063715018a6146100e05780637b25772b146100e8575b600080fd5b6100ab6100a6366004610b5f565b61017f565b005b6100cd6100bb366004610b89565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100ab610455565b6100fb6100f6366004610b5f565b610469565b60405190151581526020016100d7565b6000546040516001600160a01b0390911681526020016100d7565b6100fb610134366004610c45565b6104ac565b61014c610147366004610b89565b6104d7565b6040516100d79190610cb2565b6100ab610167366004610cff565b610543565b6100ab61017a366004610b5f565b6105bc565b610187610724565b6001600160a01b0382166101e25760405162461bcd60e51b815260206004820152601b60248201527f56616c696461746f72526f6c6556333a2061646472657373283029000000000060448201526064015b60405180910390fd5b6001600160a01b038216600090815260016020908152604080832084845290915290205460ff166102685760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f72526f6c6556333a20496e76616c69642076616c696461746044820152696f72206164647265737360b01b60648201526084016101d9565b6001600160a01b03821660009081526001602090815260408083208484529091528120805460ff191690555b6000828152600260205260409020548110156103ca57600082815260026020526040902080546001600160a01b0385169190839081106102d6576102d6610d1a565b6000918252602090912001546001600160a01b031614156103b857805b60008381526002602052604090205461030e90600190610d46565b8110156103b257600083815260026020526040902061032e826001610d5d565b8154811061033e5761033e610d1a565b60009182526020808320909101548583526002909152604090912080546001600160a01b03909216918390811061037757610377610d1a565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055806103aa81610d75565b9150506102f3565b506103ca565b806103c281610d75565b915050610294565b5060008181526002602052604090208054806103e8576103e8610d90565b6000828152602090819020600019908301810180546001600160a01b0319169055909101909155604080516001600160a01b03851681529182018390527fed2f3adb2d1e40310812a8081e8d642d8179e5d33198ba6355beaf5639202d3891015b60405180910390a15050565b61045d610724565b610467600061077e565b565b6001600160a01b038216600090815260016020908152604080832084845290915281205460ff16806104a557506000546001600160a01b031633145b9392505050565b8151602083012060009081906104c290846107ce565b90506104ce8186610469565b95945050505050565b60008181526002602090815260409182902080548351818402810184019094528084526060939283018282801561053757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610519575b50505050509050919050565b61054b610724565b6001600160a01b0381166105b05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101d9565b6105b98161077e565b50565b6105c4610724565b6001600160a01b03821661061a5760405162461bcd60e51b815260206004820152601b60248201527f56616c696461746f72526f6c6556333a2061646472657373283029000000000060448201526064016101d9565b6001600160a01b038216600090815260016020908152604080832084845290915290205460ff161561069e5760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f72526f6c6556333a20416c726561647920657869737473206044820152666164647265737360c81b60648201526084016101d9565b6001600160a01b03821660008181526001602081815260408084208685528252808420805460ff191684179055600282528084208054938401815584529281902090910180546001600160a01b03191684179055815192835282018390527fad7462280fd14a412dcafb26c62ff26feb040b1599ad1eb07c8fb248439af1759101610449565b6000546001600160a01b031633146104675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101d9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060006107dd85856107f2565b915091506107ea81610862565b509392505050565b6000808251604114156108295760208301516040840151606085015160001a61081d87828585610a1d565b9450945050505061085b565b8251604014156108535760208301516040840151610848868383610b0a565b93509350505061085b565b506000905060025b9250929050565b600081600481111561087657610876610da6565b141561087f5750565b600181600481111561089357610893610da6565b14156108e15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101d9565b60028160048111156108f5576108f5610da6565b14156109435760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101d9565b600381600481111561095757610957610da6565b14156109b05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016101d9565b60048160048111156109c4576109c4610da6565b14156105b95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016101d9565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610a545750600090506003610b01565b8460ff16601b14158015610a6c57508460ff16601c14155b15610a7d5750600090506004610b01565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ad1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610afa57600060019250925050610b01565b9150600090505b94509492505050565b6000806001600160ff1b03831681610b2760ff86901c601b610d5d565b9050610b3587828885610a1d565b935093505050935093915050565b80356001600160a01b0381168114610b5a57600080fd5b919050565b60008060408385031215610b7257600080fd5b610b7b83610b43565b946020939093013593505050565b600060208284031215610b9b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610bc957600080fd5b813567ffffffffffffffff80821115610be457610be4610ba2565b604051601f8301601f19908116603f01168101908282118183101715610c0c57610c0c610ba2565b81604052838152866020858801011115610c2557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610c5a57600080fd5b83359250602084013567ffffffffffffffff80821115610c7957600080fd5b610c8587838801610bb8565b93506040860135915080821115610c9b57600080fd5b50610ca886828701610bb8565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610cf35783516001600160a01b031683529284019291840191600101610cce565b50909695505050505050565b600060208284031215610d1157600080fd5b6104a582610b43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610d5857610d58610d30565b500390565b60008219821115610d7057610d70610d30565b500190565b6000600019821415610d8957610d89610d30565b5060010190565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea26469706673582212207fccbd6fd1a954d9573bc04dbb2b70bfcc621c14af80eb2bb06d9aeb6a641ed164736f6c634300080a0033