0x6080604052600436106102b15760003560e01c80637ecebe0011610175578063ae10dfd3116100dc578063d0aa7abe11610095578063dd62ed3e1161006f578063dd62ed3e146108c1578063df8408fe14610907578063e7a324dc14610927578063f1127ed81461095b57600080fd5b8063d0aa7abe14610896578063d4c989d314610571578063db05e5cb146108ac57600080fd5b8063ae10dfd3146107d1578063b4b5ea57146107f1578063bfd7928414610811578063c2eacda614610841578063c816841b14610861578063c9567bf91461088157600080fd5b80639f9a4e7f1161012e5780639f9a4e7f14610727578063a457c2d714610747578063a9059cbb14610767578063a9e7572314610787578063aa4bde281461079c578063aacebbe3146107b157600080fd5b80637ecebe00146106645780637f51bb1f146106915780638da5cb5b146106b1578063902d55a5146106cf57806395d89b41146106e557806399e0b2e7146106fa57600080fd5b806351bc3c851161021957806369284f16116101d257806369284f16146105715780636fcfff451461059157806370a08231146105d9578063715018a61461060f578063735de9f714610624578063782d6fe11461064457600080fd5b806351bc3c85146104645780635342acb414610479578063587cde1e146104b257806362e546f91461050357806363f5410114610518578063658c27a91461053857600080fd5b80631816467f1161026b5780631816467f1461039457806320606b70146103b457806323b872dd146103e8578063313ce5671461040857806331c2d84714610424578063395093511461044457600080fd5b8062dc1297146102bd578063026e402b146102f157806306d8eb1a1461031357806306fdde0314610333578063095ea7b31461035557806318160ddd1461037557600080fd5b366102b857005b600080fd5b3480156102c957600080fd5b506012546102dc90610100900460ff1681565b60405190151581526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612938565b6109bf565b005b34801561031f57600080fd5b5061031161032e366004612976565b6109ce565b34801561033f57600080fd5b50610348610abe565b6040516102e891906129b9565b34801561036157600080fd5b506102dc610370366004612938565b610b50565b34801561038157600080fd5b506002545b6040519081526020016102e8565b3480156103a057600080fd5b506103116103af366004612a07565b610b67565b3480156103c057600080fd5b506103867f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b3480156103f457600080fd5b506102dc610403366004612a24565b610bb3565b34801561041457600080fd5b50604051601281526020016102e8565b34801561043057600080fd5b5061031161043f366004612a7b565b610c64565b34801561045057600080fd5b506102dc61045f366004612938565b610cfe565b34801561047057600080fd5b50610311610d35565b34801561048557600080fd5b506102dc610494366004612a07565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156104be57600080fd5b506104eb6104cd366004612a07565b6001600160a01b039081166000908152601660205260409020541690565b6040516001600160a01b0390911681526020016102e8565b34801561050f57600080fd5b50610311610d69565b34801561052457600080fd5b50610311610533366004612976565b610dcd565b34801561054457600080fd5b506102dc610553366004612a07565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561057d57600080fd5b5061031161058c366004612b50565b610eb3565b34801561059d57600080fd5b506105c46105ac366004612a07565b60186020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016102e8565b3480156105e557600080fd5b506103866105f4366004612a07565b6001600160a01b031660009081526020819052604090205490565b34801561061b57600080fd5b50610311610f08565b34801561063057600080fd5b50600a546104eb906001600160a01b031681565b34801561065057600080fd5b5061038661065f366004612938565b610f7c565b34801561067057600080fd5b5061038661067f366004612a07565b60196020526000908152604090205481565b34801561069d57600080fd5b506103116106ac366004612a07565b6111de565b3480156106bd57600080fd5b506005546001600160a01b03166104eb565b3480156106db57600080fd5b5061038660065481565b3480156106f157600080fd5b5061034861122a565b34801561070657600080fd5b50610386610715366004612a07565b600f6020526000908152604090205481565b34801561073357600080fd5b50610311610742366004612b85565b611239565b34801561075357600080fd5b506102dc610762366004612938565b61127d565b34801561077357600080fd5b506102dc610782366004612938565b611318565b34801561079357600080fd5b50610386611325565b3480156107a857600080fd5b5061038661135d565b3480156107bd57600080fd5b506103116107cc366004612a07565b611384565b3480156107dd57600080fd5b506103116107ec366004612ba0565b6113d0565b3480156107fd57600080fd5b5061038661080c366004612a07565b61167f565b34801561081d57600080fd5b506102dc61082c366004612a07565b60116020526000908152604090205460ff1681565b34801561084d57600080fd5b506010546104eb906001600160a01b031681565b34801561086d57600080fd5b50600b546104eb906001600160a01b031681565b34801561088d57600080fd5b506103116116f4565b3480156108a257600080fd5b5061038660085481565b3480156108b857600080fd5b50610311611756565b3480156108cd57600080fd5b506103866108dc366004612c02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561091357600080fd5b50610311610922366004612b50565b6117b8565b34801561093357600080fd5b506103867fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b34801561096757600080fd5b506109a3610976366004612c3b565b60176020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016102e8565b6109ca338383611825565b5050565b6005546001600160a01b03163314610a015760405162461bcd60e51b81526004016109f890612c72565b60405180910390fd5b6101f481610a0f8486612cbd565b610a199190612cbd565b61ffff161115610a6b5760405162461bcd60e51b815260206004820152601d60248201527f5b757064617465427579466565735d3a2077726f6e672076616c75657300000060448201526064016109f8565b6007805465ffffffff000019166201000061ffff9586160265ffff00000000191617640100000000938516939093029290921767ffff000000000000191666010000000000009190931602919091179055565b606060038054610acd90612cdf565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990612cdf565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b5050505050905090565b6000610b5d3384846118f1565b5060015b92915050565b6005546001600160a01b03163314610b915760405162461bcd60e51b81526004016109f890612c72565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bc0848484611a15565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c455760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109f8565b610c598533610c548685612d19565b6118f1565b506001949350505050565b6005546001600160a01b03163314610c8e5760405162461bcd60e51b81526004016109f890612c72565b60005b81518161ffff1610156109ca57600060116000848461ffff1681518110610cba57610cba612d2c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cf681612d42565b915050610c91565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b5d918590610c54908690612d63565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b81526004016109f890612c72565b610d67611f26565b565b6005546001600160a01b03163314610d935760405162461bcd60e51b81526004016109f890612c72565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156109ca573d6000803e3d6000fd5b6005546001600160a01b03163314610df75760405162461bcd60e51b81526004016109f890612c72565b61025881610e058486612cbd565b610e0f9190612cbd565b61ffff161115610e615760405162461bcd60e51b815260206004820152601e60248201527f5b75706461746553656c6c466565735d3a2077726f6e672076616c756573000060448201526064016109f8565b600780546bffffffff00000000000000001916600160401b61ffff9586160261ffff60501b191617600160501b938516939093029290921761ffff60601b1916600160601b9190931602919091179055565b6005546001600160a01b03163314610edd5760405162461bcd60e51b81526004016109f890612c72565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f325760405162461bcd60e51b81526004016109f890612c72565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6000438210610fd75760405162461bcd60e51b815260206004820152602160248201527f6765745072696f72566f7465733a206e6f74207965742064657465726d696e656044820152601960fa1b60648201526084016109f8565b6001600160a01b03831660009081526018602052604081205463ffffffff1690819003611008576000915050610b61565b6001600160a01b0384166000908152601760205260408120849161102d600185612d76565b63ffffffff90811682526020820192909252604001600020541611611096576001600160a01b038416600090815260176020526040812090611070600184612d76565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610b61565b6001600160a01b038416600090815260176020908152604080832083805290915290205463ffffffff168310156110d1576000915050610b61565b6000806110df600184612d76565b90505b8163ffffffff168163ffffffff1611156111a757600060026111048484612d76565b61110e9190612da9565b6111189083612d76565b6001600160a01b038816600090815260176020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087900361117b57602001519450610b619350505050565b805163ffffffff16871115611192578193506111a0565b61119d600183612d76565b92505b50506110e2565b506001600160a01b038516600090815260176020908152604080832063ffffffff9094168352929052206001015491505092915050565b6005546001600160a01b031633146112085760405162461bcd60e51b81526004016109f890612c72565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610acd90612cdf565b6005546001600160a01b031633146112635760405162461bcd60e51b81526004016109f890612c72565b601280549115156101000261ff0019909216919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109f8565b61130e3385610c548685612d19565b5060019392505050565b6000610b5d338484611a15565b6007546000906113589061ffff8082169161135291600160701b9091041661134c60025490565b9061180d565b90611819565b905090565b6007546000906113589061ffff8082169161135291600160801b9091041661134c60025490565b6005546001600160a01b031633146113ae5760405162461bcd60e51b81526004016109f890612c72565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666113fb610abe565b805160209182012060408051808401949094528381019190915230606080850191909152815180850390910181526080840182528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60a08501526001600160a01b038b1660c085015260e084018a90526101008085018a90528251808603909101815261012085019092528151919092012061190160f01b61014084015261014283018290526101628301819052909250906000906101820160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611525573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115935760405162461bcd60e51b815260206004820152602260248201527f62795369676e617475726543616c6c3a20696e76616c6964207369676e617475604482015261726560f01b60648201526084016109f8565b6001600160a01b03811660009081526019602052604081208054916115b783612dcc565b9190505589146116095760405162461bcd60e51b815260206004820152601e60248201527f62795369676e617475726543616c6c3a20696e76616c6964206e6f6e6365000060448201526064016109f8565b874211156116645760405162461bcd60e51b815260206004820152602260248201527f62795369676e617475726543616c6c3a207369676e6174757265206578706972604482015261195960f21b60648201526084016109f8565b611672818b8960ff16611825565b505050505b505050505050565b6001600160a01b03811660009081526018602052604081205463ffffffff16806116aa5760006116ed565b6001600160a01b0383166000908152601760205260408120906116ce600184612d76565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b6005546001600160a01b0316331461171e5760405162461bcd60e51b81526004016109f890612c72565b6015805460ff191660011790556012805461ff001916610100179055600780546219001960731b63ffffffff60701b19909116179055565b6005546001600160a01b031633146117805760405162461bcd60e51b81526004016109f890612c72565b6007805463ffffffff60701b19811661ffff60801b1961ffff928316600160701b810291821692909217921617600160801b02179055565b6005546001600160a01b031633146117e25760405162461bcd60e51b81526004016109f890612c72565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60006116ed8284612de5565b60006116ed8284612dfc565b6001600160a01b0383811660009081526020818152604080832054601683528184205460139093529220549192169060ff1615611885576001600160a01b0380851660009081526001602090815260408083209389168352929052208390555b6001600160a01b0385811660008181526016602052604080822080546001600160a01b03191689861690811790915590519093851692917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f91a46118ea818584612293565b5050505050565b6001600160a01b0383166119535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109f8565b6001600160a01b0382166119b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60155460ff16158015611a3657506005546001600160a01b03848116911614155b8015611a5057506005546001600160a01b03838116911614155b8015611a6a5750600a546001600160a01b03848116911614155b15611a93576001600160a01b0383166000908152601160205260409020805460ff191660011790555b600b546001600160a01b0390811690841603611ae9576001600160a01b0382166000908152600f60205260408120549003611ae4576001600160a01b0382166000908152600f602052604090204290555b611b0f565b60125460ff16611b0f57601080546001600160a01b0319166001600160a01b0385161790555b6001600160a01b03831660009081526011602052604090205460ff16158015611b5157506001600160a01b03821660009081526011602052604090205460ff16155b611b9d5760405162461bcd60e51b815260206004820181905260248201527f5b5f7472616e736665725d3a20626c61636b6c6973746564206164647265737360448201526064016109f8565b60125460ff6101009091041615156001148015611bbd575060125460ff16155b8015611bd35750600a546001600160a01b031615155b8015611be95750600b546001600160a01b031615155b8015611c035750600b546001600160a01b03848116911614155b8015611c2857506001600160a01b03831660009081526013602052604090205460ff16155b8015611c4d57506001600160a01b03821660009081526013602052604090205460ff16155b15611c5a57611c5a611f26565b6001600160a01b03831660009081526014602052604090205460ff16611cdb57611c82611325565b811115611cdb5760405162461bcd60e51b815260206004820152602160248201527f5b5f7472616e736665725d3a20657863656564206d617820747820616d6f756e6044820152601d60fa1b60648201526084016109f8565b6001600160a01b03821660009081526014602052604090205460ff16611db957600b546001600160a01b03838116911614801590611d275750600a546001600160a01b03838116911614155b15611db957611d3461135d565b611d5d82611d57856001600160a01b031660009081526020819052604090205490565b906123f2565b1115611db95760405162461bcd60e51b815260206004820152602560248201527f5b5f7472616e736665725d3a20657863656564206d61782077616c6c657420616044820152641b5bdd5b9d60da1b60648201526084016109f8565b6001600160a01b03831660009081526013602052604090205460ff1615611dea57611de58383836123fe565b505050565b600b546001600160a01b0390811690841603611eb457600754600090611e239061ffff808216916113529186916201000090041661180d565b600754909150600090611e4b9061ffff8082169161135291879164010000000090041661180d565b600754909150600090611e759061ffff80821691611352918891660100000000000090041661180d565b9050611e8f611e8882611d5786866123f2565b85906125d6565b9350611e9c8686866123fe565b6116778630611eaf84611d5788886123f2565b6123fe565b600754600090611ed89061ffff80821691611352918691600160401b90041661180d565b600754909150600090611eff9061ffff80821691611352918791600160501b90041661180d565b600754909150600090611e759061ffff80821691611352918891600160601b90041661180d565b6012805460ff1916600117905530600090815260208190526040902054600854611f51906015612de5565b811115611f6957600854611f66906015612de5565b90505b611f72816125e2565b6007544790600090819061ffff600160601b8204811691611fa491600160501b8204811691600160401b900416612cbd565b611fae9190612cbd565b60075461ffff9182169250600091611fd6918491611352918891600160401b9091041661180d565b600754909150600090611ffb908490611352908890600160501b900461ffff1661180d565b600754909150600090612020908590611352908990600160601b900461ffff1661180d565b9050858161202e8486612d63565b6120389190612d63565b11156120915760405162461bcd60e51b815260206004820152602260248201527f5b73776170416e6457697468647261775d3a206469766964656e64732065727260448201526137b960f11b60648201526084016109f8565b600c546040516001600160a01b03909116908490600081818185875af1925050503d80600081146120de576040519150601f19603f3d011682016040523d82523d6000602084013e6120e3565b606091505b505080955050846121365760405162461bcd60e51b815260206004820152601860248201527f7472616e736665722066656520746f20646576207465616d000000000000000060448201526064016109f8565b600d546040516001600160a01b03909116908390600081818185875af1925050503d8060008114612183576040519150601f19603f3d011682016040523d82523d6000602084013e612188565b606091505b505080955050846121db5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066656520746f206d61726b6574696e67207465616d000060448201526064016109f8565b600e546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612228576040519150601f19603f3d011682016040523d82523d6000602084013e61222d565b606091505b505080955050846122805760405162461bcd60e51b815260206004820152601860248201527f7472616e736665722066656520746f20666f756e64657273000000000000000060448201526064016109f8565b50506012805460ff191690555050505050565b816001600160a01b0316836001600160a01b0316141580156122b55750600081115b15611de5576001600160a01b03831615612358576001600160a01b03831660009081526018602052604081205463ffffffff1690816122f5576000612338565b6001600160a01b038516600090815260176020526040812090612319600185612d76565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061234682856125d6565b90506123548684848461273e565b5050505b6001600160a01b03821615611de5576001600160a01b03821660009081526018602052604081205463ffffffff1690816123935760006123d6565b6001600160a01b0384166000908152601760205260408120906123b7600185612d76565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006123e482856123f2565b90506116778584848461273e565b60006116ed8284612d63565b6001600160a01b0383166124625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f8565b6001600160a01b0382166124c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f8565b6001600160a01b0383166000908152602081905260409020548181101561253c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109f8565b6125468282612d19565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061257c908490612d63565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c891815260200190565b60405180910390a350505050565b60006116ed8284612d19565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261757612617612d2c565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190612e10565b816001815181106126a7576126a7612d2c565b6001600160a01b039283166020918202929092010152600a546126cd91309116846118f1565b600a546001600160a01b031663791ac94783600084306126f04262015180612d63565b6040518663ffffffff1660e01b8152600401612710959493929190612e2d565b600060405180830381600087803b15801561272a57600080fd5b505af1158015611677573d6000803e3d6000fd5b600061276243604051806060016040528060338152602001612ebc603391396128e0565b905060008463ffffffff161180156127bc57506001600160a01b038516600090815260176020526040812063ffffffff8316916127a0600188612d76565b63ffffffff908116825260208201929092526040016000205416145b15612805576001600160a01b038516600090815260176020526040812083916127e6600188612d76565b63ffffffff168152602081019190915260400160002060010155612895565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601783528581208a851682529092529390209151825463ffffffff191691161781559051600191820155612864908590612e9e565b6001600160a01b0386166000908152601860205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60008164010000000084106129085760405162461bcd60e51b81526004016109f891906129b9565b509192915050565b6001600160a01b038116811461292557600080fd5b50565b803561293381612910565b919050565b6000806040838503121561294b57600080fd5b823561295681612910565b946020939093013593505050565b803561ffff8116811461293357600080fd5b60008060006060848603121561298b57600080fd5b61299484612964565b92506129a260208501612964565b91506129b060408501612964565b90509250925092565b600060208083528351808285015260005b818110156129e6578581018301518582016040015282016129ca565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612a1957600080fd5b81356116ed81612910565b600080600060608486031215612a3957600080fd5b8335612a4481612910565b92506020840135612a5481612910565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215612a8e57600080fd5b823567ffffffffffffffff80821115612aa657600080fd5b818501915085601f830112612aba57600080fd5b813581811115612acc57612acc612a65565b8060051b604051601f19603f83011681018181108582111715612af157612af1612a65565b604052918252848201925083810185019188831115612b0f57600080fd5b938501935b82851015612b3457612b2585612928565b84529385019392850192612b14565b98975050505050505050565b8035801515811461293357600080fd5b60008060408385031215612b6357600080fd5b8235612b6e81612910565b9150612b7c60208401612b40565b90509250929050565b600060208284031215612b9757600080fd5b6116ed82612b40565b60008060008060008060c08789031215612bb957600080fd5b8635612bc481612910565b95506020870135945060408701359350606087013560ff81168114612be857600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215612c1557600080fd5b8235612c2081612910565b91506020830135612c3081612910565b809150509250929050565b60008060408385031215612c4e57600080fd5b8235612c5981612910565b9150602083013563ffffffff81168114612c3057600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115612cd857612cd8612ca7565b5092915050565b600181811c90821680612cf357607f821691505b602082108103612d1357634e487b7160e01b600052602260045260246000fd5b50919050565b81810381811115610b6157610b61612ca7565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103612d5957612d59612ca7565b6001019392505050565b80820180821115610b6157610b61612ca7565b63ffffffff828116828216039080821115612cd857612cd8612ca7565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680612dc057612dc0612d93565b92169190910492915050565b600060018201612dde57612dde612ca7565b5060010190565b8082028115828204841417610b6157610b61612ca7565b600082612e0b57612e0b612d93565b500490565b600060208284031215612e2257600080fd5b81516116ed81612910565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e7d5784516001600160a01b031683529383019391830191600101612e58565b50506001600160a01b03969096166060850152505050608001529392505050565b63ffffffff818116838216019080821115612cd857612cd8612ca756fe5f676f7665726e616e6365436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212201d291da4ed3b71537c67d41e0fe3fb0a8aa09895fde52676b2c762e1892e944d64736f6c63430008110033
0x6080604052600780546001600160901b03191670c800c800c800c8003200c80064006427101790556012805461ff00191690556015805460ff191690553480156200004957600080fd5b5060405162003693380380620036938339810160408190526200006c9162000514565b60405180604001604052806008815260200167417373657469667960c01b8152506040518060400160405280600381526020016241545960e81b8152508160039081620000ba91906200060c565b506004620000c982826200060c565b5050506000620000de620003e160201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200014084670de0b6b3a7640000620006ee565b600681905560078054620001819261ffff909116916200016d9190620003e5602090811b6200180d17901c565b620003fc60201b620018191790919060201c565b600855600654620001949033906200040a565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000212919062000708565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000286919062000708565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa919062000708565b600b80546001600160a01b03199081166001600160a01b0393841617909155600d80548216968316969096178655600c80548216958316959095178555600e80548216948316949094178455600a805490911692821692909217909155306000818152601360209081526040808320805460ff19908116600190811790925598548616845281842080548a16821790559654851683528083208054891688179055945490931681528381208054871686179055338082528482208054881687179055918152601490925282822080548616851790558152208054909216179055506200075f565b3390565b6000620003f38284620006ee565b90505b92915050565b6000620003f3828462000726565b6001600160a01b038216620004655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000479919062000749565b90915550506001600160a01b03821660009081526020819052604081208054839290620004a890849062000749565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b80516001600160a01b03811681146200050f57600080fd5b919050565b600080600080608085870312156200052b57600080fd5b845193506200053d60208601620004f7565b92506200054d60408601620004f7565b91506200055d60608601620004f7565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200059357607f821691505b602082108103620005b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004f257600081815260208120601f850160051c81016020861015620005e35750805b601f850160051c820191505b818110156200060457828155600101620005ef565b505050505050565b81516001600160401b0381111562000628576200062862000568565b62000640816200063984546200057e565b84620005ba565b602080601f8311600181146200067857600084156200065f5750858301515b600019600386901b1c1916600185901b17855562000604565b600085815260208120601f198616915b82811015620006a95788860151825594840194600190910190840162000688565b5085821015620006c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620003f657620003f6620006d8565b6000602082840312156200071b57600080fd5b620003f382620004f7565b6000826200074457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620003f657620003f6620006d8565b612f24806200076f6000396000f3fe6080604052600436106102b15760003560e01c80637ecebe0011610175578063ae10dfd3116100dc578063d0aa7abe11610095578063dd62ed3e1161006f578063dd62ed3e146108c1578063df8408fe14610907578063e7a324dc14610927578063f1127ed81461095b57600080fd5b8063d0aa7abe14610896578063d4c989d314610571578063db05e5cb146108ac57600080fd5b8063ae10dfd3146107d1578063b4b5ea57146107f1578063bfd7928414610811578063c2eacda614610841578063c816841b14610861578063c9567bf91461088157600080fd5b80639f9a4e7f1161012e5780639f9a4e7f14610727578063a457c2d714610747578063a9059cbb14610767578063a9e7572314610787578063aa4bde281461079c578063aacebbe3146107b157600080fd5b80637ecebe00146106645780637f51bb1f146106915780638da5cb5b146106b1578063902d55a5146106cf57806395d89b41146106e557806399e0b2e7146106fa57600080fd5b806351bc3c851161021957806369284f16116101d257806369284f16146105715780636fcfff451461059157806370a08231146105d9578063715018a61461060f578063735de9f714610624578063782d6fe11461064457600080fd5b806351bc3c85146104645780635342acb414610479578063587cde1e146104b257806362e546f91461050357806363f5410114610518578063658c27a91461053857600080fd5b80631816467f1161026b5780631816467f1461039457806320606b70146103b457806323b872dd146103e8578063313ce5671461040857806331c2d84714610424578063395093511461044457600080fd5b8062dc1297146102bd578063026e402b146102f157806306d8eb1a1461031357806306fdde0314610333578063095ea7b31461035557806318160ddd1461037557600080fd5b366102b857005b600080fd5b3480156102c957600080fd5b506012546102dc90610100900460ff1681565b60405190151581526020015b60405180910390f35b3480156102fd57600080fd5b5061031161030c366004612938565b6109bf565b005b34801561031f57600080fd5b5061031161032e366004612976565b6109ce565b34801561033f57600080fd5b50610348610abe565b6040516102e891906129b9565b34801561036157600080fd5b506102dc610370366004612938565b610b50565b34801561038157600080fd5b506002545b6040519081526020016102e8565b3480156103a057600080fd5b506103116103af366004612a07565b610b67565b3480156103c057600080fd5b506103867f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b3480156103f457600080fd5b506102dc610403366004612a24565b610bb3565b34801561041457600080fd5b50604051601281526020016102e8565b34801561043057600080fd5b5061031161043f366004612a7b565b610c64565b34801561045057600080fd5b506102dc61045f366004612938565b610cfe565b34801561047057600080fd5b50610311610d35565b34801561048557600080fd5b506102dc610494366004612a07565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156104be57600080fd5b506104eb6104cd366004612a07565b6001600160a01b039081166000908152601660205260409020541690565b6040516001600160a01b0390911681526020016102e8565b34801561050f57600080fd5b50610311610d69565b34801561052457600080fd5b50610311610533366004612976565b610dcd565b34801561054457600080fd5b506102dc610553366004612a07565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561057d57600080fd5b5061031161058c366004612b50565b610eb3565b34801561059d57600080fd5b506105c46105ac366004612a07565b60186020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016102e8565b3480156105e557600080fd5b506103866105f4366004612a07565b6001600160a01b031660009081526020819052604090205490565b34801561061b57600080fd5b50610311610f08565b34801561063057600080fd5b50600a546104eb906001600160a01b031681565b34801561065057600080fd5b5061038661065f366004612938565b610f7c565b34801561067057600080fd5b5061038661067f366004612a07565b60196020526000908152604090205481565b34801561069d57600080fd5b506103116106ac366004612a07565b6111de565b3480156106bd57600080fd5b506005546001600160a01b03166104eb565b3480156106db57600080fd5b5061038660065481565b3480156106f157600080fd5b5061034861122a565b34801561070657600080fd5b50610386610715366004612a07565b600f6020526000908152604090205481565b34801561073357600080fd5b50610311610742366004612b85565b611239565b34801561075357600080fd5b506102dc610762366004612938565b61127d565b34801561077357600080fd5b506102dc610782366004612938565b611318565b34801561079357600080fd5b50610386611325565b3480156107a857600080fd5b5061038661135d565b3480156107bd57600080fd5b506103116107cc366004612a07565b611384565b3480156107dd57600080fd5b506103116107ec366004612ba0565b6113d0565b3480156107fd57600080fd5b5061038661080c366004612a07565b61167f565b34801561081d57600080fd5b506102dc61082c366004612a07565b60116020526000908152604090205460ff1681565b34801561084d57600080fd5b506010546104eb906001600160a01b031681565b34801561086d57600080fd5b50600b546104eb906001600160a01b031681565b34801561088d57600080fd5b506103116116f4565b3480156108a257600080fd5b5061038660085481565b3480156108b857600080fd5b50610311611756565b3480156108cd57600080fd5b506103866108dc366004612c02565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561091357600080fd5b50610311610922366004612b50565b6117b8565b34801561093357600080fd5b506103867fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b34801561096757600080fd5b506109a3610976366004612c3b565b60176020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff90931683526020830191909152016102e8565b6109ca338383611825565b5050565b6005546001600160a01b03163314610a015760405162461bcd60e51b81526004016109f890612c72565b60405180910390fd5b6101f481610a0f8486612cbd565b610a199190612cbd565b61ffff161115610a6b5760405162461bcd60e51b815260206004820152601d60248201527f5b757064617465427579466565735d3a2077726f6e672076616c75657300000060448201526064016109f8565b6007805465ffffffff000019166201000061ffff9586160265ffff00000000191617640100000000938516939093029290921767ffff000000000000191666010000000000009190931602919091179055565b606060038054610acd90612cdf565b80601f0160208091040260200160405190810160405280929190818152602001828054610af990612cdf565b8015610b465780601f10610b1b57610100808354040283529160200191610b46565b820191906000526020600020905b815481529060010190602001808311610b2957829003601f168201915b5050505050905090565b6000610b5d3384846118f1565b5060015b92915050565b6005546001600160a01b03163314610b915760405162461bcd60e51b81526004016109f890612c72565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bc0848484611a15565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c455760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109f8565b610c598533610c548685612d19565b6118f1565b506001949350505050565b6005546001600160a01b03163314610c8e5760405162461bcd60e51b81526004016109f890612c72565b60005b81518161ffff1610156109ca57600060116000848461ffff1681518110610cba57610cba612d2c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610cf681612d42565b915050610c91565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610b5d918590610c54908690612d63565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b81526004016109f890612c72565b610d67611f26565b565b6005546001600160a01b03163314610d935760405162461bcd60e51b81526004016109f890612c72565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156109ca573d6000803e3d6000fd5b6005546001600160a01b03163314610df75760405162461bcd60e51b81526004016109f890612c72565b61025881610e058486612cbd565b610e0f9190612cbd565b61ffff161115610e615760405162461bcd60e51b815260206004820152601e60248201527f5b75706461746553656c6c466565735d3a2077726f6e672076616c756573000060448201526064016109f8565b600780546bffffffff00000000000000001916600160401b61ffff9586160261ffff60501b191617600160501b938516939093029290921761ffff60601b1916600160601b9190931602919091179055565b6005546001600160a01b03163314610edd5760405162461bcd60e51b81526004016109f890612c72565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f325760405162461bcd60e51b81526004016109f890612c72565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6000438210610fd75760405162461bcd60e51b815260206004820152602160248201527f6765745072696f72566f7465733a206e6f74207965742064657465726d696e656044820152601960fa1b60648201526084016109f8565b6001600160a01b03831660009081526018602052604081205463ffffffff1690819003611008576000915050610b61565b6001600160a01b0384166000908152601760205260408120849161102d600185612d76565b63ffffffff90811682526020820192909252604001600020541611611096576001600160a01b038416600090815260176020526040812090611070600184612d76565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610b61565b6001600160a01b038416600090815260176020908152604080832083805290915290205463ffffffff168310156110d1576000915050610b61565b6000806110df600184612d76565b90505b8163ffffffff168163ffffffff1611156111a757600060026111048484612d76565b61110e9190612da9565b6111189083612d76565b6001600160a01b038816600090815260176020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087900361117b57602001519450610b619350505050565b805163ffffffff16871115611192578193506111a0565b61119d600183612d76565b92505b50506110e2565b506001600160a01b038516600090815260176020908152604080832063ffffffff9094168352929052206001015491505092915050565b6005546001600160a01b031633146112085760405162461bcd60e51b81526004016109f890612c72565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610acd90612cdf565b6005546001600160a01b031633146112635760405162461bcd60e51b81526004016109f890612c72565b601280549115156101000261ff0019909216919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109f8565b61130e3385610c548685612d19565b5060019392505050565b6000610b5d338484611a15565b6007546000906113589061ffff8082169161135291600160701b9091041661134c60025490565b9061180d565b90611819565b905090565b6007546000906113589061ffff8082169161135291600160801b9091041661134c60025490565b6005546001600160a01b031633146113ae5760405162461bcd60e51b81526004016109f890612c72565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666113fb610abe565b805160209182012060408051808401949094528381019190915230606080850191909152815180850390910181526080840182528051908301207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60a08501526001600160a01b038b1660c085015260e084018a90526101008085018a90528251808603909101815261012085019092528151919092012061190160f01b61014084015261014283018290526101628301819052909250906000906101820160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611525573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115935760405162461bcd60e51b815260206004820152602260248201527f62795369676e617475726543616c6c3a20696e76616c6964207369676e617475604482015261726560f01b60648201526084016109f8565b6001600160a01b03811660009081526019602052604081208054916115b783612dcc565b9190505589146116095760405162461bcd60e51b815260206004820152601e60248201527f62795369676e617475726543616c6c3a20696e76616c6964206e6f6e6365000060448201526064016109f8565b874211156116645760405162461bcd60e51b815260206004820152602260248201527f62795369676e617475726543616c6c3a207369676e6174757265206578706972604482015261195960f21b60648201526084016109f8565b611672818b8960ff16611825565b505050505b505050505050565b6001600160a01b03811660009081526018602052604081205463ffffffff16806116aa5760006116ed565b6001600160a01b0383166000908152601760205260408120906116ce600184612d76565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b6005546001600160a01b0316331461171e5760405162461bcd60e51b81526004016109f890612c72565b6015805460ff191660011790556012805461ff001916610100179055600780546219001960731b63ffffffff60701b19909116179055565b6005546001600160a01b031633146117805760405162461bcd60e51b81526004016109f890612c72565b6007805463ffffffff60701b19811661ffff60801b1961ffff928316600160701b810291821692909217921617600160801b02179055565b6005546001600160a01b031633146117e25760405162461bcd60e51b81526004016109f890612c72565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60006116ed8284612de5565b60006116ed8284612dfc565b6001600160a01b0383811660009081526020818152604080832054601683528184205460139093529220549192169060ff1615611885576001600160a01b0380851660009081526001602090815260408083209389168352929052208390555b6001600160a01b0385811660008181526016602052604080822080546001600160a01b03191689861690811790915590519093851692917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f91a46118ea818584612293565b5050505050565b6001600160a01b0383166119535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109f8565b6001600160a01b0382166119b45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60155460ff16158015611a3657506005546001600160a01b03848116911614155b8015611a5057506005546001600160a01b03838116911614155b8015611a6a5750600a546001600160a01b03848116911614155b15611a93576001600160a01b0383166000908152601160205260409020805460ff191660011790555b600b546001600160a01b0390811690841603611ae9576001600160a01b0382166000908152600f60205260408120549003611ae4576001600160a01b0382166000908152600f602052604090204290555b611b0f565b60125460ff16611b0f57601080546001600160a01b0319166001600160a01b0385161790555b6001600160a01b03831660009081526011602052604090205460ff16158015611b5157506001600160a01b03821660009081526011602052604090205460ff16155b611b9d5760405162461bcd60e51b815260206004820181905260248201527f5b5f7472616e736665725d3a20626c61636b6c6973746564206164647265737360448201526064016109f8565b60125460ff6101009091041615156001148015611bbd575060125460ff16155b8015611bd35750600a546001600160a01b031615155b8015611be95750600b546001600160a01b031615155b8015611c035750600b546001600160a01b03848116911614155b8015611c2857506001600160a01b03831660009081526013602052604090205460ff16155b8015611c4d57506001600160a01b03821660009081526013602052604090205460ff16155b15611c5a57611c5a611f26565b6001600160a01b03831660009081526014602052604090205460ff16611cdb57611c82611325565b811115611cdb5760405162461bcd60e51b815260206004820152602160248201527f5b5f7472616e736665725d3a20657863656564206d617820747820616d6f756e6044820152601d60fa1b60648201526084016109f8565b6001600160a01b03821660009081526014602052604090205460ff16611db957600b546001600160a01b03838116911614801590611d275750600a546001600160a01b03838116911614155b15611db957611d3461135d565b611d5d82611d57856001600160a01b031660009081526020819052604090205490565b906123f2565b1115611db95760405162461bcd60e51b815260206004820152602560248201527f5b5f7472616e736665725d3a20657863656564206d61782077616c6c657420616044820152641b5bdd5b9d60da1b60648201526084016109f8565b6001600160a01b03831660009081526013602052604090205460ff1615611dea57611de58383836123fe565b505050565b600b546001600160a01b0390811690841603611eb457600754600090611e239061ffff808216916113529186916201000090041661180d565b600754909150600090611e4b9061ffff8082169161135291879164010000000090041661180d565b600754909150600090611e759061ffff80821691611352918891660100000000000090041661180d565b9050611e8f611e8882611d5786866123f2565b85906125d6565b9350611e9c8686866123fe565b6116778630611eaf84611d5788886123f2565b6123fe565b600754600090611ed89061ffff80821691611352918691600160401b90041661180d565b600754909150600090611eff9061ffff80821691611352918791600160501b90041661180d565b600754909150600090611e759061ffff80821691611352918891600160601b90041661180d565b6012805460ff1916600117905530600090815260208190526040902054600854611f51906015612de5565b811115611f6957600854611f66906015612de5565b90505b611f72816125e2565b6007544790600090819061ffff600160601b8204811691611fa491600160501b8204811691600160401b900416612cbd565b611fae9190612cbd565b60075461ffff9182169250600091611fd6918491611352918891600160401b9091041661180d565b600754909150600090611ffb908490611352908890600160501b900461ffff1661180d565b600754909150600090612020908590611352908990600160601b900461ffff1661180d565b9050858161202e8486612d63565b6120389190612d63565b11156120915760405162461bcd60e51b815260206004820152602260248201527f5b73776170416e6457697468647261775d3a206469766964656e64732065727260448201526137b960f11b60648201526084016109f8565b600c546040516001600160a01b03909116908490600081818185875af1925050503d80600081146120de576040519150601f19603f3d011682016040523d82523d6000602084013e6120e3565b606091505b505080955050846121365760405162461bcd60e51b815260206004820152601860248201527f7472616e736665722066656520746f20646576207465616d000000000000000060448201526064016109f8565b600d546040516001600160a01b03909116908390600081818185875af1925050503d8060008114612183576040519150601f19603f3d011682016040523d82523d6000602084013e612188565b606091505b505080955050846121db5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066656520746f206d61726b6574696e67207465616d000060448201526064016109f8565b600e546040516001600160a01b03909116908290600081818185875af1925050503d8060008114612228576040519150601f19603f3d011682016040523d82523d6000602084013e61222d565b606091505b505080955050846122805760405162461bcd60e51b815260206004820152601860248201527f7472616e736665722066656520746f20666f756e64657273000000000000000060448201526064016109f8565b50506012805460ff191690555050505050565b816001600160a01b0316836001600160a01b0316141580156122b55750600081115b15611de5576001600160a01b03831615612358576001600160a01b03831660009081526018602052604081205463ffffffff1690816122f5576000612338565b6001600160a01b038516600090815260176020526040812090612319600185612d76565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600061234682856125d6565b90506123548684848461273e565b5050505b6001600160a01b03821615611de5576001600160a01b03821660009081526018602052604081205463ffffffff1690816123935760006123d6565b6001600160a01b0384166000908152601760205260408120906123b7600185612d76565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006123e482856123f2565b90506116778584848461273e565b60006116ed8284612d63565b6001600160a01b0383166124625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109f8565b6001600160a01b0382166124c45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109f8565b6001600160a01b0383166000908152602081905260409020548181101561253c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109f8565b6125468282612d19565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061257c908490612d63565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c891815260200190565b60405180910390a350505050565b60006116ed8284612d19565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261757612617612d2c565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190612e10565b816001815181106126a7576126a7612d2c565b6001600160a01b039283166020918202929092010152600a546126cd91309116846118f1565b600a546001600160a01b031663791ac94783600084306126f04262015180612d63565b6040518663ffffffff1660e01b8152600401612710959493929190612e2d565b600060405180830381600087803b15801561272a57600080fd5b505af1158015611677573d6000803e3d6000fd5b600061276243604051806060016040528060338152602001612ebc603391396128e0565b905060008463ffffffff161180156127bc57506001600160a01b038516600090815260176020526040812063ffffffff8316916127a0600188612d76565b63ffffffff908116825260208201929092526040016000205416145b15612805576001600160a01b038516600090815260176020526040812083916127e6600188612d76565b63ffffffff168152602081019190915260400160002060010155612895565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601783528581208a851682529092529390209151825463ffffffff191691161781559051600191820155612864908590612e9e565b6001600160a01b0386166000908152601860205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b60008164010000000084106129085760405162461bcd60e51b81526004016109f891906129b9565b509192915050565b6001600160a01b038116811461292557600080fd5b50565b803561293381612910565b919050565b6000806040838503121561294b57600080fd5b823561295681612910565b946020939093013593505050565b803561ffff8116811461293357600080fd5b60008060006060848603121561298b57600080fd5b61299484612964565b92506129a260208501612964565b91506129b060408501612964565b90509250925092565b600060208083528351808285015260005b818110156129e6578581018301518582016040015282016129ca565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612a1957600080fd5b81356116ed81612910565b600080600060608486031215612a3957600080fd5b8335612a4481612910565b92506020840135612a5481612910565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215612a8e57600080fd5b823567ffffffffffffffff80821115612aa657600080fd5b818501915085601f830112612aba57600080fd5b813581811115612acc57612acc612a65565b8060051b604051601f19603f83011681018181108582111715612af157612af1612a65565b604052918252848201925083810185019188831115612b0f57600080fd5b938501935b82851015612b3457612b2585612928565b84529385019392850192612b14565b98975050505050505050565b8035801515811461293357600080fd5b60008060408385031215612b6357600080fd5b8235612b6e81612910565b9150612b7c60208401612b40565b90509250929050565b600060208284031215612b9757600080fd5b6116ed82612b40565b60008060008060008060c08789031215612bb957600080fd5b8635612bc481612910565b95506020870135945060408701359350606087013560ff81168114612be857600080fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215612c1557600080fd5b8235612c2081612910565b91506020830135612c3081612910565b809150509250929050565b60008060408385031215612c4e57600080fd5b8235612c5981612910565b9150602083013563ffffffff81168114612c3057600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b61ffff818116838216019080821115612cd857612cd8612ca7565b5092915050565b600181811c90821680612cf357607f821691505b602082108103612d1357634e487b7160e01b600052602260045260246000fd5b50919050565b81810381811115610b6157610b61612ca7565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103612d5957612d59612ca7565b6001019392505050565b80820180821115610b6157610b61612ca7565b63ffffffff828116828216039080821115612cd857612cd8612ca7565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680612dc057612dc0612d93565b92169190910492915050565b600060018201612dde57612dde612ca7565b5060010190565b8082028115828204841417610b6157610b61612ca7565b600082612e0b57612e0b612d93565b500490565b600060208284031215612e2257600080fd5b81516116ed81612910565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612e7d5784516001600160a01b031683529383019391830191600101612e58565b50506001600160a01b03969096166060850152505050608001529392505050565b63ffffffff818116838216019080821115612cd857612cd8612ca756fe5f676f7665726e616e6365436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212201d291da4ed3b71537c67d41e0fe3fb0a8aa09895fde52676b2c762e1892e944d64736f6c6343000811003300000000000000000000000000000000000000000000000000000000b2d05e000000000000000000000000006a0bbdcbc3c206659759e5711c5534552b23178a000000000000000000000000852216122b019a554a4821d8c97e55b1cc30b41e00000000000000000000000066273615bc13bbcd5faa55a2e72c601ea6b1e367