0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6111a68061007e6000396000f3fe6080604052600436106100fe5760003560e01c80637617469011610095578063998cdf8311610064578063998cdf83146102f9578063a6af2dfe14610319578063bb35dcd014610339578063da35a26f14610359578063f2fde38b1461037957600080fd5b80637617469014610277578063772269671461029757806382b12dd7146102b75780638da5cb5b146102db57600080fd5b806352465353116100d157806352465353146101c65780635f355feb1461020757806360eda70a14610227578063715018a61461026257600080fd5b8063087eac561461010357806315e6c108146101385780633f138d4b14610191578063408a60f1146101b3575b600080fd5b34801561010f57600080fd5b5061012361011e366004610f1e565b610399565b60405190151581526020015b60405180910390f35b34801561014457600080fd5b50610179610153366004610f55565b60016020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019d57600080fd5b506101b16101ac366004610f55565b61040d565b005b6101236101c1366004610f81565b61046d565b3480156101d257600080fd5b506101796101e1366004610f55565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b34801561021357600080fd5b506101b1610222366004610fb9565b610689565b34801561023357600080fd5b50610123610242366004610f1e565b600360209081526000928352604080842090915290825290205460ff1681565b34801561026e57600080fd5b506101b1610757565b34801561028357600080fd5b50610123610292366004610ffb565b61076b565b3480156102a357600080fd5b506101b16102b236600461104d565b61090e565b3480156102c357600080fd5b506102cd60055481565b60405190815260200161012f565b3480156102e757600080fd5b506000546001600160a01b0316610179565b34801561030557600080fd5b506101b161031436600461106a565b610938565b34801561032557600080fd5b50600454610179906001600160a01b031681565b34801561034557600080fd5b506101b161035436600461106a565b610985565b34801561036557600080fd5b506101b1610374366004611083565b6109ba565b34801561038557600080fd5b506101b161039436600461104d565b610b07565b6004546000906001600160a01b0316336001600160a01b031614806103c857506000546001600160a01b031633145b6103ed5760405162461bcd60e51b81526004016103e4906110b3565b60405180910390fd5b506000908152600360209081526040808320938352929052205460ff1690565b610415610b80565b6001600160a01b03821661045557604051339082156108fc029083906000818181858888f19350505050158015610450573d6000803e3d6000fd5b505050565b6104696001600160a01b0383163383610bda565b5050565b6000333b156104c85760405162461bcd60e51b815260206004820152602160248201527f636f6e7472616374206973206e6f7420616c6c6f77656420746f2062726964676044820152606560f81b60648201526084016103e4565b3332146105175760405162461bcd60e51b815260206004820152601c60248201527f6e6f2070726f787920636f6e747261637420697320616c6c6f7765640000000060448201526064016103e4565b6001600160a01b038084166000908152600160209081526040808320888452909152902054168061058a5760405162461bcd60e51b815260206004820152601d60248201527f6e6f20627269646765207061697220666f72207468697320746f6b656e00000060448201526064016103e4565b6005543410156105d45760405162461bcd60e51b81526020600482015260156024820152740c4e4d2c8ceca40cccaca40dcdee840cadcdeeaced605b1b60448201526064016103e4565b6105e96001600160a01b038516333086610c3d565b341561062a576004546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610628573d6000803e3d6000fd5b505b60408051868152602081018590523481830152905133916001600160a01b0384811692908816917f9154b734266899fdc69612b76df941f01cded9d07eb4ea088d8d5d04fc1f03df919081900360600190a460019150505b9392505050565b610691610b80565b6001600160a01b03828116600090815260016020908152604080832087845290915290205416156106fd5760405162461bcd60e51b8152602060048201526016602482015275323ab83634b1b0ba32b210313934b233b2903830b4b960511b60448201526064016103e4565b6001600160a01b03918216600081815260016020908152604080832087845282528083208054969095166001600160a01b031996871681179095559382526002815283822095825294909452922080549091169091179055565b61075f610b80565b6107696000610c7b565b565b6004546000906001600160a01b0316336001600160a01b0316146107a15760405162461bcd60e51b81526004016103e4906110b3565b600085815260036020908152604080832089845290915290205460ff16156107ff5760405162461bcd60e51b815260206004820152601160248201527074782066696c6c656420616c726561647960781b60448201526064016103e4565b6001600160a01b03808516600090815260026020908152604080832089845290915290205416806108725760405162461bcd60e51b815260206004820152601d60248201527f6e6f20627269646765207061697220666f72207468697320746f6b656e00000060448201526064016103e4565b60008681526003602090815260408083208a84529091529020805460ff191660011790556108aa6001600160a01b0382168585610bda565b836001600160a01b031687866001600160a01b03167fde17ab5fe5853c0e5cb8081fbc43f7546367859023b87c14187afaf67a1c8fd889876040516108f9929190918252602082015260400190565b60405180910390a45060019695505050505050565b610916610b80565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316336001600160a01b0316148061096457506000546001600160a01b031633145b6109805760405162461bcd60e51b81526004016103e4906110b3565b600555565b61098d610b80565b604051339082156108fc029083906000818181858888f19350505050158015610469573d6000803e3d6000fd5b6109c2610b80565b600054600160a81b900460ff16158080156109ea57506000546001600160a01b90910460ff16105b80610a0b5750303b158015610a0b5750600054600160a01b900460ff166001145b610a6e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e4565b6000805460ff60a01b1916600160a01b1790558015610a9b576000805460ff60a81b1916600160a81b1790555b6005839055600480546001600160a01b0319166001600160a01b0384161790558015610450576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610b0f610b80565b6001600160a01b038116610b745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103e4565b610b7d81610c7b565b50565b6000546001600160a01b031633146107695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103e4565b6040516001600160a01b03831660248201526044810182905261045090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ccb565b6040516001600160a01b0380851660248301528316604482015260648101829052610c759085906323b872dd60e01b90608401610c06565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610d20826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610d9d9092919063ffffffff16565b8051909150156104505780806020019051810190610d3e91906110db565b6104505760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103e4565b6060610dac8484600085610db4565b949350505050565b606082471015610e155760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103e4565b6001600160a01b0385163b610e6c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e4565b600080866001600160a01b03168587604051610e889190611121565b60006040518083038185875af1925050503d8060008114610ec5576040519150601f19603f3d011682016040523d82523d6000602084013e610eca565b606091505b5091509150610eda828286610ee5565b979650505050505050565b60608315610ef4575081610682565b825115610f045782518084602001fd5b8160405162461bcd60e51b81526004016103e4919061113d565b60008060408385031215610f3157600080fd5b50508035926020909101359150565b6001600160a01b0381168114610b7d57600080fd5b60008060408385031215610f6857600080fd5b8235610f7381610f40565b946020939093013593505050565b600080600060608486031215610f9657600080fd5b833592506020840135610fa881610f40565b929592945050506040919091013590565b600080600060608486031215610fce57600080fd5b833592506020840135610fe081610f40565b91506040840135610ff081610f40565b809150509250925092565b600080600080600060a0868803121561101357600080fd5b8535945060208601359350604086013561102c81610f40565b9250606086013561103c81610f40565b949793965091946080013592915050565b60006020828403121561105f57600080fd5b813561068281610f40565b60006020828403121561107c57600080fd5b5035919050565b6000806040838503121561109657600080fd5b8235915060208301356110a881610f40565b809150509250929050565b6020808252600e908201526d4163636573732064656e6965642160901b604082015260600190565b6000602082840312156110ed57600080fd5b8151801515811461068257600080fd5b60005b83811015611118578181015183820152602001611100565b50506000910152565b600082516111338184602087016110fd565b9190910192915050565b602081526000825180602084015261115c8160408501602087016110fd565b601f01601f1916919091016040019291505056fea26469706673582212201b3b1a14ef57d206f00fdc3710c934434ce092525a6c7ade3c123ec1a2ff4dba64736f6c63430008110033