0x6080604052600436106103d25760003560e01c8063715018a6116101fd578063b62496f511610118578063dc44b6a0116100ab578063ee40166e1161007a578063ee40166e14610b9d578063efcc52de14610bb3578063f2fde38b14610bc9578063f8b45b0514610be9578063fc155d1d14610bff57600080fd5b8063dc44b6a014610b0c578063dd62ed3e14610b22578063e884f26014610b68578063ea2f0b3714610b7d57600080fd5b8063c8607952116100e7578063c860795214610ab0578063c876d0b914610ac6578063c8c8ebe414610ae0578063d2d7ad8314610af657600080fd5b8063b62496f514610a2b578063bbc0c74214610a5b578063c49b9a8014610a7a578063c5d2418914610a9a57600080fd5b8063906e9dd011610190578063a073d37f1161015f578063a073d37f146109b1578063a457c2d7146109c6578063a5ece941146109e6578063a9059cbb14610a0b57600080fd5b8063906e9dd01461092457806395d89b41146109445780639a7a23d614610971578063a0263c891461099157600080fd5b806388790a68116101cc57806388790a68146108a257806388f82020146108b85780638a8c523c146108f15780638da5cb5b1461090657600080fd5b8063715018a614610838578063751039fc1461084d5780637571336a146108625780638366e79a1461088257600080fd5b80633221c93f116102ed57806352390c0211610280578063602bc62b1161024f578063602bc62b146107aa57806360d48489146107bf5780636ddd1713146107f857806370a082311461081857600080fd5b806352390c021461071e578063525fa81f1461073e5780635342acb41461075e578063557ed1ba1461079757600080fd5b80634549b039116102bc5780634549b039146106a357806349bd5a5e146106c35780634a62bb65146106e35780634a74bb02146106fd57600080fd5b80633221c93f146106235780633685d419146106435780633950935114610663578063437823ec1461068357600080fd5b806318160ddd1161036557806325519cf21161033457806325519cf2146105a75780632a360631146105c75780632d838119146105e7578063313ce5671461060757600080fd5b806318160ddd146105335780631d865c3014610551578063200a692d1461057157806323b872dd1461058757600080fd5b80630f4432e3116103a15780630f4432e31461049257806310d5de53146104b657806313114a9d146104e65780631694505e146104fb57600080fd5b80630305caff146103de57806306fdde03146104005780630923160214610442578063095ea7b31461046257600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103fe6103f936600461345e565b610c1f565b005b34801561040c57600080fd5b5060408051808201909152600781526608ae8d09acae8d60cb1b60208201525b604051610439919061347b565b60405180910390f35b34801561044e57600080fd5b506103fe61045d3660046134d0565b610c73565b34801561046e57600080fd5b5061048261047d3660046134e9565b610cc0565b6040519015158152602001610439565b34801561049e57600080fd5b506104a8601a5481565b604051908152602001610439565b3480156104c257600080fd5b506104826104d136600461345e565b601d6020526000908152604090205460ff1681565b3480156104f257600080fd5b50600d546104a8565b34801561050757600080fd5b5060285461051b906001600160a01b031681565b6040516001600160a01b039091168152602001610439565b34801561053f57600080fd5b506a52b7d2dcc80cd2e40000006104a8565b34801561055d57600080fd5b506103fe61056c366004613515565b610cd7565b34801561057d57600080fd5b506104a860175481565b34801561059357600080fd5b506104826105a2366004613541565b610d7a565b3480156105b357600080fd5b506103fe6105c2366004613515565b610de3565b3480156105d357600080fd5b506103fe6105e236600461345e565b610e27565b3480156105f357600080fd5b506104a86106023660046134d0565b610e75565b34801561061357600080fd5b5060405160128152602001610439565b34801561062f57600080fd5b5060055461051b906001600160a01b031681565b34801561064f57600080fd5b506103fe61065e36600461345e565b610ef9565b34801561066f57600080fd5b5061048261067e3660046134e9565b6110b0565b34801561068f57600080fd5b506103fe61069e36600461345e565b6110e6565b3480156106af57600080fd5b506104a86106be366004613590565b611134565b3480156106cf57600080fd5b5060295461051b906001600160a01b031681565b3480156106ef57600080fd5b50601c546104829060ff1681565b34801561070957600080fd5b5060295461048290600160a81b900460ff1681565b34801561072a57600080fd5b506103fe61073936600461345e565b6111ca565b34801561074a57600080fd5b506103fe61075936600461345e565b6113b8565b34801561076a57600080fd5b5061048261077936600461345e565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156107a357600080fd5b50426104a8565b3480156107b657600080fd5b506002546104a8565b3480156107cb57600080fd5b506104826107da36600461345e565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561080457600080fd5b50601c546104829062010000900460ff1681565b34801561082457600080fd5b506104a861083336600461345e565b61141c565b34801561084457600080fd5b506103fe61147b565b34801561085957600080fd5b506104826114ef565b34801561086e57600080fd5b506103fe61087d3660046135c0565b61153e565b34801561088e57600080fd5b5061048261089d3660046135ee565b6115c7565b3480156108ae57600080fd5b506104a860185481565b3480156108c457600080fd5b506104826108d336600461345e565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156108fd57600080fd5b506103fe611753565b34801561091257600080fd5b506000546001600160a01b031661051b565b34801561093057600080fd5b506103fe61093f36600461345e565b6117a5565b34801561095057600080fd5b506040805180820190915260048152630da8aa8960e31b602082015261042c565b34801561097d57600080fd5b506103fe61098c3660046135c0565b611814565b34801561099d57600080fd5b506103fe6109ac36600461361c565b6118cc565b3480156109bd57600080fd5b506025546104a8565b3480156109d257600080fd5b506104826109e13660046134e9565b611909565b3480156109f257600080fd5b5060045461051b9061010090046001600160a01b031681565b348015610a1757600080fd5b50610482610a263660046134e9565b611958565b348015610a3757600080fd5b50610482610a4636600461345e565b60246020526000908152604090205460ff1681565b348015610a6757600080fd5b50601c5461048290610100900460ff1681565b348015610a8657600080fd5b506103fe610a9536600461361c565b611965565b348015610aa657600080fd5b506104a860165481565b348015610abc57600080fd5b506104a860195481565b348015610ad257600080fd5b50601f546104829060ff1681565b348015610aec57600080fd5b506104a860265481565b348015610b0257600080fd5b506104a860255481565b348015610b1857600080fd5b506104a860155481565b348015610b2e57600080fd5b506104a8610b3d3660046135ee565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b7457600080fd5b506104826119e7565b348015610b8957600080fd5b506103fe610b9836600461345e565b611a22565b348015610ba957600080fd5b506104a8601b5481565b348015610bbf57600080fd5b506104a860145481565b348015610bd557600080fd5b506103fe610be436600461345e565b611a6d565b348015610bf557600080fd5b506104a860275481565b348015610c0b57600080fd5b506103fe610c1a3660046134d0565b611b57565b6000546001600160a01b03163314610c525760405162461bcd60e51b8152600401610c4990613639565b60405180910390fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b03163314610c9d5760405162461bcd60e51b8152600401610c4990613639565b61012c811015610cac57600080fd5b610cba81633b9aca00613684565b60235550565b6000610ccd338484611d67565b5060015b92915050565b6000546001600160a01b03163314610d015760405162461bcd60e51b8152600401610c4990613639565b601783905560188290556019819055601481610d1d84866136a3565b610d2791906136a3565b1115610d755760405162461bcd60e51b815260206004820152601960248201527f4d757374206b6565702074617865732062656c6f7720323025000000000000006044820152606401610c49565b505050565b6000610d87848484611e8b565b610dd98433610dd485604051806060016040528060288152602001613872602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612637565b611d67565b5060019392505050565b6000546001600160a01b03163314610e0d5760405162461bcd60e51b8152600401610c4990613639565b60148381556015839055601682905581610d1d84866136a3565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000600c54821115610edc5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c49565b6000610ee6612671565b9050610ef28382611ce3565b9392505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b0381166000908152600a602052604090205460ff16610f8b5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610c49565b60005b600b548110156110ac57816001600160a01b0316600b8281548110610fb557610fb56136bb565b6000918252602090912001546001600160a01b0316141561109a57600b8054610fe0906001906136d1565b81548110610ff057610ff06136bb565b600091825260209091200154600b80546001600160a01b03909216918390811061101c5761101c6136bb565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600a90925220805460ff19169055600b805480611074576110746136e8565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110a4816136fe565b915050610f8e565b5050565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610ccd918590610dd49086612694565b6000546001600160a01b031633146111105760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006a52b7d2dcc80cd2e40000008311156111915760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c49565b816111b05760006111a1846126f3565b50939550610cd1945050505050565b60006111bb846126f3565b50929550610cd1945050505050565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b0381166000908152600a602052604090205460ff161561125d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c49565b600b5460329061126e9060016136a3565b11156112f85760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610c49565b6001600160a01b03811660009081526006602052604090205415611352576001600160a01b03811660009081526006602052604090205461133890610e75565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e25760405162461bcd60e51b8152600401610c4990613639565b600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b6001600160a01b0381166000908152600a602052604081205460ff161561145957506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610cd190610e75565b6000546001600160a01b031633146114a55760405162461bcd60e51b8152600401610c4990613639565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610c4990613639565b50601c805460ff199081169091556022805482169055601f80549091169055600190565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d95910160405180910390a25050565b600080546001600160a01b031633146115f25760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03831630141561164b5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610c49565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561168d57600080fd5b505afa1580156116a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c59190613719565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561171357600080fd5b505af1158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190613732565b949350505050565b6000546001600160a01b0316331461177d5760405162461bcd60e51b8152600401610c4990613639565b601c805461ff0019166101001790556029805460ff60a81b1916600160a81b17905543601b55565b6000546001600160a01b031633146117cf5760405162461bcd60e51b8152600401610c4990613639565b60048054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b0316331461183e5760405162461bcd60e51b8152600401610c4990613639565b6029546001600160a01b03838116911614156118c25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c49565b6110ac8282612742565b6000546001600160a01b031633146118f65760405162461bcd60e51b8152600401610c4990613639565b6022805460ff1916911515919091179055565b6000610ccd3384610dd48560405180606001604052806025815260200161389a602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612637565b6000610ccd338484611e8b565b6000546001600160a01b0316331461198f5760405162461bcd60e51b8152600401610c4990613639565b60298054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906119dc90831515815260200190565b60405180910390a150565b600080546001600160a01b03163314611a125760405162461bcd60e51b8152600401610c4990613639565b50601f805460ff19169055600190565b6000546001600160a01b03163314611a4c5760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314611a975760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b038116611afc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c49565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b815760405162461bcd60e51b8152600401610c4990613639565b6040805160028082526060820183526000926020830190803683375050602854604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611be657600080fd5b505afa158015611bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1e919061374f565b81600081518110611c3157611c316136bb565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c6557611c656136bb565b6001600160a01b03928316602091820292909201015260285460405163b6f9de9560e01b815291169063b6f9de95908490611cad90600090869061dead9042906004016137b0565b6000604051808303818588803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b50505050505050565b6000610ef283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061278d565b6000610ef283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612637565b6001600160a01b038316611dc95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c49565b6001600160a01b038216611e2a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c49565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611eef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c49565b6001600160a01b038216611f515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c49565b60008111611fb35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c49565b601c54610100900460ff1661204d576001600160a01b03831660009081526009602052604090205460ff168061200157506001600160a01b03821660009081526009602052604090205460ff165b61204d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610c49565b601c5460ff161561249a576000546001600160a01b0384811691161480159061208457506000546001600160a01b03838116911614155b801561209857506001600160a01b03821615155b80156120af57506001600160a01b03821661dead14155b80156120c55750602954600160a01b900460ff16155b1561249a5760225460ff1680156120f457506001600160a01b03831660009081526024602052604090205460ff165b1561214b576023543a111561214b5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610c49565b601f5460ff161561224a576000546001600160a01b0383811691161480159061218257506028546001600160a01b03838116911614155b801561219c57506029546001600160a01b03838116911614155b1561224a57326000908152601e602052604090205443116122375760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c49565b326000908152601e602052604090204390555b6001600160a01b03831660009081526024602052604090205460ff16801561228b57506001600160a01b0382166000908152601d602052604090205460ff16155b15612364576026548111156123005760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c49565b60275461230c8361141c565b61231690836136a3565b111561235f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c49565b61249a565b6001600160a01b03821660009081526024602052604090205460ff1680156123a557506001600160a01b0383166000908152601d602052604090205460ff16155b1561241b5760265481111561235f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c49565b6001600160a01b0382166000908152601d602052604090205460ff1661249a576027546124478361141c565b61245190836136a3565b111561249a5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c49565b60006124a53061141c565b60255460295491925082101590600160a01b900460ff161580156124d25750602954600160a81b900460ff165b80156124f357506029546000906124f1906001600160a01b031661141c565b115b80156124fc5750805b801561252057506001600160a01b03841660009081526024602052604090205460ff165b1561252d5761252d6127bb565b612535612964565b6003600f556001600160a01b03851660009081526009602052604090205460ff1615801561257c57506001600160a01b03841660009081526009602052604090205460ff16155b15612614576001600160a01b03851660009081526024602052604090205460ff16156125cd576014546010556016546015546125b891906136a3565b6012819055156125c8576001600f555b612614565b6001600160a01b03841660009081526024602052604090205460ff16156126145760175460105560195460185461260491906136a3565b601281905515612614576002600f555b61261f858585612992565b612630601154601055601354601255565b5050505050565b6000818484111561265b5760405162461bcd60e51b8152600401610c49919061347b565b50600061266884866136d1565b95945050505050565b600080600061267e612b25565b909250905061268d8282611ce3565b9250505090565b6000806126a183856136a3565b905083811015610ef25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c49565b600080600080600080600080600061270a8a612cc9565b92509250925060008060006127288d8686612723612671565b612d0b565b919f909e50909c50959a5093985091965092945050505050565b6001600160a01b0382166000908152602460205260409020805460ff1916821515179055612770828261153e565b801561277f5761277f826111ca565b806110ac576110ac82610ef9565b600081836127ae5760405162461bcd60e51b8152600401610c49919061347b565b50600061266884866137e5565b6029805460ff60a01b1916600160a01b17905560006127d93061141c565b90506000806021546020546127ee91906136a3565b90508015806127fb575082155b1561280857505050612955565b60006002826020548661281b9190613684565b61282591906137e5565b61282f91906137e5565b9050600061283d8583611d25565b90504761284982612d5b565b60006128554783611d25565b905060006128788661287260215485612ec490919063ffffffff16565b90611ce3565b9050600061288682846136d1565b60006020819055602155905085158015906128a15750600081115b156128f2576128b08682612f43565b60408051868152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6004546040516101009091046001600160a01b0316904790600081818185875af1925050503d8060008114612943576040519150601f19603f3d011682016040523d82523d6000602084013e612948565b606091505b5050505050505050505050505b6029805460ff60a01b19169055565b6010541580156129745750601254155b1561297b57565b601080546011556012805460135560009182905555565b6001600160a01b03831660009081526003602052604090205460ff16806129d157506001600160a01b03821660009081526003602052604090205460ff165b15612a285760045460ff16612a285760405162461bcd60e51b815260206004820152601b60248201527f626f7473206172656e7420616c6c6f77656420746f20747261646500000000006044820152606401610c49565b6001600160a01b0383166000908152600a602052604090205460ff168015612a6957506001600160a01b0382166000908152600a602052604090205460ff16155b15612a7957610d75838383612fff565b6001600160a01b0383166000908152600a602052604090205460ff16158015612aba57506001600160a01b0382166000908152600a602052604090205460ff165b15612aca57610d75838383613125565b6001600160a01b0383166000908152600a602052604090205460ff168015612b0a57506001600160a01b0382166000908152600a602052604090205460ff165b15612b1a57610d758383836131ce565b610d75838383613241565b600c5460009081906a52b7d2dcc80cd2e4000000825b600b54811015612c88578260066000600b8481548110612b5d57612b5d6136bb565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bc857508160076000600b8481548110612ba157612ba16136bb565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612be6575050600c54936a52b7d2dcc80cd2e40000009350915050565b612c2c60066000600b8481548110612c0057612c006136bb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611d25565b9250612c7460076000600b8481548110612c4857612c486136bb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611d25565b915080612c80816136fe565b915050612b3b565b50600c54612ca1906a52b7d2dcc80cd2e4000000611ce3565b821015612cc0575050600c54926a52b7d2dcc80cd2e400000092509050565b90939092509050565b600080600080612cd885613285565b90506000612ce5866132a1565b90506000612cfd82612cf78986611d25565b90611d25565b979296509094509092505050565b6000808080612d1a8886612ec4565b90506000612d288887612ec4565b90506000612d368888612ec4565b90506000612d4882612cf78686611d25565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d9057612d906136bb565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612de457600080fd5b505afa158015612df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1c919061374f565b81600181518110612e2f57612e2f6136bb565b6001600160a01b039283166020918202929092010152602854612e559130911684611d67565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e8e908590600090869030904290600401613807565b600060405180830381600087803b158015612ea857600080fd5b505af1158015612ebc573d6000803e3d6000fd5b505050505050565b600082612ed357506000610cd1565b6000612edf8385613684565b905082612eec85836137e5565b14610ef25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c49565b602854612f5b9030906001600160a01b031684611d67565b60285460055460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612fc657600080fd5b505af1158015612fda573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126309190613843565b600080600080600080613011876126f3565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506130439088611d25565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546130729087611d25565b6001600160a01b03808b1660009081526006602052604080822093909355908a16815220546130a19086612694565b6001600160a01b0389166000908152600660205260409020556130c3816132bd565b6130cd8483613422565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161311291815260200190565b60405180910390a3505050505050505050565b600080600080600080613137876126f3565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506131699087611d25565b6001600160a01b03808b16600090815260066020908152604080832094909455918b1681526007909152205461319f9084612694565b6001600160a01b0389166000908152600760209081526040808320939093556006905220546130a19086612694565b6000806000806000806131e0876126f3565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506132129088611d25565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546131699087611d25565b600080600080600080613253876126f3565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506130729087611d25565b6000610cd1606461287260105485612ec490919063ffffffff16565b6000610cd1606461287260125485612ec490919063ffffffff16565b6001600f54141561332e576012546015546132d89083613684565b6132e291906137e5565b602060008282546132f391906136a3565b90915550506012546016546133089083613684565b61331291906137e5565b6021600082825461332391906136a3565b9091555061339a9050565b6002600f54141561339a576012546018546133499083613684565b61335391906137e5565b6020600082825461336491906136a3565b90915550506012546019546133799083613684565b61338391906137e5565b6021600082825461339491906136a3565b90915550505b60006133a4612671565b905060006133b28383612ec4565b306000908152600660205260409020549091506133cf9082612694565b30600090815260066020908152604080832093909355600a9052205460ff1615610d75573060009081526007602052604090205461340d9084612694565b30600090815260076020526040902055505050565b600c5461342f9083611d25565b600c55600d5461343f9082612694565b600d555050565b6001600160a01b038116811461345b57600080fd5b50565b60006020828403121561347057600080fd5b8135610ef281613446565b600060208083528351808285015260005b818110156134a85785810183015185820160400152820161348c565b818111156134ba576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156134e257600080fd5b5035919050565b600080604083850312156134fc57600080fd5b823561350781613446565b946020939093013593505050565b60008060006060848603121561352a57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561355657600080fd5b833561356181613446565b9250602084013561357181613446565b929592945050506040919091013590565b801515811461345b57600080fd5b600080604083850312156135a357600080fd5b8235915060208301356135b581613582565b809150509250929050565b600080604083850312156135d357600080fd5b82356135de81613446565b915060208301356135b581613582565b6000806040838503121561360157600080fd5b823561360c81613446565b915060208301356135b581613446565b60006020828403121561362e57600080fd5b8135610ef281613582565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561369e5761369e61366e565b500290565b600082198211156136b6576136b661366e565b500190565b634e487b7160e01b600052603260045260246000fd5b6000828210156136e3576136e361366e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156137125761371261366e565b5060010190565b60006020828403121561372b57600080fd5b5051919050565b60006020828403121561374457600080fd5b8151610ef281613582565b60006020828403121561376157600080fd5b8151610ef281613446565b600081518084526020808501945080840160005b838110156137a55781516001600160a01b031687529582019590820190600101613780565b509495945050505050565b8481526080602082015260006137c9608083018661376c565b6001600160a01b03949094166040830152506060015292915050565b60008261380257634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061382660a083018661376c565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561385857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220870fea2d3de03457871c2ae286bad0d9d0218ba2efad8347f7315c208493e39764736f6c63430008090033
0x6080604052600480547449aa9d125cda9cf0209a2d15e82b3dbc4558fd9f006001600160a81b0319909116179055600580546001600160a01b0319167349aa9d125cda9cf0209a2d15e82b3dbc4558fd9f1790556200006c6a52b7d2dcc80cd2e400000060001962000de7565b6200007a9060001962000e14565b600c556103e8620000986a52b7d2dcc80cd2e4000000601462000e2e565b620000a4919062000e50565b600e556010546011556012546013556000601481905560026015819055600560168190556017839055601891909155601955601a819055601b55601c805462ffffff19166001908117909155601f805460ff19908116831790915560228054909116909117905564800e8dfc006023556029805460ff60a81b191690553480156200012e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35033806103e86200018d6a52b7d2dcc80cd2e4000000601462000e2e565b62000199919062000e50565b602655612710620001b76a52b7d2dcc80cd2e4000000600362000e2e565b620001c3919062000e50565b6025556103e8620001e16a52b7d2dcc80cd2e4000000601462000e2e565b620001ed919062000e50565b602755600c546001600160a01b038316600090815260066020908152604080832093909355825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d93849263c45a015592600480840193829003018186803b1580156200025957600080fd5b505afa1580156200026e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000294919062000e67565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002dd57600080fd5b505afa158015620002f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000318919062000e67565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200036157600080fd5b505af115801562000376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039c919062000e67565b602880546001600160a01b038086166001600160a01b0319928316179092556029805492841692821692909217909155600480547449aa9d125cda9cf0209a2d15e82b3dbc4558fd9f00610100600160a81b0319909116179055600580549091167349aa9d125cda9cf0209a2d15e82b3dbc4558fd9f17905590506200042481600162000518565b6001600160a01b038481166000908152600960205260408082208054600160ff19918216811790925587851684528284208054821683179055308452828420805482168317905560055490941683529120805490921681179091556200048c9085906200056f565b620004998360016200056f565b620004a63060016200056f565b620004b38260016200056f565b620004c261dead60016200056f565b6040516a52b7d2dcc80cd2e400000081526001600160a01b038516906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505062000f4f565b6001600160a01b0382166000908152602460205260409020805460ff19168215151790556200054882826200056f565b80156200055a576200055a826200061d565b806200056b576200056b8262000835565b5050565b6000546001600160a01b03163314620005be5760405162461bcd60e51b815260206004820181905260248201526000805160206200485383398151915260448201526064015b60405180910390fd5b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d95910160405180910390a25050565b6000546001600160a01b03163314620006685760405162461bcd60e51b81526020600482018190526024820152600080516020620048538339815191526044820152606401620005b5565b6001600160a01b0381166000908152600a602052604090205460ff1615620006d35760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005b5565b600b54603290620006e690600162000e92565b1115620007725760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401620005b5565b6001600160a01b03811660009081526006602052604090205415620007cf576001600160a01b038116600090815260066020526040902054620007b59062000a1e565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b03163314620008805760405162461bcd60e51b81526020600482018190526024820152600080516020620048538339815191526044820152606401620005b5565b6001600160a01b0381166000908152600a602052604090205460ff16620008ea5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401620005b5565b60005b600b548110156200056b57816001600160a01b0316600b828154811062000918576200091862000ead565b6000918252602090912001546001600160a01b0316141562000a0957600b8054620009469060019062000e14565b8154811062000959576200095962000ead565b600091825260209091200154600b80546001600160a01b03909216918390811062000988576200098862000ead565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600a90925220805460ff19169055600b805480620009e357620009e362000ec3565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8062000a158162000ed9565b915050620008ed565b6000600c5482111562000a875760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005b5565b600062000a9362000ab6565b905062000aaf818462000ae960201b62001ce31790919060201c565b9392505050565b6000808062000ac462000b33565b9150915062000ae2818362000ae960201b62001ce31790919060201c565b9250505090565b600062000aaf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000d1560201b60201c565b600c5460009081906a52b7d2dcc80cd2e4000000825b600b5481101562000cc4578260066000600b848154811062000b6f5762000b6f62000ead565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000bde57508160076000600b848154811062000bb75762000bb762000ead565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000bfd575050600c54936a52b7d2dcc80cd2e40000009350915050565b62000c5460066000600b848154811062000c1b5762000c1b62000ead565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054859162001d2562000d51821b17901c565b925062000cad60076000600b848154811062000c745762000c7462000ead565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902054849162001d2562000d51821b17901c565b91508062000cbb8162000ed9565b91505062000b49565b5062000cec6a52b7d2dcc80cd2e4000000600c5462000ae960201b62001ce31790919060201c565b82101562000d0c575050600c54926a52b7d2dcc80cd2e400000092509050565b90939092509050565b6000818362000d395760405162461bcd60e51b8152600401620005b5919062000ef7565b50600062000d48848662000e50565b95945050505050565b600062000aaf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d9b60201b60201c565b6000818484111562000dc25760405162461bcd60e51b8152600401620005b5919062000ef7565b50600062000d48848662000e14565b634e487b7160e01b600052601260045260246000fd5b60008262000df95762000df962000dd1565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000e295762000e2962000dfe565b500390565b600081600019048311821515161562000e4b5762000e4b62000dfe565b500290565b60008262000e625762000e6262000dd1565b500490565b60006020828403121562000e7a57600080fd5b81516001600160a01b038116811462000aaf57600080fd5b6000821982111562000ea85762000ea862000dfe565b500190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141562000ef05762000ef062000dfe565b5060010190565b600060208083528351808285015260005b8181101562000f265785810183015185820160400152820162000f08565b8181111562000f39576000604083870101525b50601f01601f1916929092016040019392505050565b6138f48062000f5f6000396000f3fe6080604052600436106103d25760003560e01c8063715018a6116101fd578063b62496f511610118578063dc44b6a0116100ab578063ee40166e1161007a578063ee40166e14610b9d578063efcc52de14610bb3578063f2fde38b14610bc9578063f8b45b0514610be9578063fc155d1d14610bff57600080fd5b8063dc44b6a014610b0c578063dd62ed3e14610b22578063e884f26014610b68578063ea2f0b3714610b7d57600080fd5b8063c8607952116100e7578063c860795214610ab0578063c876d0b914610ac6578063c8c8ebe414610ae0578063d2d7ad8314610af657600080fd5b8063b62496f514610a2b578063bbc0c74214610a5b578063c49b9a8014610a7a578063c5d2418914610a9a57600080fd5b8063906e9dd011610190578063a073d37f1161015f578063a073d37f146109b1578063a457c2d7146109c6578063a5ece941146109e6578063a9059cbb14610a0b57600080fd5b8063906e9dd01461092457806395d89b41146109445780639a7a23d614610971578063a0263c891461099157600080fd5b806388790a68116101cc57806388790a68146108a257806388f82020146108b85780638a8c523c146108f15780638da5cb5b1461090657600080fd5b8063715018a614610838578063751039fc1461084d5780637571336a146108625780638366e79a1461088257600080fd5b80633221c93f116102ed57806352390c0211610280578063602bc62b1161024f578063602bc62b146107aa57806360d48489146107bf5780636ddd1713146107f857806370a082311461081857600080fd5b806352390c021461071e578063525fa81f1461073e5780635342acb41461075e578063557ed1ba1461079757600080fd5b80634549b039116102bc5780634549b039146106a357806349bd5a5e146106c35780634a62bb65146106e35780634a74bb02146106fd57600080fd5b80633221c93f146106235780633685d419146106435780633950935114610663578063437823ec1461068357600080fd5b806318160ddd1161036557806325519cf21161033457806325519cf2146105a75780632a360631146105c75780632d838119146105e7578063313ce5671461060757600080fd5b806318160ddd146105335780631d865c3014610551578063200a692d1461057157806323b872dd1461058757600080fd5b80630f4432e3116103a15780630f4432e31461049257806310d5de53146104b657806313114a9d146104e65780631694505e146104fb57600080fd5b80630305caff146103de57806306fdde03146104005780630923160214610442578063095ea7b31461046257600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103fe6103f936600461345e565b610c1f565b005b34801561040c57600080fd5b5060408051808201909152600781526608ae8d09acae8d60cb1b60208201525b604051610439919061347b565b60405180910390f35b34801561044e57600080fd5b506103fe61045d3660046134d0565b610c73565b34801561046e57600080fd5b5061048261047d3660046134e9565b610cc0565b6040519015158152602001610439565b34801561049e57600080fd5b506104a8601a5481565b604051908152602001610439565b3480156104c257600080fd5b506104826104d136600461345e565b601d6020526000908152604090205460ff1681565b3480156104f257600080fd5b50600d546104a8565b34801561050757600080fd5b5060285461051b906001600160a01b031681565b6040516001600160a01b039091168152602001610439565b34801561053f57600080fd5b506a52b7d2dcc80cd2e40000006104a8565b34801561055d57600080fd5b506103fe61056c366004613515565b610cd7565b34801561057d57600080fd5b506104a860175481565b34801561059357600080fd5b506104826105a2366004613541565b610d7a565b3480156105b357600080fd5b506103fe6105c2366004613515565b610de3565b3480156105d357600080fd5b506103fe6105e236600461345e565b610e27565b3480156105f357600080fd5b506104a86106023660046134d0565b610e75565b34801561061357600080fd5b5060405160128152602001610439565b34801561062f57600080fd5b5060055461051b906001600160a01b031681565b34801561064f57600080fd5b506103fe61065e36600461345e565b610ef9565b34801561066f57600080fd5b5061048261067e3660046134e9565b6110b0565b34801561068f57600080fd5b506103fe61069e36600461345e565b6110e6565b3480156106af57600080fd5b506104a86106be366004613590565b611134565b3480156106cf57600080fd5b5060295461051b906001600160a01b031681565b3480156106ef57600080fd5b50601c546104829060ff1681565b34801561070957600080fd5b5060295461048290600160a81b900460ff1681565b34801561072a57600080fd5b506103fe61073936600461345e565b6111ca565b34801561074a57600080fd5b506103fe61075936600461345e565b6113b8565b34801561076a57600080fd5b5061048261077936600461345e565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156107a357600080fd5b50426104a8565b3480156107b657600080fd5b506002546104a8565b3480156107cb57600080fd5b506104826107da36600461345e565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561080457600080fd5b50601c546104829062010000900460ff1681565b34801561082457600080fd5b506104a861083336600461345e565b61141c565b34801561084457600080fd5b506103fe61147b565b34801561085957600080fd5b506104826114ef565b34801561086e57600080fd5b506103fe61087d3660046135c0565b61153e565b34801561088e57600080fd5b5061048261089d3660046135ee565b6115c7565b3480156108ae57600080fd5b506104a860185481565b3480156108c457600080fd5b506104826108d336600461345e565b6001600160a01b03166000908152600a602052604090205460ff1690565b3480156108fd57600080fd5b506103fe611753565b34801561091257600080fd5b506000546001600160a01b031661051b565b34801561093057600080fd5b506103fe61093f36600461345e565b6117a5565b34801561095057600080fd5b506040805180820190915260048152630da8aa8960e31b602082015261042c565b34801561097d57600080fd5b506103fe61098c3660046135c0565b611814565b34801561099d57600080fd5b506103fe6109ac36600461361c565b6118cc565b3480156109bd57600080fd5b506025546104a8565b3480156109d257600080fd5b506104826109e13660046134e9565b611909565b3480156109f257600080fd5b5060045461051b9061010090046001600160a01b031681565b348015610a1757600080fd5b50610482610a263660046134e9565b611958565b348015610a3757600080fd5b50610482610a4636600461345e565b60246020526000908152604090205460ff1681565b348015610a6757600080fd5b50601c5461048290610100900460ff1681565b348015610a8657600080fd5b506103fe610a9536600461361c565b611965565b348015610aa657600080fd5b506104a860165481565b348015610abc57600080fd5b506104a860195481565b348015610ad257600080fd5b50601f546104829060ff1681565b348015610aec57600080fd5b506104a860265481565b348015610b0257600080fd5b506104a860255481565b348015610b1857600080fd5b506104a860155481565b348015610b2e57600080fd5b506104a8610b3d3660046135ee565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b7457600080fd5b506104826119e7565b348015610b8957600080fd5b506103fe610b9836600461345e565b611a22565b348015610ba957600080fd5b506104a8601b5481565b348015610bbf57600080fd5b506104a860145481565b348015610bd557600080fd5b506103fe610be436600461345e565b611a6d565b348015610bf557600080fd5b506104a860275481565b348015610c0b57600080fd5b506103fe610c1a3660046134d0565b611b57565b6000546001600160a01b03163314610c525760405162461bcd60e51b8152600401610c4990613639565b60405180910390fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b03163314610c9d5760405162461bcd60e51b8152600401610c4990613639565b61012c811015610cac57600080fd5b610cba81633b9aca00613684565b60235550565b6000610ccd338484611d67565b5060015b92915050565b6000546001600160a01b03163314610d015760405162461bcd60e51b8152600401610c4990613639565b601783905560188290556019819055601481610d1d84866136a3565b610d2791906136a3565b1115610d755760405162461bcd60e51b815260206004820152601960248201527f4d757374206b6565702074617865732062656c6f7720323025000000000000006044820152606401610c49565b505050565b6000610d87848484611e8b565b610dd98433610dd485604051806060016040528060288152602001613872602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612637565b611d67565b5060019392505050565b6000546001600160a01b03163314610e0d5760405162461bcd60e51b8152600401610c4990613639565b60148381556015839055601682905581610d1d84866136a3565b6000546001600160a01b03163314610e515760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000600c54821115610edc5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c49565b6000610ee6612671565b9050610ef28382611ce3565b9392505050565b6000546001600160a01b03163314610f235760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b0381166000908152600a602052604090205460ff16610f8b5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610c49565b60005b600b548110156110ac57816001600160a01b0316600b8281548110610fb557610fb56136bb565b6000918252602090912001546001600160a01b0316141561109a57600b8054610fe0906001906136d1565b81548110610ff057610ff06136bb565b600091825260209091200154600b80546001600160a01b03909216918390811061101c5761101c6136bb565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600a90925220805460ff19169055600b805480611074576110746136e8565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110a4816136fe565b915050610f8e565b5050565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610ccd918590610dd49086612694565b6000546001600160a01b031633146111105760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006a52b7d2dcc80cd2e40000008311156111915760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c49565b816111b05760006111a1846126f3565b50939550610cd1945050505050565b60006111bb846126f3565b50929550610cd1945050505050565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b0381166000908152600a602052604090205460ff161561125d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c49565b600b5460329061126e9060016136a3565b11156112f85760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610c49565b6001600160a01b03811660009081526006602052604090205415611352576001600160a01b03811660009081526006602052604090205461133890610e75565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146113e25760405162461bcd60e51b8152600401610c4990613639565b600580546001600160a01b039092166001600160a01b0319909216821790556000908152600960205260409020805460ff19166001179055565b6001600160a01b0381166000908152600a602052604081205460ff161561145957506001600160a01b031660009081526007602052604090205490565b6001600160a01b038216600090815260066020526040902054610cd190610e75565b6000546001600160a01b031633146114a55760405162461bcd60e51b8152600401610c4990613639565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600080546001600160a01b0316331461151a5760405162461bcd60e51b8152600401610c4990613639565b50601c805460ff199081169091556022805482169055601f80549091169055600190565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915591519182527f575f9d01836c9206322151b9e9ec3f2b77b87e71176933b9b44d2d732f768d95910160405180910390a25050565b600080546001600160a01b031633146115f25760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03831630141561164b5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610c49565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561168d57600080fd5b505afa1580156116a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c59190613719565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561171357600080fd5b505af1158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190613732565b949350505050565b6000546001600160a01b0316331461177d5760405162461bcd60e51b8152600401610c4990613639565b601c805461ff0019166101001790556029805460ff60a81b1916600160a81b17905543601b55565b6000546001600160a01b031633146117cf5760405162461bcd60e51b8152600401610c4990613639565b60048054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152600960205260409020805460ff19166001179055565b6000546001600160a01b0316331461183e5760405162461bcd60e51b8152600401610c4990613639565b6029546001600160a01b03838116911614156118c25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610c49565b6110ac8282612742565b6000546001600160a01b031633146118f65760405162461bcd60e51b8152600401610c4990613639565b6022805460ff1916911515919091179055565b6000610ccd3384610dd48560405180606001604052806025815260200161389a602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612637565b6000610ccd338484611e8b565b6000546001600160a01b0316331461198f5760405162461bcd60e51b8152600401610c4990613639565b60298054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906119dc90831515815260200190565b60405180910390a150565b600080546001600160a01b03163314611a125760405162461bcd60e51b8152600401610c4990613639565b50601f805460ff19169055600190565b6000546001600160a01b03163314611a4c5760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314611a975760405162461bcd60e51b8152600401610c4990613639565b6001600160a01b038116611afc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c49565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b815760405162461bcd60e51b8152600401610c4990613639565b6040805160028082526060820183526000926020830190803683375050602854604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611be657600080fd5b505afa158015611bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1e919061374f565b81600081518110611c3157611c316136bb565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611c6557611c656136bb565b6001600160a01b03928316602091820292909201015260285460405163b6f9de9560e01b815291169063b6f9de95908490611cad90600090869061dead9042906004016137b0565b6000604051808303818588803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b50505050505050565b6000610ef283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061278d565b6000610ef283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612637565b6001600160a01b038316611dc95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c49565b6001600160a01b038216611e2a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c49565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611eef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c49565b6001600160a01b038216611f515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c49565b60008111611fb35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c49565b601c54610100900460ff1661204d576001600160a01b03831660009081526009602052604090205460ff168061200157506001600160a01b03821660009081526009602052604090205460ff165b61204d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420616374697665207965742e0000000000006044820152606401610c49565b601c5460ff161561249a576000546001600160a01b0384811691161480159061208457506000546001600160a01b03838116911614155b801561209857506001600160a01b03821615155b80156120af57506001600160a01b03821661dead14155b80156120c55750602954600160a01b900460ff16155b1561249a5760225460ff1680156120f457506001600160a01b03831660009081526024602052604090205460ff165b1561214b576023543a111561214b5760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610c49565b601f5460ff161561224a576000546001600160a01b0383811691161480159061218257506028546001600160a01b03838116911614155b801561219c57506029546001600160a01b03838116911614155b1561224a57326000908152601e602052604090205443116122375760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610c49565b326000908152601e602052604090204390555b6001600160a01b03831660009081526024602052604090205460ff16801561228b57506001600160a01b0382166000908152601d602052604090205460ff16155b15612364576026548111156123005760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610c49565b60275461230c8361141c565b61231690836136a3565b111561235f5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c49565b61249a565b6001600160a01b03821660009081526024602052604090205460ff1680156123a557506001600160a01b0383166000908152601d602052604090205460ff16155b1561241b5760265481111561235f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610c49565b6001600160a01b0382166000908152601d602052604090205460ff1661249a576027546124478361141c565b61245190836136a3565b111561249a5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08195e18d95959081b585e081dd85b1b195d60421b6044820152606401610c49565b60006124a53061141c565b60255460295491925082101590600160a01b900460ff161580156124d25750602954600160a81b900460ff165b80156124f357506029546000906124f1906001600160a01b031661141c565b115b80156124fc5750805b801561252057506001600160a01b03841660009081526024602052604090205460ff165b1561252d5761252d6127bb565b612535612964565b6003600f556001600160a01b03851660009081526009602052604090205460ff1615801561257c57506001600160a01b03841660009081526009602052604090205460ff16155b15612614576001600160a01b03851660009081526024602052604090205460ff16156125cd576014546010556016546015546125b891906136a3565b6012819055156125c8576001600f555b612614565b6001600160a01b03841660009081526024602052604090205460ff16156126145760175460105560195460185461260491906136a3565b601281905515612614576002600f555b61261f858585612992565b612630601154601055601354601255565b5050505050565b6000818484111561265b5760405162461bcd60e51b8152600401610c49919061347b565b50600061266884866136d1565b95945050505050565b600080600061267e612b25565b909250905061268d8282611ce3565b9250505090565b6000806126a183856136a3565b905083811015610ef25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c49565b600080600080600080600080600061270a8a612cc9565b92509250925060008060006127288d8686612723612671565b612d0b565b919f909e50909c50959a5093985091965092945050505050565b6001600160a01b0382166000908152602460205260409020805460ff1916821515179055612770828261153e565b801561277f5761277f826111ca565b806110ac576110ac82610ef9565b600081836127ae5760405162461bcd60e51b8152600401610c49919061347b565b50600061266884866137e5565b6029805460ff60a01b1916600160a01b17905560006127d93061141c565b90506000806021546020546127ee91906136a3565b90508015806127fb575082155b1561280857505050612955565b60006002826020548661281b9190613684565b61282591906137e5565b61282f91906137e5565b9050600061283d8583611d25565b90504761284982612d5b565b60006128554783611d25565b905060006128788661287260215485612ec490919063ffffffff16565b90611ce3565b9050600061288682846136d1565b60006020819055602155905085158015906128a15750600081115b156128f2576128b08682612f43565b60408051868152602081018390529081018790527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6004546040516101009091046001600160a01b0316904790600081818185875af1925050503d8060008114612943576040519150601f19603f3d011682016040523d82523d6000602084013e612948565b606091505b5050505050505050505050505b6029805460ff60a01b19169055565b6010541580156129745750601254155b1561297b57565b601080546011556012805460135560009182905555565b6001600160a01b03831660009081526003602052604090205460ff16806129d157506001600160a01b03821660009081526003602052604090205460ff165b15612a285760045460ff16612a285760405162461bcd60e51b815260206004820152601b60248201527f626f7473206172656e7420616c6c6f77656420746f20747261646500000000006044820152606401610c49565b6001600160a01b0383166000908152600a602052604090205460ff168015612a6957506001600160a01b0382166000908152600a602052604090205460ff16155b15612a7957610d75838383612fff565b6001600160a01b0383166000908152600a602052604090205460ff16158015612aba57506001600160a01b0382166000908152600a602052604090205460ff165b15612aca57610d75838383613125565b6001600160a01b0383166000908152600a602052604090205460ff168015612b0a57506001600160a01b0382166000908152600a602052604090205460ff165b15612b1a57610d758383836131ce565b610d75838383613241565b600c5460009081906a52b7d2dcc80cd2e4000000825b600b54811015612c88578260066000600b8481548110612b5d57612b5d6136bb565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bc857508160076000600b8481548110612ba157612ba16136bb565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612be6575050600c54936a52b7d2dcc80cd2e40000009350915050565b612c2c60066000600b8481548110612c0057612c006136bb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611d25565b9250612c7460076000600b8481548110612c4857612c486136bb565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611d25565b915080612c80816136fe565b915050612b3b565b50600c54612ca1906a52b7d2dcc80cd2e4000000611ce3565b821015612cc0575050600c54926a52b7d2dcc80cd2e400000092509050565b90939092509050565b600080600080612cd885613285565b90506000612ce5866132a1565b90506000612cfd82612cf78986611d25565b90611d25565b979296509094509092505050565b6000808080612d1a8886612ec4565b90506000612d288887612ec4565b90506000612d368888612ec4565b90506000612d4882612cf78686611d25565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d9057612d906136bb565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612de457600080fd5b505afa158015612df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1c919061374f565b81600181518110612e2f57612e2f6136bb565b6001600160a01b039283166020918202929092010152602854612e559130911684611d67565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac94790612e8e908590600090869030904290600401613807565b600060405180830381600087803b158015612ea857600080fd5b505af1158015612ebc573d6000803e3d6000fd5b505050505050565b600082612ed357506000610cd1565b6000612edf8385613684565b905082612eec85836137e5565b14610ef25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c49565b602854612f5b9030906001600160a01b031684611d67565b60285460055460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b158015612fc657600080fd5b505af1158015612fda573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126309190613843565b600080600080600080613011876126f3565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506130439088611d25565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546130729087611d25565b6001600160a01b03808b1660009081526006602052604080822093909355908a16815220546130a19086612694565b6001600160a01b0389166000908152600660205260409020556130c3816132bd565b6130cd8483613422565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161311291815260200190565b60405180910390a3505050505050505050565b600080600080600080613137876126f3565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506131699087611d25565b6001600160a01b03808b16600090815260066020908152604080832094909455918b1681526007909152205461319f9084612694565b6001600160a01b0389166000908152600760209081526040808320939093556006905220546130a19086612694565b6000806000806000806131e0876126f3565b6001600160a01b038f16600090815260076020526040902054959b509399509197509550935091506132129088611d25565b6001600160a01b038a166000908152600760209081526040808320939093556006905220546131699087611d25565b600080600080600080613253876126f3565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506130729087611d25565b6000610cd1606461287260105485612ec490919063ffffffff16565b6000610cd1606461287260125485612ec490919063ffffffff16565b6001600f54141561332e576012546015546132d89083613684565b6132e291906137e5565b602060008282546132f391906136a3565b90915550506012546016546133089083613684565b61331291906137e5565b6021600082825461332391906136a3565b9091555061339a9050565b6002600f54141561339a576012546018546133499083613684565b61335391906137e5565b6020600082825461336491906136a3565b90915550506012546019546133799083613684565b61338391906137e5565b6021600082825461339491906136a3565b90915550505b60006133a4612671565b905060006133b28383612ec4565b306000908152600660205260409020549091506133cf9082612694565b30600090815260066020908152604080832093909355600a9052205460ff1615610d75573060009081526007602052604090205461340d9084612694565b30600090815260076020526040902055505050565b600c5461342f9083611d25565b600c55600d5461343f9082612694565b600d555050565b6001600160a01b038116811461345b57600080fd5b50565b60006020828403121561347057600080fd5b8135610ef281613446565b600060208083528351808285015260005b818110156134a85785810183015185820160400152820161348c565b818111156134ba576000604083870101525b50601f01601f1916929092016040019392505050565b6000602082840312156134e257600080fd5b5035919050565b600080604083850312156134fc57600080fd5b823561350781613446565b946020939093013593505050565b60008060006060848603121561352a57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561355657600080fd5b833561356181613446565b9250602084013561357181613446565b929592945050506040919091013590565b801515811461345b57600080fd5b600080604083850312156135a357600080fd5b8235915060208301356135b581613582565b809150509250929050565b600080604083850312156135d357600080fd5b82356135de81613446565b915060208301356135b581613582565b6000806040838503121561360157600080fd5b823561360c81613446565b915060208301356135b581613446565b60006020828403121561362e57600080fd5b8135610ef281613582565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561369e5761369e61366e565b500290565b600082198211156136b6576136b661366e565b500190565b634e487b7160e01b600052603260045260246000fd5b6000828210156136e3576136e361366e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156137125761371261366e565b5060010190565b60006020828403121561372b57600080fd5b5051919050565b60006020828403121561374457600080fd5b8151610ef281613582565b60006020828403121561376157600080fd5b8151610ef281613446565b600081518084526020808501945080840160005b838110156137a55781516001600160a01b031687529582019590820190600101613780565b509495945050505050565b8481526080602082015260006137c9608083018661376c565b6001600160a01b03949094166040830152506060015292915050565b60008261380257634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061382660a083018661376c565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561385857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220870fea2d3de03457871c2ae286bad0d9d0218ba2efad8347f7315c208493e39764736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572