0x6080604052600436106103535760003560e01c8063715018a6116101c6578063b3f00674116100f7578063db05e5cb11610095578063df8408fe1161006f578063df8408fe14610a4b578063e7a324dc14610a6b578063f1127ed814610a9f578063f2fde38b14610b0357600080fd5b8063db05e5cb146109da578063dd62ed3e146109ef578063dea0621014610a3557600080fd5b8063c816841b116100d1578063c816841b14610958578063c884ef8314610978578063c9567bf9146109a5578063d4c989d3146109ba57600080fd5b8063b3f00674146108f8578063b4b5ea5714610918578063c3cda5201461093857600080fd5b8063997664d711610164578063a457c2d71161013e578063a457c2d71461088e578063a9059cbb146108ae578063a9e75723146108ce578063aa4bde28146108e357600080fd5b8063997664d7146108385780639dc29fac1461084e5780639f9a4e7f1461086e57600080fd5b80637a18e9a8116101a05780637a18e9a8146107b85780637ecebe00146107d85780638da5cb5b1461080557806395d89b411461082357600080fd5b8063715018a614610763578063735de9f714610778578063782d6fe11461079857600080fd5b806339509351116102a05780635c19a95c1161023e578063670babe011610218578063670babe0146106bb5780636bc11bf3146106db5780636fcfff45146106fb57806370a082311461074357600080fd5b80635c19a95c1461064d57806362e546f91461066d578063658c27a91461068257600080fd5b80634f64b2be1161027a5780634f64b2be146105855780635342acb4146105bd578063570ca735146105f6578063587cde1e1461061457600080fd5b806339509351146105185780633b94a901146105385780634b418bc51461055857600080fd5b806318160ddd1161030d57806323b872dd116102e757806323b872dd146104a757806328f4dbb6146104c7578063313ce567146104dd57806332cb6b0c146104f957600080fd5b806318160ddd1461043d5780631cf186201461045257806320606b701461047357600080fd5b8062dc12971461035f57806306fdde0314610395578063095ea7b3146103b75780630f14b4d6146103d75780630f86de2e1461040557806313f43a571461042757600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b50600d5461038090600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103a157600080fd5b506103aa610b23565b60405161038c9190612b8a565b3480156103c357600080fd5b506103806103d2366004612c04565b610bb5565b3480156103e357600080fd5b506103f76103f2366004612c30565b610bcc565b60405190815260200161038c565b34801561041157600080fd5b50610425610420366004612c5f565b610c65565b005b34801561043357600080fd5b506103f760065481565b34801561044957600080fd5b506002546103f7565b34801561045e57600080fd5b50600d5461038090600160a81b900460ff1681565b34801561047f57600080fd5b506103f77f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b3480156104b357600080fd5b506103806104c2366004612c7a565b610eda565b3480156104d357600080fd5b506103f760075481565b3480156104e957600080fd5b506040516012815260200161038c565b34801561050557600080fd5b506103f76a52b7d2dcc80cd2e400000081565b34801561052457600080fd5b50610380610533366004612c04565b610f8b565b34801561054457600080fd5b50610425610553366004612d73565b610fc2565b34801561056457600080fd5b506103f7610573366004612c30565b60126020526000908152604090205481565b34801561059157600080fd5b506105a56105a0366004612dc5565b611097565b6040516001600160a01b03909116815260200161038c565b3480156105c957600080fd5b506103806105d8366004612c30565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561060257600080fd5b50600d546001600160a01b03166105a5565b34801561062057600080fd5b506105a561062f366004612c30565b6001600160a01b039081166000908152601460205260409020541690565b34801561065957600080fd5b50610425610668366004612c30565b6110c6565b34801561067957600080fd5b506104256110d0565b34801561068e57600080fd5b5061038061069d366004612c30565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156106c757600080fd5b506104256106d6366004612dde565b61110e565b3480156106e757600080fd5b506104256106f6366004612e40565b6111db565b34801561070757600080fd5b5061072e610716366004612c30565b60166020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161038c565b34801561074f57600080fd5b506103f761075e366004612c30565b611289565b34801561076f57600080fd5b506104256112a4565b34801561078457600080fd5b50600a546105a5906001600160a01b031681565b3480156107a457600080fd5b506103f76107b3366004612c04565b611318565b3480156107c457600080fd5b506104256107d3366004612c30565b611577565b3480156107e457600080fd5b506103f76107f3366004612c30565b60176020526000908152604090205481565b34801561081157600080fd5b506005546001600160a01b03166105a5565b34801561082f57600080fd5b506103aa6115c3565b34801561084457600080fd5b506103f760085481565b34801561085a57600080fd5b50610425610869366004612c04565b6115d2565b34801561087a57600080fd5b50610425610889366004612ebf565b611606565b34801561089a57600080fd5b506103806108a9366004612c04565b61164e565b3480156108ba57600080fd5b506103806108c9366004612c04565b6116e9565b3480156108da57600080fd5b506103f76116f6565b3480156108ef57600080fd5b506103f761172e565b34801561090457600080fd5b50600c546105a5906001600160a01b031681565b34801561092457600080fd5b506103f7610933366004612c30565b61175b565b34801561094457600080fd5b50610425610953366004612edc565b6117d0565b34801561096457600080fd5b50600b546105a5906001600160a01b031681565b34801561098457600080fd5b506103f7610993366004612c30565b60116020526000908152604090205481565b3480156109b157600080fd5b50610425611a75565b3480156109c657600080fd5b506104256109d5366004612f36565b611ac1565b3480156109e657600080fd5b50610425611b16565b3480156109fb57600080fd5b506103f7610a0a366004612f64565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a4157600080fd5b506103f760095481565b348015610a5757600080fd5b50610425610a66366004612f36565b611b8b565b348015610a7757600080fd5b506103f77fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b348015610aab57600080fd5b50610ae7610aba366004612f92565b60156020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff909316835260208301919091520161038c565b348015610b0f57600080fd5b50610425610b1e366004612c30565b611be0565b606060038054610b3290612fc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5e90612fc9565b8015610bab5780601f10610b8057610100808354040283529160200191610bab565b820191906000526020600020905b815481529060010190602001808311610b8e57829003601f168201915b5050505050905090565b6000610bc2338484611ccb565b5060015b92915050565b600080610bd883611289565b90506000610be4611df0565b905080610bf5575060009392505050565b6001600160a01b038416600090815260126020526040812054600954610c1a91611e1d565b90508015610c5a576000610c3883610c328487611e29565b90611e35565b9050600854811115610c51575050600854949350505050565b95945050505050565b506000949350505050565b610c6e30611289565b60085411610ed7576000610c8133610bcc565b905060008111610cce5760405162461bcd60e51b81526020600482015260136024820152726e6f7420656e6f75676820746f20636c61696d60681b60448201526064015b60405180910390fd5b600060138361ffff1681548110610ce757610ce7613004565b906000526020600020906002020190508261ffff1660001415610d7e57805460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d78919061301a565b50610e88565b8261ffff1660011415610e1f57600a54610da39030906001600160a01b031684611ccb565b600a546001600160a01b031663791ac9478360006001850133610dc84261012c611e41565b6040518663ffffffff1660e01b8152600401610de8959493929190613037565b600060405180830381600087803b158015610e0257600080fd5b505af1158015610e16573d6000803e3d6000fd5b50505050610e88565b600d54600160a81b900460ff16610e6d57600a54610e489030906001600160a01b031684611ccb565b600a546001600160a01b0316635c11d7958360006001850133610dc84261012c611e41565b600c54600754610e88916001600160a01b0316903090611e4d565b33600090815260116020526040902054610ea29083611e41565b33600090815260116020908152604080832093909355600954601290915291902055600854610ed19083611e1d565b60085550505b50565b6000610ee7848484612025565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610f6c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610cc5565b610f808533610f7b86856130c3565b611ccb565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bc2918590610f7b9086906130da565b600d546001600160a01b03163314610fec5760405162461bcd60e51b8152600401610cc5906130f2565b604080518082019091526001600160a01b03828116825260208083018581526013805460018101825560009190915284517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090600290920291820180546001600160a01b0319169190951617845590518051611090937f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a091909301929190910190612b10565b5050505050565b601381815481106110a757600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b610ed7338261239a565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561110a573d6000803e3d6000fd5b5050565b6005546001600160a01b031633146111385760405162461bcd60e51b8152600401610cc590613119565b6102bc81611146848661314e565b611150919061314e565b61ffff16111561118c5760405162461bcd60e51b81526020600482015260076024820152662176616c75657360c81b6044820152606401610cc5565b6005805465ffff0000ffff60b01b1916600160d01b61ffff9586160261ffff60b01b191617600160b01b938516939093029290921761ffff60c01b1916600160c01b9190931602919091179055565b600d546001600160a01b031633146112055760405162461bcd60e51b8152600401610cc5906130f2565b600060138660ff168154811061121d5761121d613004565b9060005260206000209060020201905084816001019080519060200190611245929190612b10565b5080546001600160a01b039094166001600160a01b031990941693909317909255600755600d8054911515600160a81b0260ff60a81b199092169190911790555050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146112ce5760405162461bcd60e51b8152600401610cc590613119565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60004382106113735760405162461bcd60e51b815260206004820152602160248201527f6765745072696f72566f7465733a206e6f74207965742064657465726d696e656044820152601960fa1b6064820152608401610cc5565b6001600160a01b03831660009081526016602052604090205463ffffffff16806113a1576000915050610bc6565b6001600160a01b038416600090815260156020526040812084916113c6600185613174565b63ffffffff9081168252602082019290925260400160002054161161142f576001600160a01b038416600090815260156020526040812090611409600184613174565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610bc6565b6001600160a01b038416600090815260156020908152604080832083805290915290205463ffffffff1683101561146a576000915050610bc6565b600080611478600184613174565b90505b8163ffffffff168163ffffffff161115611540576000600261149d8484613174565b6114a791906131af565b6114b19083613174565b6001600160a01b038816600090815260156020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087141561151457602001519450610bc69350505050565b805163ffffffff1687111561152b57819350611539565b611536600183613174565b92505b505061147b565b506001600160a01b038516600090815260156020908152604080832063ffffffff9094168352929052206001015491505092915050565b600d546001600160a01b031633146115a15760405162461bcd60e51b8152600401610cc5906130f2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610b3290612fc9565b6005546001600160a01b031633146115fc5760405162461bcd60e51b8152600401610cc590613119565b61110a828261242f565b6005546001600160a01b031633146116305760405162461bcd60e51b8152600401610cc590613119565b600d8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116d05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cc5565b6116df3385610f7b86856130c3565b5060019392505050565b6000610bc2338484612025565b6005546000906117299061ffff600160a01b8204811691610c3291600160e01b9091041661172360025490565b90611e29565b905090565b6005546000906117299061ffff600160a01b8204811691610c3291600160f01b9091041661172360025490565b6001600160a01b03811660009081526016602052604081205463ffffffff16806117865760006117c9565b6001600160a01b0383166000908152601560205260408120906117aa600184613174565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666117fb610b23565b805190602001206118094690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611935573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119985760405162461bcd60e51b815260206004820181905260248201527f64656c656761746542795369673a20696e76616c6964207369676e61747572656044820152606401610cc5565b6001600160a01b03811660009081526017602052604081208054916119bc836131d2565b919050558914611a0e5760405162461bcd60e51b815260206004820152601c60248201527f64656c656761746542795369673a20696e76616c6964206e6f6e6365000000006044820152606401610cc5565b87421115611a5e5760405162461bcd60e51b815260206004820181905260248201527f64656c656761746542795369673a207369676e617475726520657870697265646044820152606401610cc5565b611a68818b61239a565b505050505b505050505050565b6005546001600160a01b03163314611a9f5760405162461bcd60e51b8152600401610cc590613119565b6010805460ff19166001179055600d805460ff60a01b1916600160a01b179055565b6005546001600160a01b03163314611aeb5760405162461bcd60e51b8152600401610cc590613119565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314611b405760405162461bcd60e51b8152600401610cc5906130f2565b600580546001600160e01b0381166001600160f01b03600160a01b80840461ffff908116600160e01b029283169390931761ffff60e01b199094169091170416600160f01b02179055565b6005546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610cc590613119565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611c0a5760405162461bcd60e51b8152600401610cc590613119565b6001600160a01b038116611c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cc5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611d2d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc5565b6001600160a01b038216611d8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600b546000908190611e0a906001600160a01b0316611289565b905060006117c982611e1b60025490565b905b60006117c982846130c3565b60006117c982846131ed565b60006117c9828461320c565b60006117c982846130da565b6001600160a01b038316611eb15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc5565b6001600160a01b038216611f135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc5565b6001600160a01b03831660009081526020819052604090205481811015611f8b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cc5565b611f9582826130c3565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611fcb9084906130da565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161201791815260200190565b60405180910390a350505050565b60105460ff168061204357506005546001600160a01b038481169116145b8061205b57506005546001600160a01b038381169116145b806120735750600a546001600160a01b038481169116145b6120ab5760405162461bcd60e51b8152602060048201526009602482015268217472616461626c6560b81b6044820152606401610cc5565b600d54600160a01b900460ff16151560011480156120d35750600c54600160a01b900460ff16155b80156120e95750600a546001600160a01b031615155b80156120ff5750600b546001600160a01b031615155b80156121195750600b546001600160a01b03848116911614155b801561212f575060065461212c30611289565b10155b801561215457506001600160a01b0383166000908152600e602052604090205460ff16155b801561217957506001600160a01b0382166000908152600e602052604090205460ff16155b156121865761218661257e565b6001600160a01b0383166000908152600f602052604090205460ff166121f4576121ae6116f6565b8111156121f45760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b585e081d1e08185b5bdd5b9d60621b6044820152606401610cc5565b600b546001600160a01b0383811691161461227d5761221161172e565b8161221b84611289565b61222591906130da565b111561227d5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610cc5565b6001600160a01b0383166000908152600e602052604090205460ff16156122ae576122a9838383611e4d565b505050565b6005546000906122d89061ffff600160a01b8204811691610c32918691600160b01b900416611e29565b6005549091506000906123059061ffff600160a01b8204811691610c32918791600160c01b900416611e29565b6005549091506000906123329061ffff600160a01b8204811691610c32918891600160d01b900416611e29565b905061234481611e1b84818888611e1d565b9350612351868686611e4d565b61235c863085611e4d565b612367863084611e4d565b612372863083611e4d565b60085461237f9082611e41565b60085560095461238f9082611e41565b600955505050505050565b6001600160a01b03808316600090815260146020526040812054909116906123c184611289565b6001600160a01b0385811660008181526014602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461242982848361268d565b50505050565b6001600160a01b03821661248f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cc5565b6001600160a01b038216600090815260208190526040902054818110156125035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cc5565b61250d82826130c3565b6001600160a01b0384166000908152602081905260408120919091556002805484929061253b9084906130c3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611de3565b600c805460ff60a01b1916600160a01b1790556005805465ffffffffffff60b01b19811690915561ffff600160b01b8204811691600160c01b8104821691600160d01b9091041660006125d030611289565b9050600854811115612632576008546125ea908290611e1d565b90506125f5816127ec565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561262f573d6000803e3d6000fd5b50505b506005805463ffffffff60b01b1916600160b01b61ffff9586160261ffff60c01b191617600160c01b938516939093029290921761ffff60d01b1916600160d01b9190931602919091179055600c805460ff60a01b19169055565b816001600160a01b0316836001600160a01b0316141580156126af5750600081115b156122a9576001600160a01b03831615612752576001600160a01b03831660009081526016602052604081205463ffffffff1690816126ef576000612732565b6001600160a01b038516600090815260156020526040812090612713600185613174565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006127408285611e1d565b905061274e8684848461293e565b5050505b6001600160a01b038216156122a9576001600160a01b03821660009081526016602052604081205463ffffffff16908161278d5760006127d0565b6001600160a01b0384166000908152601560205260408120906127b1600185613174565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006127de8285611e41565b9050611a6d8584848461293e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061282157612821613004565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561287a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289e9190613220565b816001815181106128b1576128b1613004565b6001600160a01b039283166020918202929092010152600a546128d79130911684611ccb565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061291090859060009086903090429060040161323d565b600060405180830381600087803b15801561292a57600080fd5b505af1158015611a6d573d6000803e3d6000fd5b6000612962436040518060600160405280602e81526020016132ad602e9139612ae0565b905060008463ffffffff161180156129bc57506001600160a01b038516600090815260156020526040812063ffffffff8316916129a0600188613174565b63ffffffff908116825260208201929092526040016000205416145b15612a05576001600160a01b038516600090815260156020526040812083916129e6600188613174565b63ffffffff168152602081019190915260400160002060010155612a95565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601583528581208a851682529092529390209151825463ffffffff191691161781559051600191820155612a6490859061328d565b6001600160a01b0386166000908152601660205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410612b085760405162461bcd60e51b8152600401610cc59190612b8a565b509192915050565b828054828255906000526020600020908101928215612b65579160200282015b82811115612b6557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612b30565b50612b71929150612b75565b5090565b5b80821115612b715760008155600101612b76565b600060208083528351808285015260005b81811015612bb757858101830151858201604001528201612b9b565b81811115612bc9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ed757600080fd5b8035612bff81612bdf565b919050565b60008060408385031215612c1757600080fd5b8235612c2281612bdf565b946020939093013593505050565b600060208284031215612c4257600080fd5b81356117c981612bdf565b803561ffff81168114612bff57600080fd5b600060208284031215612c7157600080fd5b6117c982612c4d565b600080600060608486031215612c8f57600080fd5b8335612c9a81612bdf565b92506020840135612caa81612bdf565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ce257600080fd5b8135602067ffffffffffffffff80831115612cff57612cff612cbb565b8260051b604051601f19603f83011681018181108482111715612d2457612d24612cbb565b604052938452858101830193838101925087851115612d4257600080fd5b83870191505b84821015612d6857612d5982612bf4565b83529183019190830190612d48565b979650505050505050565b60008060408385031215612d8657600080fd5b823567ffffffffffffffff811115612d9d57600080fd5b612da985828601612cd1565b9250506020830135612dba81612bdf565b809150509250929050565b600060208284031215612dd757600080fd5b5035919050565b600080600060608486031215612df357600080fd5b612dfc84612c4d565b9250612e0a60208501612c4d565b9150612e1860408501612c4d565b90509250925092565b803560ff81168114612bff57600080fd5b8015158114610ed757600080fd5b600080600080600060a08688031215612e5857600080fd5b612e6186612e21565b9450602086013567ffffffffffffffff811115612e7d57600080fd5b612e8988828901612cd1565b9450506040860135612e9a81612bdf565b9250606086013591506080860135612eb181612e32565b809150509295509295909350565b600060208284031215612ed157600080fd5b81356117c981612e32565b60008060008060008060c08789031215612ef557600080fd5b8635612f0081612bdf565b95506020870135945060408701359350612f1c60608801612e21565b92506080870135915060a087013590509295509295509295565b60008060408385031215612f4957600080fd5b8235612f5481612bdf565b91506020830135612dba81612e32565b60008060408385031215612f7757600080fd5b8235612f8281612bdf565b91506020830135612dba81612bdf565b60008060408385031215612fa557600080fd5b8235612fb081612bdf565b9150602083013563ffffffff81168114612dba57600080fd5b600181811c90821680612fdd57607f821691505b60208210811415612ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561302c57600080fd5b81516117c981612e32565b600060a082018783526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b8181101561308c5784546001600160a01b031683526001948501949284019201613067565b50506001600160a01b03969096166060850152505050608001529392505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156130d5576130d56130ad565b500390565b600082198211156130ed576130ed6130ad565b500190565b6020808252600d908201526c6c61796572203120726f6c657360981b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600061ffff80831681851680830382111561316b5761316b6130ad565b01949350505050565b600063ffffffff83811690831681811015613191576131916130ad565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806131c6576131c6613199565b92169190910492915050565b60006000198214156131e6576131e66130ad565b5060010190565b6000816000190483118215151615613207576132076130ad565b500290565b60008261321b5761321b613199565b500490565b60006020828403121561323257600080fd5b81516117c981612bdf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561308c5784516001600160a01b031683529383019391830191600101613268565b600063ffffffff80831681851680830382111561316b5761316b6130ad56fe5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220b0c1bbba0e511581dfa0172a4e1db6058c0deaaa6458a5f68102149b662d386a64736f6c634300080a0033
0x6080604052600580546001600160a01b03167ef00078006e00a000c8271000000000000000000000000000000000000000001790556103e86200004f6a52b7d2dcc80cd2e400000060026200058a565b6200005b9190620005ac565b6006556064620000786a52b7d2dcc80cd2e400000060026200058a565b620000849190620005ac565b600755600c80546001600160a01b03191673271b13cc58f76176874dde185357fff6216de588179055600d805461ffff60a01b191690556010805460ff19169055348015620000d257600080fd5b506040518060400160405280600981526020016821363ab2b1b434b83d60b91b815250604051806040016040528060038152602001622121ad60e91b815250816003908051906020019062000129929190620004ce565b5080516200013f906004906020840190620004ce565b505050600062000154620003e260201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b03191633908117909155620001ce906a52b7d2dcc80cd2e4000000620003e6565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c9190620005cf565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c09190620005cf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200030e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003349190620005cf565b600b80546001600160a01b03199081166001600160a01b0393841617909155600a805490911692821692909217909155306000818152600e60209081526040808320805460ff199081166001908117909255338086528386208054831684179055600c8054891687528487208054841685179055968652600f909452828520805482168317905594549095168352808320805485168617905590825290208054909116909117905562000659565b3390565b6001600160a01b038216620004415760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000455919062000601565b90915550506001600160a01b038216600090815260208190526040812080548392906200048490849062000601565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620004dc906200061c565b90600052602060002090601f0160209004810192826200050057600085556200054b565b82601f106200051b57805160ff19168380011785556200054b565b828001600101855582156200054b579182015b828111156200054b5782518255916020019190600101906200052e565b50620005599291506200055d565b5090565b5b808211156200055957600081556001016200055e565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620005a757620005a762000574565b500290565b600082620005ca57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005e257600080fd5b81516001600160a01b0381168114620005fa57600080fd5b9392505050565b6000821982111562000617576200061762000574565b500190565b600181811c908216806200063157607f821691505b602082108114156200065357634e487b7160e01b600052602260045260246000fd5b50919050565b61331080620006696000396000f3fe6080604052600436106103535760003560e01c8063715018a6116101c6578063b3f00674116100f7578063db05e5cb11610095578063df8408fe1161006f578063df8408fe14610a4b578063e7a324dc14610a6b578063f1127ed814610a9f578063f2fde38b14610b0357600080fd5b8063db05e5cb146109da578063dd62ed3e146109ef578063dea0621014610a3557600080fd5b8063c816841b116100d1578063c816841b14610958578063c884ef8314610978578063c9567bf9146109a5578063d4c989d3146109ba57600080fd5b8063b3f00674146108f8578063b4b5ea5714610918578063c3cda5201461093857600080fd5b8063997664d711610164578063a457c2d71161013e578063a457c2d71461088e578063a9059cbb146108ae578063a9e75723146108ce578063aa4bde28146108e357600080fd5b8063997664d7146108385780639dc29fac1461084e5780639f9a4e7f1461086e57600080fd5b80637a18e9a8116101a05780637a18e9a8146107b85780637ecebe00146107d85780638da5cb5b1461080557806395d89b411461082357600080fd5b8063715018a614610763578063735de9f714610778578063782d6fe11461079857600080fd5b806339509351116102a05780635c19a95c1161023e578063670babe011610218578063670babe0146106bb5780636bc11bf3146106db5780636fcfff45146106fb57806370a082311461074357600080fd5b80635c19a95c1461064d57806362e546f91461066d578063658c27a91461068257600080fd5b80634f64b2be1161027a5780634f64b2be146105855780635342acb4146105bd578063570ca735146105f6578063587cde1e1461061457600080fd5b806339509351146105185780633b94a901146105385780634b418bc51461055857600080fd5b806318160ddd1161030d57806323b872dd116102e757806323b872dd146104a757806328f4dbb6146104c7578063313ce567146104dd57806332cb6b0c146104f957600080fd5b806318160ddd1461043d5780631cf186201461045257806320606b701461047357600080fd5b8062dc12971461035f57806306fdde0314610395578063095ea7b3146103b75780630f14b4d6146103d75780630f86de2e1461040557806313f43a571461042757600080fd5b3661035a57005b600080fd5b34801561036b57600080fd5b50600d5461038090600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156103a157600080fd5b506103aa610b23565b60405161038c9190612b8a565b3480156103c357600080fd5b506103806103d2366004612c04565b610bb5565b3480156103e357600080fd5b506103f76103f2366004612c30565b610bcc565b60405190815260200161038c565b34801561041157600080fd5b50610425610420366004612c5f565b610c65565b005b34801561043357600080fd5b506103f760065481565b34801561044957600080fd5b506002546103f7565b34801561045e57600080fd5b50600d5461038090600160a81b900460ff1681565b34801561047f57600080fd5b506103f77f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b3480156104b357600080fd5b506103806104c2366004612c7a565b610eda565b3480156104d357600080fd5b506103f760075481565b3480156104e957600080fd5b506040516012815260200161038c565b34801561050557600080fd5b506103f76a52b7d2dcc80cd2e400000081565b34801561052457600080fd5b50610380610533366004612c04565b610f8b565b34801561054457600080fd5b50610425610553366004612d73565b610fc2565b34801561056457600080fd5b506103f7610573366004612c30565b60126020526000908152604090205481565b34801561059157600080fd5b506105a56105a0366004612dc5565b611097565b6040516001600160a01b03909116815260200161038c565b3480156105c957600080fd5b506103806105d8366004612c30565b6001600160a01b03166000908152600e602052604090205460ff1690565b34801561060257600080fd5b50600d546001600160a01b03166105a5565b34801561062057600080fd5b506105a561062f366004612c30565b6001600160a01b039081166000908152601460205260409020541690565b34801561065957600080fd5b50610425610668366004612c30565b6110c6565b34801561067957600080fd5b506104256110d0565b34801561068e57600080fd5b5061038061069d366004612c30565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156106c757600080fd5b506104256106d6366004612dde565b61110e565b3480156106e757600080fd5b506104256106f6366004612e40565b6111db565b34801561070757600080fd5b5061072e610716366004612c30565b60166020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161038c565b34801561074f57600080fd5b506103f761075e366004612c30565b611289565b34801561076f57600080fd5b506104256112a4565b34801561078457600080fd5b50600a546105a5906001600160a01b031681565b3480156107a457600080fd5b506103f76107b3366004612c04565b611318565b3480156107c457600080fd5b506104256107d3366004612c30565b611577565b3480156107e457600080fd5b506103f76107f3366004612c30565b60176020526000908152604090205481565b34801561081157600080fd5b506005546001600160a01b03166105a5565b34801561082f57600080fd5b506103aa6115c3565b34801561084457600080fd5b506103f760085481565b34801561085a57600080fd5b50610425610869366004612c04565b6115d2565b34801561087a57600080fd5b50610425610889366004612ebf565b611606565b34801561089a57600080fd5b506103806108a9366004612c04565b61164e565b3480156108ba57600080fd5b506103806108c9366004612c04565b6116e9565b3480156108da57600080fd5b506103f76116f6565b3480156108ef57600080fd5b506103f761172e565b34801561090457600080fd5b50600c546105a5906001600160a01b031681565b34801561092457600080fd5b506103f7610933366004612c30565b61175b565b34801561094457600080fd5b50610425610953366004612edc565b6117d0565b34801561096457600080fd5b50600b546105a5906001600160a01b031681565b34801561098457600080fd5b506103f7610993366004612c30565b60116020526000908152604090205481565b3480156109b157600080fd5b50610425611a75565b3480156109c657600080fd5b506104256109d5366004612f36565b611ac1565b3480156109e657600080fd5b50610425611b16565b3480156109fb57600080fd5b506103f7610a0a366004612f64565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a4157600080fd5b506103f760095481565b348015610a5757600080fd5b50610425610a66366004612f36565b611b8b565b348015610a7757600080fd5b506103f77fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b348015610aab57600080fd5b50610ae7610aba366004612f92565b60156020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff909316835260208301919091520161038c565b348015610b0f57600080fd5b50610425610b1e366004612c30565b611be0565b606060038054610b3290612fc9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5e90612fc9565b8015610bab5780601f10610b8057610100808354040283529160200191610bab565b820191906000526020600020905b815481529060010190602001808311610b8e57829003601f168201915b5050505050905090565b6000610bc2338484611ccb565b5060015b92915050565b600080610bd883611289565b90506000610be4611df0565b905080610bf5575060009392505050565b6001600160a01b038416600090815260126020526040812054600954610c1a91611e1d565b90508015610c5a576000610c3883610c328487611e29565b90611e35565b9050600854811115610c51575050600854949350505050565b95945050505050565b506000949350505050565b610c6e30611289565b60085411610ed7576000610c8133610bcc565b905060008111610cce5760405162461bcd60e51b81526020600482015260136024820152726e6f7420656e6f75676820746f20636c61696d60681b60448201526064015b60405180910390fd5b600060138361ffff1681548110610ce757610ce7613004565b906000526020600020906002020190508261ffff1660001415610d7e57805460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d78919061301a565b50610e88565b8261ffff1660011415610e1f57600a54610da39030906001600160a01b031684611ccb565b600a546001600160a01b031663791ac9478360006001850133610dc84261012c611e41565b6040518663ffffffff1660e01b8152600401610de8959493929190613037565b600060405180830381600087803b158015610e0257600080fd5b505af1158015610e16573d6000803e3d6000fd5b50505050610e88565b600d54600160a81b900460ff16610e6d57600a54610e489030906001600160a01b031684611ccb565b600a546001600160a01b0316635c11d7958360006001850133610dc84261012c611e41565b600c54600754610e88916001600160a01b0316903090611e4d565b33600090815260116020526040902054610ea29083611e41565b33600090815260116020908152604080832093909355600954601290915291902055600854610ed19083611e1d565b60085550505b50565b6000610ee7848484612025565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610f6c5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610cc5565b610f808533610f7b86856130c3565b611ccb565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bc2918590610f7b9086906130da565b600d546001600160a01b03163314610fec5760405162461bcd60e51b8152600401610cc5906130f2565b604080518082019091526001600160a01b03828116825260208083018581526013805460018101825560009190915284517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090600290920291820180546001600160a01b0319169190951617845590518051611090937f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a091909301929190910190612b10565b5050505050565b601381815481106110a757600080fd5b60009182526020909120600290910201546001600160a01b0316905081565b610ed7338261239a565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561110a573d6000803e3d6000fd5b5050565b6005546001600160a01b031633146111385760405162461bcd60e51b8152600401610cc590613119565b6102bc81611146848661314e565b611150919061314e565b61ffff16111561118c5760405162461bcd60e51b81526020600482015260076024820152662176616c75657360c81b6044820152606401610cc5565b6005805465ffff0000ffff60b01b1916600160d01b61ffff9586160261ffff60b01b191617600160b01b938516939093029290921761ffff60c01b1916600160c01b9190931602919091179055565b600d546001600160a01b031633146112055760405162461bcd60e51b8152600401610cc5906130f2565b600060138660ff168154811061121d5761121d613004565b9060005260206000209060020201905084816001019080519060200190611245929190612b10565b5080546001600160a01b039094166001600160a01b031990941693909317909255600755600d8054911515600160a81b0260ff60a81b199092169190911790555050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146112ce5760405162461bcd60e51b8152600401610cc590613119565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b60004382106113735760405162461bcd60e51b815260206004820152602160248201527f6765745072696f72566f7465733a206e6f74207965742064657465726d696e656044820152601960fa1b6064820152608401610cc5565b6001600160a01b03831660009081526016602052604090205463ffffffff16806113a1576000915050610bc6565b6001600160a01b038416600090815260156020526040812084916113c6600185613174565b63ffffffff9081168252602082019290925260400160002054161161142f576001600160a01b038416600090815260156020526040812090611409600184613174565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610bc6565b6001600160a01b038416600090815260156020908152604080832083805290915290205463ffffffff1683101561146a576000915050610bc6565b600080611478600184613174565b90505b8163ffffffff168163ffffffff161115611540576000600261149d8484613174565b6114a791906131af565b6114b19083613174565b6001600160a01b038816600090815260156020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087141561151457602001519450610bc69350505050565b805163ffffffff1687111561152b57819350611539565b611536600183613174565b92505b505061147b565b506001600160a01b038516600090815260156020908152604080832063ffffffff9094168352929052206001015491505092915050565b600d546001600160a01b031633146115a15760405162461bcd60e51b8152600401610cc5906130f2565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610b3290612fc9565b6005546001600160a01b031633146115fc5760405162461bcd60e51b8152600401610cc590613119565b61110a828261242f565b6005546001600160a01b031633146116305760405162461bcd60e51b8152600401610cc590613119565b600d8054911515600160a01b0260ff60a01b19909216919091179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156116d05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cc5565b6116df3385610f7b86856130c3565b5060019392505050565b6000610bc2338484612025565b6005546000906117299061ffff600160a01b8204811691610c3291600160e01b9091041661172360025490565b90611e29565b905090565b6005546000906117299061ffff600160a01b8204811691610c3291600160f01b9091041661172360025490565b6001600160a01b03811660009081526016602052604081205463ffffffff16806117865760006117c9565b6001600160a01b0383166000908152601560205260408120906117aa600184613174565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666117fb610b23565b805190602001206118094690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611935573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166119985760405162461bcd60e51b815260206004820181905260248201527f64656c656761746542795369673a20696e76616c6964207369676e61747572656044820152606401610cc5565b6001600160a01b03811660009081526017602052604081208054916119bc836131d2565b919050558914611a0e5760405162461bcd60e51b815260206004820152601c60248201527f64656c656761746542795369673a20696e76616c6964206e6f6e6365000000006044820152606401610cc5565b87421115611a5e5760405162461bcd60e51b815260206004820181905260248201527f64656c656761746542795369673a207369676e617475726520657870697265646044820152606401610cc5565b611a68818b61239a565b505050505b505050505050565b6005546001600160a01b03163314611a9f5760405162461bcd60e51b8152600401610cc590613119565b6010805460ff19166001179055600d805460ff60a01b1916600160a01b179055565b6005546001600160a01b03163314611aeb5760405162461bcd60e51b8152600401610cc590613119565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314611b405760405162461bcd60e51b8152600401610cc5906130f2565b600580546001600160e01b0381166001600160f01b03600160a01b80840461ffff908116600160e01b029283169390931761ffff60e01b199094169091170416600160f01b02179055565b6005546001600160a01b03163314611bb55760405162461bcd60e51b8152600401610cc590613119565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611c0a5760405162461bcd60e51b8152600401610cc590613119565b6001600160a01b038116611c6f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cc5565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611d2d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cc5565b6001600160a01b038216611d8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cc5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600b546000908190611e0a906001600160a01b0316611289565b905060006117c982611e1b60025490565b905b60006117c982846130c3565b60006117c982846131ed565b60006117c9828461320c565b60006117c982846130da565b6001600160a01b038316611eb15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cc5565b6001600160a01b038216611f135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cc5565b6001600160a01b03831660009081526020819052604090205481811015611f8b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cc5565b611f9582826130c3565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611fcb9084906130da565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161201791815260200190565b60405180910390a350505050565b60105460ff168061204357506005546001600160a01b038481169116145b8061205b57506005546001600160a01b038381169116145b806120735750600a546001600160a01b038481169116145b6120ab5760405162461bcd60e51b8152602060048201526009602482015268217472616461626c6560b81b6044820152606401610cc5565b600d54600160a01b900460ff16151560011480156120d35750600c54600160a01b900460ff16155b80156120e95750600a546001600160a01b031615155b80156120ff5750600b546001600160a01b031615155b80156121195750600b546001600160a01b03848116911614155b801561212f575060065461212c30611289565b10155b801561215457506001600160a01b0383166000908152600e602052604090205460ff16155b801561217957506001600160a01b0382166000908152600e602052604090205460ff16155b156121865761218661257e565b6001600160a01b0383166000908152600f602052604090205460ff166121f4576121ae6116f6565b8111156121f45760405162461bcd60e51b8152602060048201526014602482015273195e18d95959081b585e081d1e08185b5bdd5b9d60621b6044820152606401610cc5565b600b546001600160a01b0383811691161461227d5761221161172e565b8161221b84611289565b61222591906130da565b111561227d5760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610cc5565b6001600160a01b0383166000908152600e602052604090205460ff16156122ae576122a9838383611e4d565b505050565b6005546000906122d89061ffff600160a01b8204811691610c32918691600160b01b900416611e29565b6005549091506000906123059061ffff600160a01b8204811691610c32918791600160c01b900416611e29565b6005549091506000906123329061ffff600160a01b8204811691610c32918891600160d01b900416611e29565b905061234481611e1b84818888611e1d565b9350612351868686611e4d565b61235c863085611e4d565b612367863084611e4d565b612372863083611e4d565b60085461237f9082611e41565b60085560095461238f9082611e41565b600955505050505050565b6001600160a01b03808316600090815260146020526040812054909116906123c184611289565b6001600160a01b0385811660008181526014602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461242982848361268d565b50505050565b6001600160a01b03821661248f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cc5565b6001600160a01b038216600090815260208190526040902054818110156125035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cc5565b61250d82826130c3565b6001600160a01b0384166000908152602081905260408120919091556002805484929061253b9084906130c3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611de3565b600c805460ff60a01b1916600160a01b1790556005805465ffffffffffff60b01b19811690915561ffff600160b01b8204811691600160c01b8104821691600160d01b9091041660006125d030611289565b9050600854811115612632576008546125ea908290611e1d565b90506125f5816127ec565b600c5460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561262f573d6000803e3d6000fd5b50505b506005805463ffffffff60b01b1916600160b01b61ffff9586160261ffff60c01b191617600160c01b938516939093029290921761ffff60d01b1916600160d01b9190931602919091179055600c805460ff60a01b19169055565b816001600160a01b0316836001600160a01b0316141580156126af5750600081115b156122a9576001600160a01b03831615612752576001600160a01b03831660009081526016602052604081205463ffffffff1690816126ef576000612732565b6001600160a01b038516600090815260156020526040812090612713600185613174565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006127408285611e1d565b905061274e8684848461293e565b5050505b6001600160a01b038216156122a9576001600160a01b03821660009081526016602052604081205463ffffffff16908161278d5760006127d0565b6001600160a01b0384166000908152601560205260408120906127b1600185613174565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006127de8285611e41565b9050611a6d8584848461293e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061282157612821613004565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561287a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289e9190613220565b816001815181106128b1576128b1613004565b6001600160a01b039283166020918202929092010152600a546128d79130911684611ccb565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061291090859060009086903090429060040161323d565b600060405180830381600087803b15801561292a57600080fd5b505af1158015611a6d573d6000803e3d6000fd5b6000612962436040518060600160405280602e81526020016132ad602e9139612ae0565b905060008463ffffffff161180156129bc57506001600160a01b038516600090815260156020526040812063ffffffff8316916129a0600188613174565b63ffffffff908116825260208201929092526040016000205416145b15612a05576001600160a01b038516600090815260156020526040812083916129e6600188613174565b63ffffffff168152602081019190915260400160002060010155612a95565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152601583528581208a851682529092529390209151825463ffffffff191691161781559051600191820155612a6490859061328d565b6001600160a01b0386166000908152601660205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b6000816401000000008410612b085760405162461bcd60e51b8152600401610cc59190612b8a565b509192915050565b828054828255906000526020600020908101928215612b65579160200282015b82811115612b6557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612b30565b50612b71929150612b75565b5090565b5b80821115612b715760008155600101612b76565b600060208083528351808285015260005b81811015612bb757858101830151858201604001528201612b9b565b81811115612bc9576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610ed757600080fd5b8035612bff81612bdf565b919050565b60008060408385031215612c1757600080fd5b8235612c2281612bdf565b946020939093013593505050565b600060208284031215612c4257600080fd5b81356117c981612bdf565b803561ffff81168114612bff57600080fd5b600060208284031215612c7157600080fd5b6117c982612c4d565b600080600060608486031215612c8f57600080fd5b8335612c9a81612bdf565b92506020840135612caa81612bdf565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612ce257600080fd5b8135602067ffffffffffffffff80831115612cff57612cff612cbb565b8260051b604051601f19603f83011681018181108482111715612d2457612d24612cbb565b604052938452858101830193838101925087851115612d4257600080fd5b83870191505b84821015612d6857612d5982612bf4565b83529183019190830190612d48565b979650505050505050565b60008060408385031215612d8657600080fd5b823567ffffffffffffffff811115612d9d57600080fd5b612da985828601612cd1565b9250506020830135612dba81612bdf565b809150509250929050565b600060208284031215612dd757600080fd5b5035919050565b600080600060608486031215612df357600080fd5b612dfc84612c4d565b9250612e0a60208501612c4d565b9150612e1860408501612c4d565b90509250925092565b803560ff81168114612bff57600080fd5b8015158114610ed757600080fd5b600080600080600060a08688031215612e5857600080fd5b612e6186612e21565b9450602086013567ffffffffffffffff811115612e7d57600080fd5b612e8988828901612cd1565b9450506040860135612e9a81612bdf565b9250606086013591506080860135612eb181612e32565b809150509295509295909350565b600060208284031215612ed157600080fd5b81356117c981612e32565b60008060008060008060c08789031215612ef557600080fd5b8635612f0081612bdf565b95506020870135945060408701359350612f1c60608801612e21565b92506080870135915060a087013590509295509295509295565b60008060408385031215612f4957600080fd5b8235612f5481612bdf565b91506020830135612dba81612e32565b60008060408385031215612f7757600080fd5b8235612f8281612bdf565b91506020830135612dba81612bdf565b60008060408385031215612fa557600080fd5b8235612fb081612bdf565b9150602083013563ffffffff81168114612dba57600080fd5b600181811c90821680612fdd57607f821691505b60208210811415612ffe57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561302c57600080fd5b81516117c981612e32565b600060a082018783526020878185015260a0604085015281875480845260c0860191508860005282600020935060005b8181101561308c5784546001600160a01b031683526001948501949284019201613067565b50506001600160a01b03969096166060850152505050608001529392505050565b634e487b7160e01b600052601160045260246000fd5b6000828210156130d5576130d56130ad565b500390565b600082198211156130ed576130ed6130ad565b500190565b6020808252600d908201526c6c61796572203120726f6c657360981b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600061ffff80831681851680830382111561316b5761316b6130ad565b01949350505050565b600063ffffffff83811690831681811015613191576131916130ad565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806131c6576131c6613199565b92169190910492915050565b60006000198214156131e6576131e66130ad565b5060010190565b6000816000190483118215151615613207576132076130ad565b500290565b60008261321b5761321b613199565b500490565b60006020828403121561323257600080fd5b81516117c981612bdf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561308c5784516001600160a01b031683529383019391830191600101613268565b600063ffffffff80831681851680830382111561316b5761316b6130ad56fe5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220b0c1bbba0e511581dfa0172a4e1db6058c0deaaa6458a5f68102149b662d386a64736f6c634300080a0033