0x6080604052600436106103545760003560e01c80637e7e8eec116101c6578063c0246668116100f7578063dd62ed3e11610095578063e884f2601161006f578063e884f260146109d5578063f2fde38b146109ea578063f8b45b0514610a0a578063faa0a26414610a2057600080fd5b8063dd62ed3e14610964578063df778d26146109aa578063e2f45605146109bf57600080fd5b8063c8c8ebe4116100d1578063c8c8ebe4146108e0578063c9567bf9146108f6578063d257b34f1461090b578063d28d88521461092b57600080fd5b8063c02466681461087e578063c18bc1951461089e578063c876d0b9146108be57600080fd5b8063a457c2d711610164578063b09f12661161013e578063b09f1266146107ee578063b9f2486f1461081f578063bbc0c7421461083f578063bde54e331461085e57600080fd5b8063a457c2d714610798578063a4c82a00146107b8578063a9059cbb146107ce57600080fd5b80638da5cb5b116101a05780638da5cb5b14610716578063924de9b71461073457806395d89b41146107545780639ec22c0e1461078257600080fd5b80637e7e8eec146106cc5780638203f5fe146106e15780638cbca50c146106f657600080fd5b806349bd5a5e116102a057806370a082311161023e578063751039fc11610218578063751039fc14610657578063756af45f1461066c5780637571336a1461068c5780637dbe8d62146106ac57600080fd5b806370a0823114610602578063715018a614610622578063730c18881461063757600080fd5b80635f47ad291161027a5780635f47ad291461058d57806368092bd9146105a25780636dc8624c146105c25780636ddd1713146105e257600080fd5b806349bd5a5e1461051a5780634a62bb651461053a5780634fbee1931461055457600080fd5b806323b872dd1161030d5780632e82f1a0116102e75780632e82f1a0146104a9578063313ce567146104c357806332424aa3146104e557806339509351146104fa57600080fd5b806323b872dd1461044557806327c8f835146104655780632c3e486c1461049357600080fd5b806306fdde0314610360578063095ea7b3146103a857806318160ddd146103d8578063184c16c5146103f7578063199ffc721461040d578063203e727e1461042357600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5060408051808201909152600d81526c476f7267692046696e616e636560981b60208201525b60405161039f9190613156565b60405180910390f35b3480156103b457600080fd5b506103c86103c33660046131c0565b610a35565b604051901515815260200161039f565b3480156103e457600080fd5b506002545b60405190815260200161039f565b34801561040357600080fd5b506103e9601c5481565b34801561041957600080fd5b506103e960185481565b34801561042f57600080fd5b5061044361043e3660046131ec565b610a4c565b005b34801561045157600080fd5b506103c8610460366004613205565b610b2a565b34801561047157600080fd5b5061047b61dead81565b6040516001600160a01b03909116815260200161039f565b34801561049f57600080fd5b506103e9601a5481565b3480156104b557600080fd5b506019546103c89060ff1681565b3480156104cf57600080fd5b5060095b60405160ff909116815260200161039f565b3480156104f157600080fd5b506104d3600981565b34801561050657600080fd5b506103c86105153660046131c0565b610b93565b34801561052657600080fd5b5060105461047b906001600160a01b031681565b34801561054657600080fd5b50601e546103c89060ff1681565b34801561056057600080fd5b506103c861056f366004613246565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561059957600080fd5b50610443610bc9565b3480156105ae57600080fd5b506104436105bd366004613273565b610c12565b3480156105ce57600080fd5b506104436105dd366004613273565b610c67565b3480156105ee57600080fd5b50601e546103c89062010000900460ff1681565b34801561060e57600080fd5b506103e961061d366004613246565b610d19565b34801561062e57600080fd5b50610443610d34565b34801561064357600080fd5b506104436106523660046132a8565b610da8565b34801561066357600080fd5b506103c8610ed1565b34801561067857600080fd5b50610443610687366004613246565b610f0f565b34801561069857600080fd5b506104436106a7366004613273565b610f7b565b3480156106b857600080fd5b506103c86106c73660046131ec565b610fcf565b3480156106d857600080fd5b506016546103e9565b3480156106ed57600080fd5b506104436110d7565b34801561070257600080fd5b506104436107113660046132dd565b61136d565b34801561072257600080fd5b506006546001600160a01b031661047b565b34801561074057600080fd5b5061044361074f366004613316565b6113f4565b34801561076057600080fd5b50604080518082019091526005815264474f52474960d81b6020820152610392565b34801561078e57600080fd5b506103e9601d5481565b3480156107a457600080fd5b506103c86107b33660046131c0565b61143a565b3480156107c457600080fd5b506103e9601b5481565b3480156107da57600080fd5b506103c86107e93660046131c0565b611489565b3480156107fa57600080fd5b5061039260405180604001604052806005815260200164474f52474960d81b81525081565b34801561082b57600080fd5b50600f5461047b906001600160a01b031681565b34801561084b57600080fd5b50601e546103c890610100900460ff1681565b34801561086a57600080fd5b50610443610879366004613342565b611496565b34801561088a57600080fd5b50610443610899366004613273565b6115ed565b3480156108aa57600080fd5b506104436108b93660046131ec565b611676565b3480156108ca57600080fd5b50601e546103c890640100000000900460ff1681565b3480156108ec57600080fd5b506103e960115481565b34801561090257600080fd5b5061044361173f565b34801561091757600080fd5b506103c86109263660046131ec565b611798565b34801561093757600080fd5b506103926040518060400160405280600d81526020016c476f7267692046696e616e636560981b81525081565b34801561097057600080fd5b506103e961097f3660046132dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109b657600080fd5b506103c861185d565b3480156109cb57600080fd5b506103e960125481565b3480156109e157600080fd5b506103c861191a565b3480156109f657600080fd5b50610443610a05366004613246565b61195b565b348015610a1657600080fd5b506103e960135481565b348015610a2c57600080fd5b50610443611a46565b6000610a42338484611b51565b5060015b92915050565b6006546001600160a01b03163314610a7f5760405162461bcd60e51b8152600401610a7690613396565b60405180910390fd5b633b9aca006103e8610a9060025490565b610a9b9060016133e1565b610aa59190613400565b610aaf9190613400565b811015610b165760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a76565b610b2481633b9aca006133e1565b60115550565b6000610b37848484611c76565b610b898433610b8485604051806060016040528060288152602001613632602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906123bf565b611b51565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a42918590610b849086611aeb565b6006546001600160a01b03163314610bf35760405162461bcd60e51b8152600401610a7690613396565b6000610bfe30610d19565b90508015610c0f57610c0f816123f9565b50565b6006546001600160a01b03163314610c3c5760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314610c915760405162461bcd60e51b8152600401610a7690613396565b6010546001600160a01b0383811691161415610d0b5760405162461bcd60e51b815260206004820152603360248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152725f6469616d6f6e6448616e64486f6c6465727360681b6064820152608401610a76565b610d158282612562565b5050565b6001600160a01b031660009081526020819052604090205490565b6006546001600160a01b03163314610d5e5760405162461bcd60e51b8152600401610a7690613396565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b03163314610dd25760405162461bcd60e51b8152600401610a7690613396565b610258831015610e405760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610a76565b6103e88211158015610e50575060015b610eb55760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610a76565b601a929092556018556019805460ff1916911515919091179055565b6006546000906001600160a01b03163314610efe5760405162461bcd60e51b8152600401610a7690613396565b50601e805460ff1916905560015b90565b6006546001600160a01b03163314610f395760405162461bcd60e51b8152600401610a7690613396565b478015610d15576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f76573d6000803e3d6000fd5b505050565b6006546001600160a01b03163314610fa55760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6006546000906001600160a01b03163314610ffc5760405162461bcd60e51b8152600401610a7690613396565b601c54601d5461100c9190613422565b421161105a5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610a76565b6103e88211156110bf5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610a76565b42601d556110cc826125b6565b50600190505b919050565b6006546001600160a01b031633146111015760405162461bcd60e51b8152600401610a7690613396565b601e54610100900460ff1661136b57600f54611127906001600160a01b03166001610f7b565b600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117557600080fd5b505afa158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad919061343a565b6001600160a01b031663c9c6539630600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120a57600080fd5b505afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611242919061343a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c2919061343a565b601080546001600160a01b0319166001600160a01b03928316179055600f546112f091309116600019611b51565b6113196113056006546001600160a01b031690565b600f546001600160a01b0316600019611b51565b601054611330906001600160a01b03166001610f7b565b601054611347906001600160a01b03166001612562565b601054600380546001600160a01b0319166001600160a01b03909216919091179055565b565b6006546001600160a01b031633146113975760405162461bcd60e51b8152600401610a7690613396565b600880546001600160a01b038085166001600160a01b03199283161790925560078054928416929091169190911790556040517f8e648f036e965ad2abd304af24cb6de1e1f9676c8ddb5726d5800f6537e6c84890600090a15050565b6006546001600160a01b0316331461141e5760405162461bcd60e51b8152600401610a7690613396565b601e8054911515620100000262ff000019909216919091179055565b6000610a423384610b848560405180606001604052806025815260200161365a602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906123bf565b6000610a42338484611c76565b6006546001600160a01b031633146114c05760405162461bcd60e51b8152600401610a7690613396565b801561154457600a805460ff8481166201000090810262ff00001988841661010090810261ffff19909616858c161795909517908116821795869055918504831694611516949004831692908116911617613457565b6115209190613457565b600a805460ff9290921663010000000263ff000000199092169190911790556115be565b600b805460ff8481166201000090810262ff00001988841661010090810261ffff19909616858c161795909517908116821795869055918504831694611594949004831692908116911617613457565b61159e9190613457565b600b805460ff9290921663010000000263ff000000199092169190911790555b6040517f4f0f795c210a77feaf05d2511acfd90b143b0eecd0deb58f179262078a5480d790600090a150505050565b6006546001600160a01b031633146116175760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b031633146116a05760405162461bcd60e51b8152600401610a7690613396565b633b9aca006103e86116b160025490565b6116bc9060056133e1565b6116c69190613400565b6116d09190613400565b81101561172b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a76565b61173981633b9aca006133e1565b60135550565b6006546001600160a01b031633146117695760405162461bcd60e51b8152600401610a7690613396565b601e54610100900460ff1661136b57601e805462ffffff19166201010117905542601b81905543601455601555565b6006546000906001600160a01b031633146117c55760405162461bcd60e51b8152600401610a7690613396565b620186a06117d260025490565b6117dd9060016133e1565b6117e79190613400565b8210156118545760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a76565b50601255600190565b6006546000906001600160a01b0316331461188a5760405162461bcd60e51b8152600401610a7690613396565b611892612705565b156119145760006118a230610d19565b90508015611912576118b3816123f9565b6007546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611900576040519150601f19603f3d011682016040523d82523d6000602084013e611905565b606091505b50909350610f0c92505050565b505b50600190565b6006546000906001600160a01b031633146119475760405162461bcd60e51b8152600401610a7690613396565b50601e805464ff0000000019169055600190565b6006546001600160a01b031633146119855760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b0381166119ea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a76565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611a705760405162461bcd60e51b8152600401610a7690613396565b601e546301000000900460ff1615611aca5760405162461bcd60e51b815260206004820152601c60248201527f796f752063616e74206275726e206d6f7265207468616e2074686973000000006044820152606401610a76565b611ad56107d06125b6565b50601e805463ff00000019166301000000179055565b600080611af88385613422565b905083811015611b4a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a76565b9392505050565b6001600160a01b038316611bb35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a76565b6001600160a01b038216611c145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a76565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c9c5760405162461bcd60e51b8152600401610a769061347c565b6001600160a01b038216611cc25760405162461bcd60e51b8152600401610a76906134c1565b6001600160a01b03831660009081526021602052604090205460ff161580611d0357506001600160a01b03821660009081526021602052604090205460ff16155b611d425760405162461bcd60e51b815260206004820152601060248201526f2cb7ba9030b932903634b6b4ba32b21760811b6044820152606401610a76565b80611d5357610f76838360006127a2565b6001600160a01b0383166000908152601f602052604090205460ff16158015611d9557506001600160a01b0382166000908152601f602052604090205460ff16155b15611dc1576000611da78260646128ab565b9050611db384826128ed565b611dbd8183613504565b9150505b601e5460ff1615612242576006546001600160a01b03848116911614801590611df857506006546001600160a01b03838116911614155b8015611e0c57506001600160a01b03821615155b8015611e2357506001600160a01b03821661dead14155b8015611e395750601054600160a01b900460ff16155b1561224257601e54610100900460ff16611ec6576001600160a01b0383166000908152601f602052604090205460ff1680611e8c57506001600160a01b0382166000908152601f602052604090205460ff165b611ec65760405162461bcd60e51b815260206004820152600b60248201526a77656e206c61756e63683f60a81b6044820152606401610a76565b6015544290611ed6906078611aeb565b1115612242576001600160a01b03831660009081526022602052604090205460ff168015611f1c57506001600160a01b038216600090815260208052604090205460ff16155b1561211357601154811115611f915760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a76565b601354611f9d83610d19565b611fa79083613422565b1115611feb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a76565b436014546001611ffb9190613422565b10612024576001600160a01b0382166000908152602160205260409020805460ff191660011790555b6001600160a01b03821660009081526023602052604090205415801561204e575060175460165411155b801561207357506001600160a01b03821660009081526021602052604090205460ff16155b1561210e5761208e606461208883600a6129f8565b906128ab565b6001600160a01b038316600090815260236020526040812091825542600192830155601680549091906120c2908490613422565b9091555050601654604080516001600160a01b038516815260208101929092527f81447a387ab4a6776ba60c0f08c7a3c1b74303d763855331e097d65069f0453d910160405180910390a15b612242565b6001600160a01b03821660009081526022602052604090205460ff16801561215357506001600160a01b038316600090815260208052604090205460ff16155b156121c95760115481111561210e5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a76565b6001600160a01b038216600090815260208052604090205460ff16612242576013546121f483610d19565b6121fe9083613422565b11156122425760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a76565b600061224d30610d19565b905060125481101580156122695750601e5462010000900460ff165b801561227f5750601054600160a01b900460ff16155b80156122a457506001600160a01b03841660009081526022602052604090205460ff16155b80156122c957506001600160a01b0384166000908152601f602052604090205460ff16155b80156122ee57506001600160a01b0383166000908152601f602052604090205460ff16155b1561231c576010805460ff60a01b1916600160a01b17905561230e612a77565b6010805460ff60a01b191690555b601054600160a01b900460ff1615801561234e57506001600160a01b03831660009081526022602052604090205460ff165b801561235c575060195460ff165b80156123775750601a54601b546123739190613422565b4210155b801561239c57506001600160a01b0384166000908152601f602052604090205460ff16155b156123ae576123ac6018546125b6565b505b6123b9848484612ca1565b50505050565b600081848411156123e35760405162461bcd60e51b8152600401610a769190613156565b5060006123f08486613504565b95945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242e5761242e61351b565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561248257600080fd5b505afa158015612496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ba919061343a565b816001815181106124cd576124cd61351b565b6001600160a01b039283166020918202929092010152600f546124f39130911684611b51565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061252c908590600090869030904290600401613531565b600060405180830381600087803b15801561254657600080fd5b505af115801561255a573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917f2e32bfa5e95beba54c8bef3e262f937349362eda402138a868bf523c7846aa9a91a35050565b42601b556010546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a082319060240160206040518083038186803b15801561260257600080fd5b505afa158015612616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263a91906135a2565b9050600061264e61271061208884876129f8565b9050801561266f5760105461266f906001600160a01b031661dead836127a2565b6010546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506040517f9efa406b2525be23eb13ab31c0a0c36c19f072f7bfa678e03a12a5f93233b4b0925060009150a1506001949350505050565b600354600090612733906001600160a01b031630600161272483610d19565b61272e9190613504565b611c76565b600360009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561278357600080fd5b505af1158015612797573d6000803e3d6000fd5b505050506001905090565b6001600160a01b0383166127c85760405162461bcd60e51b8152600401610a769061347c565b6001600160a01b0382166127ee5760405162461bcd60e51b8152600401610a76906134c1565b61282b8160405180606001604052806026815260200161360c602691396001600160a01b03861660009081526020819052604090205491906123bf565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461285a9082611aeb565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c69565b6000611b4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613009565b6001600160a01b03821661294d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a76565b61298a816040518060600160405280602281526020016135ea602291396001600160a01b03851660009081526020819052604090205491906123bf565b6001600160a01b0383166000908152602081905260409020556002546129b09082613037565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600082612a0757506000610a46565b6000612a1383856133e1565b905082612a208583613400565b14611b4a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a76565b6000612a8230610d19565b600e54600c54600d54929350600092612a9b9190613422565b612aa59190613422565b90506000821580612ab4575081155b15612abe57505050565b601254831115612ace5760125492505b6000600283600c6001015486612ae491906133e1565b612aee9190613400565b612af89190613400565b90506000612b068583613037565b905047612b12826123f9565b6000612b1e4783613037565b90506000612b3e87612088600c60000154856129f890919063ffffffff16565b90506000612b5e88612088600c60020154866129f890919063ffffffff16565b9050600081612b6d8486613504565b612b779190613504565b6000600d819055600c819055600e8190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612bd4576040519150601f19603f3d011682016040523d82523d6000602084013e612bd9565b606091505b50909850508615801590612bed5750600081115b15612c4057612bfc8782613079565b600d54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b50505050505050505050505050565b6010546001600160a01b0384166000908152601f602052604090205460ff600160a01b909204821615911680612cef57506001600160a01b0383166000908152601f602052604090205460ff165b15612cf8575060005b60008115612ff7576001600160a01b03841660009081526022602052604090205460ff168015612d335750600b546301000000900460ff1615155b15612ec057600b5460155460009160ff80821692610100830482169262010000810483169263010000009091041690612d6e9061012c611aeb565b421015612d8d57600b805463ffffffff19166319050a0a179055600194505b600b54612dac90606490612088908b906301000000900460ff166129f8565b600b5490965060ff63010000008204811691612dcf9161010090910416886133e1565b612dd99190613400565b600d8054600090612deb908490613422565b9091555050600b5460ff63010000008204811691612e11916201000090910416886133e1565b612e1b9190613400565b600e8054600090612e2d908490613422565b9091555050600b5460ff63010000008204811691612e4c9116886133e1565b612e569190613400565b600c8054600090612e68908490613422565b90915550508415612eb657600b805460ff86811661ffff1990921691909117610100868316021763ffff00001916620100008583160263ff0000001916176301000000918416919091021790555b5050505050612fd9565b6001600160a01b03851660009081526022602052604090205460ff168015612ef35750600a546301000000900460ff1615155b15612fd957600a54612f17906064906120889086906301000000900460ff166129f8565b600a5490915060ff63010000008204811691612f3a9161010090910416836133e1565b612f449190613400565b600d8054600090612f56908490613422565b9091555050600a5460ff63010000008204811691612f7c916201000090910416836133e1565b612f869190613400565b600e8054600090612f98908490613422565b9091555050600a5460ff63010000008204811691612fb79116836133e1565b612fc19190613400565b600c8054600090612fd3908490613422565b90915550505b8015612fea57612fea8530836127a2565b612ff48184613504565b92505b6130028585856127a2565b5050505050565b6000818361302a5760405162461bcd60e51b8152600401610a769190613156565b5060006123f08486613400565b6000611b4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123bf565b600f546130919030906001600160a01b031684611b51565b600f546001600160a01b031663f305d7198230856000806130ba6006546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561311d57600080fd5b505af1158015613131573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061300291906135bb565b600060208083528351808285015260005b8181101561318357858101830151858201604001528201613167565b81811115613195576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610c0f57600080fd5b600080604083850312156131d357600080fd5b82356131de816131ab565b946020939093013593505050565b6000602082840312156131fe57600080fd5b5035919050565b60008060006060848603121561321a57600080fd5b8335613225816131ab565b92506020840135613235816131ab565b929592945050506040919091013590565b60006020828403121561325857600080fd5b8135611b4a816131ab565b803580151581146110d257600080fd5b6000806040838503121561328657600080fd5b8235613291816131ab565b915061329f60208401613263565b90509250929050565b6000806000606084860312156132bd57600080fd5b83359250602084013591506132d460408501613263565b90509250925092565b600080604083850312156132f057600080fd5b82356132fb816131ab565b9150602083013561330b816131ab565b809150509250929050565b60006020828403121561332857600080fd5b611b4a82613263565b803560ff811681146110d257600080fd5b6000806000806080858703121561335857600080fd5b61336185613331565b935061336f60208601613331565b925061337d60408601613331565b915061338b60608601613263565b905092959194509250565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156133fb576133fb6133cb565b500290565b60008261341d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613435576134356133cb565b500190565b60006020828403121561344c57600080fd5b8151611b4a816131ab565b600060ff821660ff84168060ff03821115613474576134746133cb565b019392505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015613516576135166133cb565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135815784516001600160a01b03168352938301939183019160010161355c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602082840312156135b457600080fd5b5051919050565b6000806000606084860312156135d057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220782a1a2cd73d75e25686c133e5b44b4f1e1166d0a9afb05f478a51f7c3801f1764736f6c63430008090033
0x608060405260196018819055805460ff19166001179055610e10601a55610708601c55601e805464010000000164ffffffffff199091161790553480156200004657600080fd5b50600680546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35069152d02c7e14af68000006064620000a4826002620005fc565b620000b091906200061e565b6011556064620000c2826003620005fc565b620000ce91906200061e565b601355612710620000e182600f620005fc565b620000ed91906200061e565b601255600780546001600160a01b031990811673a5cfd28a3faef4dd327cb49f77357d66cea019681790915560088054821673f5a1d302b8df3b906425c1dc149ce9a8441b15b917905560098054909116730755173bf51252c82c2c353c4de755fcff0fdc341790556032601755600a80546202030562ffffff19909116179081905562010000810460ff90811691620001909161010090910416600562000641565b6200019c919062000641565b600a805463ff0000001916630100000060ff93841602179055600b805462ffffff1916620203051790819055620100008104821691620001e491610100900416600562000641565b620001f0919062000641565b600b805460ff9290921663010000000263ff0000001990921691909117905546600114806200021f5750466005145b156200025157600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002c6565b46603814156200028757600f80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002c6565b60405162461bcd60e51b815260206004820152600f60248201526e696e76616c696420636861696e202160881b60448201526064015b60405180910390fd5b620002e5620002dd6006546001600160a01b031690565b600162000361565b620002f230600162000361565b6200030161dead600162000361565b62000320620003186006546001600160a01b031690565b60016200040b565b6200032d3060016200040b565b6200033c61dead60016200040b565b6200035a620003536006546001600160a01b031690565b8262000480565b5062000684565b6006546001600160a01b03163314620003ac5760405162461bcd60e51b8152602060048201819052602482015260008051602062003d488339815191526044820152606401620002bd565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b03163314620004565760405162461bcd60e51b8152602060048201819052602482015260008051602062003d488339815191526044820152606401620002bd565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6001600160a01b038216620004d85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002bd565b620004f4816002546200057c60201b62001aeb1790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200052791839062001aeb6200057c821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000806200058b838562000669565b905083811015620005df5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620002bd565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620006195762000619620005e6565b500290565b6000826200063c57634e487b7160e01b600052601260045260246000fd5b500490565b600060ff821660ff84168060ff03821115620006615762000661620005e6565b019392505050565b600082198211156200067f576200067f620005e6565b500190565b6136b480620006946000396000f3fe6080604052600436106103545760003560e01c80637e7e8eec116101c6578063c0246668116100f7578063dd62ed3e11610095578063e884f2601161006f578063e884f260146109d5578063f2fde38b146109ea578063f8b45b0514610a0a578063faa0a26414610a2057600080fd5b8063dd62ed3e14610964578063df778d26146109aa578063e2f45605146109bf57600080fd5b8063c8c8ebe4116100d1578063c8c8ebe4146108e0578063c9567bf9146108f6578063d257b34f1461090b578063d28d88521461092b57600080fd5b8063c02466681461087e578063c18bc1951461089e578063c876d0b9146108be57600080fd5b8063a457c2d711610164578063b09f12661161013e578063b09f1266146107ee578063b9f2486f1461081f578063bbc0c7421461083f578063bde54e331461085e57600080fd5b8063a457c2d714610798578063a4c82a00146107b8578063a9059cbb146107ce57600080fd5b80638da5cb5b116101a05780638da5cb5b14610716578063924de9b71461073457806395d89b41146107545780639ec22c0e1461078257600080fd5b80637e7e8eec146106cc5780638203f5fe146106e15780638cbca50c146106f657600080fd5b806349bd5a5e116102a057806370a082311161023e578063751039fc11610218578063751039fc14610657578063756af45f1461066c5780637571336a1461068c5780637dbe8d62146106ac57600080fd5b806370a0823114610602578063715018a614610622578063730c18881461063757600080fd5b80635f47ad291161027a5780635f47ad291461058d57806368092bd9146105a25780636dc8624c146105c25780636ddd1713146105e257600080fd5b806349bd5a5e1461051a5780634a62bb651461053a5780634fbee1931461055457600080fd5b806323b872dd1161030d5780632e82f1a0116102e75780632e82f1a0146104a9578063313ce567146104c357806332424aa3146104e557806339509351146104fa57600080fd5b806323b872dd1461044557806327c8f835146104655780632c3e486c1461049357600080fd5b806306fdde0314610360578063095ea7b3146103a857806318160ddd146103d8578063184c16c5146103f7578063199ffc721461040d578063203e727e1461042357600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5060408051808201909152600d81526c476f7267692046696e616e636560981b60208201525b60405161039f9190613156565b60405180910390f35b3480156103b457600080fd5b506103c86103c33660046131c0565b610a35565b604051901515815260200161039f565b3480156103e457600080fd5b506002545b60405190815260200161039f565b34801561040357600080fd5b506103e9601c5481565b34801561041957600080fd5b506103e960185481565b34801561042f57600080fd5b5061044361043e3660046131ec565b610a4c565b005b34801561045157600080fd5b506103c8610460366004613205565b610b2a565b34801561047157600080fd5b5061047b61dead81565b6040516001600160a01b03909116815260200161039f565b34801561049f57600080fd5b506103e9601a5481565b3480156104b557600080fd5b506019546103c89060ff1681565b3480156104cf57600080fd5b5060095b60405160ff909116815260200161039f565b3480156104f157600080fd5b506104d3600981565b34801561050657600080fd5b506103c86105153660046131c0565b610b93565b34801561052657600080fd5b5060105461047b906001600160a01b031681565b34801561054657600080fd5b50601e546103c89060ff1681565b34801561056057600080fd5b506103c861056f366004613246565b6001600160a01b03166000908152601f602052604090205460ff1690565b34801561059957600080fd5b50610443610bc9565b3480156105ae57600080fd5b506104436105bd366004613273565b610c12565b3480156105ce57600080fd5b506104436105dd366004613273565b610c67565b3480156105ee57600080fd5b50601e546103c89062010000900460ff1681565b34801561060e57600080fd5b506103e961061d366004613246565b610d19565b34801561062e57600080fd5b50610443610d34565b34801561064357600080fd5b506104436106523660046132a8565b610da8565b34801561066357600080fd5b506103c8610ed1565b34801561067857600080fd5b50610443610687366004613246565b610f0f565b34801561069857600080fd5b506104436106a7366004613273565b610f7b565b3480156106b857600080fd5b506103c86106c73660046131ec565b610fcf565b3480156106d857600080fd5b506016546103e9565b3480156106ed57600080fd5b506104436110d7565b34801561070257600080fd5b506104436107113660046132dd565b61136d565b34801561072257600080fd5b506006546001600160a01b031661047b565b34801561074057600080fd5b5061044361074f366004613316565b6113f4565b34801561076057600080fd5b50604080518082019091526005815264474f52474960d81b6020820152610392565b34801561078e57600080fd5b506103e9601d5481565b3480156107a457600080fd5b506103c86107b33660046131c0565b61143a565b3480156107c457600080fd5b506103e9601b5481565b3480156107da57600080fd5b506103c86107e93660046131c0565b611489565b3480156107fa57600080fd5b5061039260405180604001604052806005815260200164474f52474960d81b81525081565b34801561082b57600080fd5b50600f5461047b906001600160a01b031681565b34801561084b57600080fd5b50601e546103c890610100900460ff1681565b34801561086a57600080fd5b50610443610879366004613342565b611496565b34801561088a57600080fd5b50610443610899366004613273565b6115ed565b3480156108aa57600080fd5b506104436108b93660046131ec565b611676565b3480156108ca57600080fd5b50601e546103c890640100000000900460ff1681565b3480156108ec57600080fd5b506103e960115481565b34801561090257600080fd5b5061044361173f565b34801561091757600080fd5b506103c86109263660046131ec565b611798565b34801561093757600080fd5b506103926040518060400160405280600d81526020016c476f7267692046696e616e636560981b81525081565b34801561097057600080fd5b506103e961097f3660046132dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156109b657600080fd5b506103c861185d565b3480156109cb57600080fd5b506103e960125481565b3480156109e157600080fd5b506103c861191a565b3480156109f657600080fd5b50610443610a05366004613246565b61195b565b348015610a1657600080fd5b506103e960135481565b348015610a2c57600080fd5b50610443611a46565b6000610a42338484611b51565b5060015b92915050565b6006546001600160a01b03163314610a7f5760405162461bcd60e51b8152600401610a7690613396565b60405180910390fd5b633b9aca006103e8610a9060025490565b610a9b9060016133e1565b610aa59190613400565b610aaf9190613400565b811015610b165760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610a76565b610b2481633b9aca006133e1565b60115550565b6000610b37848484611c76565b610b898433610b8485604051806060016040528060288152602001613632602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906123bf565b611b51565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a42918590610b849086611aeb565b6006546001600160a01b03163314610bf35760405162461bcd60e51b8152600401610a7690613396565b6000610bfe30610d19565b90508015610c0f57610c0f816123f9565b50565b6006546001600160a01b03163314610c3c5760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6006546001600160a01b03163314610c915760405162461bcd60e51b8152600401610a7690613396565b6010546001600160a01b0383811691161415610d0b5760405162461bcd60e51b815260206004820152603360248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152725f6469616d6f6e6448616e64486f6c6465727360681b6064820152608401610a76565b610d158282612562565b5050565b6001600160a01b031660009081526020819052604090205490565b6006546001600160a01b03163314610d5e5760405162461bcd60e51b8152600401610a7690613396565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b03163314610dd25760405162461bcd60e51b8152600401610a7690613396565b610258831015610e405760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152608401610a76565b6103e88211158015610e50575060015b610eb55760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152608401610a76565b601a929092556018556019805460ff1916911515919091179055565b6006546000906001600160a01b03163314610efe5760405162461bcd60e51b8152600401610a7690613396565b50601e805460ff1916905560015b90565b6006546001600160a01b03163314610f395760405162461bcd60e51b8152600401610a7690613396565b478015610d15576040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f76573d6000803e3d6000fd5b505050565b6006546001600160a01b03163314610fa55760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6006546000906001600160a01b03163314610ffc5760405162461bcd60e51b8152600401610a7690613396565b601c54601d5461100c9190613422565b421161105a5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152606401610a76565b6103e88211156110bf5760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610a76565b42601d556110cc826125b6565b50600190505b919050565b6006546001600160a01b031633146111015760405162461bcd60e51b8152600401610a7690613396565b601e54610100900460ff1661136b57600f54611127906001600160a01b03166001610f7b565b600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117557600080fd5b505afa158015611189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ad919061343a565b6001600160a01b031663c9c6539630600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120a57600080fd5b505afa15801561121e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611242919061343a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561128a57600080fd5b505af115801561129e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c2919061343a565b601080546001600160a01b0319166001600160a01b03928316179055600f546112f091309116600019611b51565b6113196113056006546001600160a01b031690565b600f546001600160a01b0316600019611b51565b601054611330906001600160a01b03166001610f7b565b601054611347906001600160a01b03166001612562565b601054600380546001600160a01b0319166001600160a01b03909216919091179055565b565b6006546001600160a01b031633146113975760405162461bcd60e51b8152600401610a7690613396565b600880546001600160a01b038085166001600160a01b03199283161790925560078054928416929091169190911790556040517f8e648f036e965ad2abd304af24cb6de1e1f9676c8ddb5726d5800f6537e6c84890600090a15050565b6006546001600160a01b0316331461141e5760405162461bcd60e51b8152600401610a7690613396565b601e8054911515620100000262ff000019909216919091179055565b6000610a423384610b848560405180606001604052806025815260200161365a602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906123bf565b6000610a42338484611c76565b6006546001600160a01b031633146114c05760405162461bcd60e51b8152600401610a7690613396565b801561154457600a805460ff8481166201000090810262ff00001988841661010090810261ffff19909616858c161795909517908116821795869055918504831694611516949004831692908116911617613457565b6115209190613457565b600a805460ff9290921663010000000263ff000000199092169190911790556115be565b600b805460ff8481166201000090810262ff00001988841661010090810261ffff19909616858c161795909517908116821795869055918504831694611594949004831692908116911617613457565b61159e9190613457565b600b805460ff9290921663010000000263ff000000199092169190911790555b6040517f4f0f795c210a77feaf05d2511acfd90b143b0eecd0deb58f179262078a5480d790600090a150505050565b6006546001600160a01b031633146116175760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b031633146116a05760405162461bcd60e51b8152600401610a7690613396565b633b9aca006103e86116b160025490565b6116bc9060056133e1565b6116c69190613400565b6116d09190613400565b81101561172b5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610a76565b61173981633b9aca006133e1565b60135550565b6006546001600160a01b031633146117695760405162461bcd60e51b8152600401610a7690613396565b601e54610100900460ff1661136b57601e805462ffffff19166201010117905542601b81905543601455601555565b6006546000906001600160a01b031633146117c55760405162461bcd60e51b8152600401610a7690613396565b620186a06117d260025490565b6117dd9060016133e1565b6117e79190613400565b8210156118545760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610a76565b50601255600190565b6006546000906001600160a01b0316331461188a5760405162461bcd60e51b8152600401610a7690613396565b611892612705565b156119145760006118a230610d19565b90508015611912576118b3816123f9565b6007546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611900576040519150601f19603f3d011682016040523d82523d6000602084013e611905565b606091505b50909350610f0c92505050565b505b50600190565b6006546000906001600160a01b031633146119475760405162461bcd60e51b8152600401610a7690613396565b50601e805464ff0000000019169055600190565b6006546001600160a01b031633146119855760405162461bcd60e51b8152600401610a7690613396565b6001600160a01b0381166119ea5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a76565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314611a705760405162461bcd60e51b8152600401610a7690613396565b601e546301000000900460ff1615611aca5760405162461bcd60e51b815260206004820152601c60248201527f796f752063616e74206275726e206d6f7265207468616e2074686973000000006044820152606401610a76565b611ad56107d06125b6565b50601e805463ff00000019166301000000179055565b600080611af88385613422565b905083811015611b4a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a76565b9392505050565b6001600160a01b038316611bb35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a76565b6001600160a01b038216611c145760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a76565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611c9c5760405162461bcd60e51b8152600401610a769061347c565b6001600160a01b038216611cc25760405162461bcd60e51b8152600401610a76906134c1565b6001600160a01b03831660009081526021602052604090205460ff161580611d0357506001600160a01b03821660009081526021602052604090205460ff16155b611d425760405162461bcd60e51b815260206004820152601060248201526f2cb7ba9030b932903634b6b4ba32b21760811b6044820152606401610a76565b80611d5357610f76838360006127a2565b6001600160a01b0383166000908152601f602052604090205460ff16158015611d9557506001600160a01b0382166000908152601f602052604090205460ff16155b15611dc1576000611da78260646128ab565b9050611db384826128ed565b611dbd8183613504565b9150505b601e5460ff1615612242576006546001600160a01b03848116911614801590611df857506006546001600160a01b03838116911614155b8015611e0c57506001600160a01b03821615155b8015611e2357506001600160a01b03821661dead14155b8015611e395750601054600160a01b900460ff16155b1561224257601e54610100900460ff16611ec6576001600160a01b0383166000908152601f602052604090205460ff1680611e8c57506001600160a01b0382166000908152601f602052604090205460ff165b611ec65760405162461bcd60e51b815260206004820152600b60248201526a77656e206c61756e63683f60a81b6044820152606401610a76565b6015544290611ed6906078611aeb565b1115612242576001600160a01b03831660009081526022602052604090205460ff168015611f1c57506001600160a01b038216600090815260208052604090205460ff16155b1561211357601154811115611f915760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a76565b601354611f9d83610d19565b611fa79083613422565b1115611feb5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a76565b436014546001611ffb9190613422565b10612024576001600160a01b0382166000908152602160205260409020805460ff191660011790555b6001600160a01b03821660009081526023602052604090205415801561204e575060175460165411155b801561207357506001600160a01b03821660009081526021602052604090205460ff16155b1561210e5761208e606461208883600a6129f8565b906128ab565b6001600160a01b038316600090815260236020526040812091825542600192830155601680549091906120c2908490613422565b9091555050601654604080516001600160a01b038516815260208101929092527f81447a387ab4a6776ba60c0f08c7a3c1b74303d763855331e097d65069f0453d910160405180910390a15b612242565b6001600160a01b03821660009081526022602052604090205460ff16801561215357506001600160a01b038316600090815260208052604090205460ff16155b156121c95760115481111561210e5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a76565b6001600160a01b038216600090815260208052604090205460ff16612242576013546121f483610d19565b6121fe9083613422565b11156122425760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a76565b600061224d30610d19565b905060125481101580156122695750601e5462010000900460ff165b801561227f5750601054600160a01b900460ff16155b80156122a457506001600160a01b03841660009081526022602052604090205460ff16155b80156122c957506001600160a01b0384166000908152601f602052604090205460ff16155b80156122ee57506001600160a01b0383166000908152601f602052604090205460ff16155b1561231c576010805460ff60a01b1916600160a01b17905561230e612a77565b6010805460ff60a01b191690555b601054600160a01b900460ff1615801561234e57506001600160a01b03831660009081526022602052604090205460ff165b801561235c575060195460ff165b80156123775750601a54601b546123739190613422565b4210155b801561239c57506001600160a01b0384166000908152601f602052604090205460ff16155b156123ae576123ac6018546125b6565b505b6123b9848484612ca1565b50505050565b600081848411156123e35760405162461bcd60e51b8152600401610a769190613156565b5060006123f08486613504565b95945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242e5761242e61351b565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561248257600080fd5b505afa158015612496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ba919061343a565b816001815181106124cd576124cd61351b565b6001600160a01b039283166020918202929092010152600f546124f39130911684611b51565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061252c908590600090869030904290600401613531565b600060405180830381600087803b15801561254657600080fd5b505af115801561255a573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917f2e32bfa5e95beba54c8bef3e262f937349362eda402138a868bf523c7846aa9a91a35050565b42601b556010546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a082319060240160206040518083038186803b15801561260257600080fd5b505afa158015612616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263a91906135a2565b9050600061264e61271061208884876129f8565b9050801561266f5760105461266f906001600160a01b031661dead836127a2565b6010546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156126b957600080fd5b505af11580156126cd573d6000803e3d6000fd5b50506040517f9efa406b2525be23eb13ab31c0a0c36c19f072f7bfa678e03a12a5f93233b4b0925060009150a1506001949350505050565b600354600090612733906001600160a01b031630600161272483610d19565b61272e9190613504565b611c76565b600360009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561278357600080fd5b505af1158015612797573d6000803e3d6000fd5b505050506001905090565b6001600160a01b0383166127c85760405162461bcd60e51b8152600401610a769061347c565b6001600160a01b0382166127ee5760405162461bcd60e51b8152600401610a76906134c1565b61282b8160405180606001604052806026815260200161360c602691396001600160a01b03861660009081526020819052604090205491906123bf565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461285a9082611aeb565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611c69565b6000611b4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613009565b6001600160a01b03821661294d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a76565b61298a816040518060600160405280602281526020016135ea602291396001600160a01b03851660009081526020819052604090205491906123bf565b6001600160a01b0383166000908152602081905260409020556002546129b09082613037565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600082612a0757506000610a46565b6000612a1383856133e1565b905082612a208583613400565b14611b4a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a76565b6000612a8230610d19565b600e54600c54600d54929350600092612a9b9190613422565b612aa59190613422565b90506000821580612ab4575081155b15612abe57505050565b601254831115612ace5760125492505b6000600283600c6001015486612ae491906133e1565b612aee9190613400565b612af89190613400565b90506000612b068583613037565b905047612b12826123f9565b6000612b1e4783613037565b90506000612b3e87612088600c60000154856129f890919063ffffffff16565b90506000612b5e88612088600c60020154866129f890919063ffffffff16565b9050600081612b6d8486613504565b612b779190613504565b6000600d819055600c819055600e8190556008546040519293506001600160a01b031691849181818185875af1925050503d8060008114612bd4576040519150601f19603f3d011682016040523d82523d6000602084013e612bd9565b606091505b50909850508615801590612bed5750600081115b15612c4057612bfc8782613079565b600d54604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6007546040516001600160a01b03909116904790600081818185875af1925050503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b50505050505050505050505050565b6010546001600160a01b0384166000908152601f602052604090205460ff600160a01b909204821615911680612cef57506001600160a01b0383166000908152601f602052604090205460ff165b15612cf8575060005b60008115612ff7576001600160a01b03841660009081526022602052604090205460ff168015612d335750600b546301000000900460ff1615155b15612ec057600b5460155460009160ff80821692610100830482169262010000810483169263010000009091041690612d6e9061012c611aeb565b421015612d8d57600b805463ffffffff19166319050a0a179055600194505b600b54612dac90606490612088908b906301000000900460ff166129f8565b600b5490965060ff63010000008204811691612dcf9161010090910416886133e1565b612dd99190613400565b600d8054600090612deb908490613422565b9091555050600b5460ff63010000008204811691612e11916201000090910416886133e1565b612e1b9190613400565b600e8054600090612e2d908490613422565b9091555050600b5460ff63010000008204811691612e4c9116886133e1565b612e569190613400565b600c8054600090612e68908490613422565b90915550508415612eb657600b805460ff86811661ffff1990921691909117610100868316021763ffff00001916620100008583160263ff0000001916176301000000918416919091021790555b5050505050612fd9565b6001600160a01b03851660009081526022602052604090205460ff168015612ef35750600a546301000000900460ff1615155b15612fd957600a54612f17906064906120889086906301000000900460ff166129f8565b600a5490915060ff63010000008204811691612f3a9161010090910416836133e1565b612f449190613400565b600d8054600090612f56908490613422565b9091555050600a5460ff63010000008204811691612f7c916201000090910416836133e1565b612f869190613400565b600e8054600090612f98908490613422565b9091555050600a5460ff63010000008204811691612fb79116836133e1565b612fc19190613400565b600c8054600090612fd3908490613422565b90915550505b8015612fea57612fea8530836127a2565b612ff48184613504565b92505b6130028585856127a2565b5050505050565b6000818361302a5760405162461bcd60e51b8152600401610a769190613156565b5060006123f08486613400565b6000611b4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123bf565b600f546130919030906001600160a01b031684611b51565b600f546001600160a01b031663f305d7198230856000806130ba6006546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561311d57600080fd5b505af1158015613131573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061300291906135bb565b600060208083528351808285015260005b8181101561318357858101830151858201604001528201613167565b81811115613195576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610c0f57600080fd5b600080604083850312156131d357600080fd5b82356131de816131ab565b946020939093013593505050565b6000602082840312156131fe57600080fd5b5035919050565b60008060006060848603121561321a57600080fd5b8335613225816131ab565b92506020840135613235816131ab565b929592945050506040919091013590565b60006020828403121561325857600080fd5b8135611b4a816131ab565b803580151581146110d257600080fd5b6000806040838503121561328657600080fd5b8235613291816131ab565b915061329f60208401613263565b90509250929050565b6000806000606084860312156132bd57600080fd5b83359250602084013591506132d460408501613263565b90509250925092565b600080604083850312156132f057600080fd5b82356132fb816131ab565b9150602083013561330b816131ab565b809150509250929050565b60006020828403121561332857600080fd5b611b4a82613263565b803560ff811681146110d257600080fd5b6000806000806080858703121561335857600080fd5b61336185613331565b935061336f60208601613331565b925061337d60408601613331565b915061338b60608601613263565b905092959194509250565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156133fb576133fb6133cb565b500290565b60008261341d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613435576134356133cb565b500190565b60006020828403121561344c57600080fd5b8151611b4a816131ab565b600060ff821660ff84168060ff03821115613474576134746133cb565b019392505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082821015613516576135166133cb565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156135815784516001600160a01b03168352938301939183019160010161355c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602082840312156135b457600080fd5b5051919050565b6000806000606084860312156135d057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220782a1a2cd73d75e25686c133e5b44b4f1e1166d0a9afb05f478a51f7c3801f1764736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572