0x608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6117b7806100ec6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806391c6196611610104578063c713aa94116100a2578063df1dcaa911610071578063df1dcaa9146103f0578063f04d688f14610403578063f2fde38b1461040c578063fe575a871461041f57600080fd5b8063c713aa9414610348578063cddb3e7b1461035b578063d0bad4b1146103c0578063d5fcc7b6146103dd57600080fd5b8063a8b38205116100de578063a8b3820514610306578063b0aa1e041461030f578063b6b55f2514610322578063bb3d676a1461033557600080fd5b806391c61966146102d7578063979f8d96146102ea57806399a03316146102fd57600080fd5b806363d9df85116101715780637d7366aa1161014b5780637d7366aa1461028a57806389daf799146102aa5780638a6876ad146102bd5780638da5cb5b146102c657600080fd5b806363d9df851461025c578063715018a61461026f57806379ee54f71461027757600080fd5b80632be11ae2116101ad5780632be11ae21461020e57806334df99a1146102165780633ccfd60b1461022957806351ed6a301461023157600080fd5b80630397d458146101d4578063083c6323146101e957806329d0fa3e14610205575b600080fd5b6101e76101e23660046114e0565b610442565b005b6101f2606e5481565b6040519081526020015b60405180910390f35b6101f2606b5481565b6101e761046c565b6101e7610224366004611502565b610477565b6101e76105de565b606554610244906001600160a01b031681565b6040516001600160a01b0390911681526020016101fc565b606654610244906001600160a01b031681565b6101e76107ab565b6101f26102853660046114e0565b6107bd565b6101f26102983660046114e0565b60726020526000908152604090205481565b6101e76102b836600461154f565b6108df565b6101f260675481565b6033546001600160a01b0316610244565b6101e76102e53660046115c4565b61095e565b6101e76102f83660046115fc565b610b56565b6101f260685481565b6101f2606c5481565b6101e761031d366004611619565b610b71565b6101e7610330366004611619565b610b7e565b6101e761034336600461154f565b610cdf565b6101e7610356366004611619565b610d59565b6103986103693660046114e0565b607060205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101fc565b606d546103cd9060ff1681565b60405190151581526020016101fc565b6101e76103eb3660046114e0565b610d66565b6101e76103fe366004611619565b610d90565b6101f2606f5481565b6101e761041a3660046114e0565b610d9d565b6103cd61042d3660046114e0565b60716020526000908152604090205460ff1681565b61044a610e16565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b61047533610e70565b565b600054610100900460ff16158080156104975750600054600160ff909116105b806104b15750303b1580156104b1575060005460ff166001145b6105195760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561053c576000805461ff0019166101001790555b610544611066565b606b849055606580546001600160a01b038089166001600160a01b0319928316179092556066805492881692909116919091179055606c839055606e829055606d805460ff1916600117905580156105d6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b33600090815260706020908152604091829020825160a08101845281548082526001830154938201849052600283015494820194909452600382015460608201526004909101546080820152606c54909291429161063b91611648565b11158015610658575042606c54606f546106559190611648565b11155b6106bf5760405162461bcd60e51b815260206004820152603260248201527f796f7520617265206e6f7420616c6c6f77656420746f207769746864726177206044820152716265666f7265206c6f636b65642054696d6560701b6064820152608401610510565b6000811161070f5760405162461bcd60e51b815260206004820152601d60248201527f576974686472617720616d6f756e742063616e2774206265207a65726f0000006044820152606401610510565b61071761046c565b33600090815260706020526040812081815560018101829055600281018290556003810182905560040181905560688054839290610756908490611660565b909155505060405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a26065546107a7906001600160a01b031633836110da565b5050565b6107b3610e16565b610475600061113d565b6000606854600014156107d257506000919050565b6000606e5443116107ef576069546107ea9043611660565b6107ff565b606954606e546107ff9190611660565b90506000606b54826108119190611677565b9050600060685464e8d4a51000836108299190611677565b6108339190611696565b606a546108409190611648565b6001600160a01b0386166000818152607060209081526040808320815160a08101835281548152600182015481850152600282015481840152600382015460608201526004909101546080820190815294845260729092529091205491518151939450909264e8d4a51000906108b7908690611677565b6108c19190611696565b6108cb9190611660565b6108d59190611648565b9695505050505050565b6108e7610e16565b60005b818110156109595760006071600085858581811061090a5761090a6116b8565b905060200201602081019061091f91906114e0565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610951816116ce565b9150506108ea565b505050565b6066546001600160a01b031633146109c95760405162461bcd60e51b815260206004820152602860248201527f54686973206d6574686f64206973206f6e6c7920666f722070726573616c652060448201526710dbdb9d1c9858dd60c21b6064820152608401610510565b606e544310610a135760405162461bcd60e51b81526020600482015260166024820152751cdd185ada5b99c81a185cc81899595b88195b99195960521b6044820152606401610510565b60008111610a635760405162461bcd60e51b815260206004820152601c60248201527f4465706f73697420616d6f756e742063616e2774206265207a65726f000000006044820152606401610510565b6001600160a01b0382166000908152607060205260409020610a8483610e70565b81816000016000828254610a989190611648565b9091555050606a54815464e8d4a5100091610ab291611677565b610abc9190611696565b600482015542600182015560688054839190600090610adc908490611648565b925050819055508160676000828254610af59190611648565b90915550506040518281526001600160a01b038416907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2606654606554610959916001600160a01b039182169116308561118f565b610b5e610e16565b606d805460ff1916911515919091179055565b610b79610e16565b606f55565b606e544310610bc85760405162461bcd60e51b81526020600482015260166024820152751cdd185ada5b99c81a185cc81899595b88195b99195960521b6044820152606401610510565b60008111610c185760405162461bcd60e51b815260206004820152601c60248201527f4465706f73697420616d6f756e742063616e2774206265207a65726f000000006044820152606401610510565b336000908152607060205260409020610c2f61046c565b81816000016000828254610c439190611648565b9091555050606a54815464e8d4a5100091610c5d91611677565b610c679190611696565b600482015542600182015543600282015560688054839190600090610c8d908490611648565b909155505060405182815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a26065546107a7906001600160a01b031633308561118f565b610ce7610e16565b60005b8181101561095957600160716000858585818110610d0a57610d0a6116b8565b9050602002016020810190610d1f91906114e0565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d51816116ce565b915050610cea565b610d61610e16565b606e55565b610d6e610e16565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b610d98610e16565b606c55565b610da5610e16565b6001600160a01b038116610e0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610510565b610e138161113d565b50565b6033546001600160a01b031633146104755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610510565b6001600160a01b03811660009081526071602052604090205460ff1615610ed95760405162461bcd60e51b815260206004820152601b60248201527f54686973204164647265737320697320426c61636b6c697374656400000000006044820152606401610510565b610ee16111cd565b6001600160a01b03811660009081526070602052604081206004810154606a54825492939264e8d4a5100091610f1691611677565b610f209190611696565b610f2a9190611660565b905080610f3657505050565b80826003016000828254610f4a9190611648565b9091555050606a54825464e8d4a5100091610f6491611677565b610f6e9190611696565b6004830155606d5460ff16611034576001600160a01b03831660009081526072602052604090205415610fda576001600160a01b038316600090815260726020526040902054610fbe9082611648565b6001600160a01b03841660009081526072602052604081205590505b826001600160a01b03167fdaaebb9609cb2f719c59c9d334be287bf4def107ad3dec4a6f90d8abaa94c73c8260405161101591815260200190565b60405180910390a2606554610959906001600160a01b031684836110da565b6001600160a01b0383166000908152607260205260408120805483929061105c908490611648565b9091555050505050565b600054610100900460ff166110d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610510565b6104753361113d565b6040516001600160a01b03831660248201526044810182905261095990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611262565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526111c79085906323b872dd60e01b90608401611106565b50505050565b6068546111da5743606955565b6000606e5443116111f7576069546111f29043611660565b611207565b606954606e546112079190611660565b90506000606b54826112199190611677565b60685490915061122e64e8d4a5100083611677565b6112389190611696565b606a546112459190611648565b606a55606e544311611257574361125b565b606e545b6069555050565b60006112b7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113379092919063ffffffff16565b90508051600014806112d85750808060200190518101906112d891906116e9565b6109595760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610510565b6060611346848460008561134e565b949350505050565b6060824710156113af5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610510565b600080866001600160a01b031685876040516113cb9190611732565b60006040518083038185875af1925050503d8060008114611408576040519150601f19603f3d011682016040523d82523d6000602084013e61140d565b606091505b509150915061141e87838387611429565b979650505050505050565b6060831561149557825161148e576001600160a01b0385163b61148e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610510565b5081611346565b61134683838151156114aa5781518083602001fd5b8060405162461bcd60e51b8152600401610510919061174e565b80356001600160a01b03811681146114db57600080fd5b919050565b6000602082840312156114f257600080fd5b6114fb826114c4565b9392505050565b600080600080600060a0868803121561151a57600080fd5b611523866114c4565b9450611531602087016114c4565b94979496505050506040830135926060810135926080909101359150565b6000806020838503121561156257600080fd5b823567ffffffffffffffff8082111561157a57600080fd5b818501915085601f83011261158e57600080fd5b81358181111561159d57600080fd5b8660208260051b85010111156115b257600080fd5b60209290920196919550909350505050565b600080604083850312156115d757600080fd5b6115e0836114c4565b946020939093013593505050565b8015158114610e1357600080fd5b60006020828403121561160e57600080fd5b81356114fb816115ee565b60006020828403121561162b57600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561165b5761165b611632565b500190565b60008282101561167257611672611632565b500390565b600081600019048311821515161561169157611691611632565b500290565b6000826116b357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006000198214156116e2576116e2611632565b5060010190565b6000602082840312156116fb57600080fd5b81516114fb816115ee565b60005b83811015611721578181015183820152602001611709565b838111156111c75750506000910152565b60008251611744818460208701611706565b9190910192915050565b602081526000825180602084015261176d816040850160208701611706565b601f01601f1916919091016040019291505056fea264697066735822122052b27dc05d1bca856bbbda8ee7f73e8eaab92bab768e5e887bb2c9f252166d2764736f6c63430008090033