0x60806040523480156200001157600080fd5b50604080518082018252600e81527f46616e766572736520546f6b656e00000000000000000000000000000000000060208083019182528351808501909452600284527f4654000000000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160009190620002cf565b508151620000a6906001906020850190620002cf565b506002805460ff90921660ff199092169190911790555050600680546001600160a01b03191633908117909155620000e59062000114602090811b901c565b6008805460ff191690556200010e336b033b2e3c9fd0803ce800000062000166602090811b901c565b62000374565b6200012f8160076200022560201b6200184d1790919060201c565b6040516001600160a01b038216907f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990600090a250565b6001600160a01b03821615156200017c57600080fd5b62000198816005546200027d60201b620012531790919060201c565b6005556001600160a01b038216600090815260036020908152604090912054620001cd918390620012536200027d821b17901c565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b03811615156200023b57600080fd5b6200024d82826200029760201b60201c565b156200025857600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000828201838110156200029057600080fd5b9392505050565b60006001600160a01b0382161515620002af57600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200031257805160ff191683800117855562000342565b8280016001018555821562000342579182015b828111156200034257825182559160200191906001019062000325565b506200035092915062000354565b5090565b6200037191905b808211156200035057600081556001016200035b565b90565b61196f80620003846000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637eee288d11610104578063b414d4b6116100a2578063e2ab691d11610071578063e2ab691d146105f8578063f26c159f1461062a578063f2fde38b14610650578063f7b188a514610676576101da565b8063b414d4b61461052d578063d26c4a7614610553578063dd62ed3e14610598578063de6baccb146105c6576101da565b80638da5cb5b116100de5780638da5cb5b146104a957806395d89b41146104cd578063a457c2d7146104d5578063a9059cbb14610501576101da565b80637eee288d1461046d5780638456cb59146104995780638bad0c0a146104a1576101da565b8063313ce5671161017c578063704802751161014b57806370480275146103cf57806370a08231146103f5578063788649ea1461041b57806379cc679014610441576101da565b8063313ce56714610360578063395093511461037e57806342966c68146103aa5780635c975abb146103c7576101da565b806318160ddd116101b857806318160ddd146102c457806323b872dd146102de57806324d7806c146103145780632f54bf6e1461033a576101da565b806306fdde03146101df578063095ea7b31461025c5780631785f53c1461029c575b600080fd5b6101e761067e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102886004803603604081101561027257600080fd5b506001600160a01b038135169060200135610715565b604080519115158252519081900360200190f35b6102c2600480360360208110156102b257600080fd5b50356001600160a01b0316610739565b005b6102cc61075c565b60408051918252519081900360200190f35b610288600480360360608110156102f457600080fd5b506001600160a01b03813581169160208101359091169060400135610762565b6102886004803603602081101561032a57600080fd5b50356001600160a01b031661080e565b6102886004803603602081101561035057600080fd5b50356001600160a01b0316610829565b610368610852565b6040805160ff9092168252519081900360200190f35b6102886004803603604081101561039457600080fd5b506001600160a01b03813516906020013561085b565b6102c2600480360360208110156103c057600080fd5b5035610878565b610288610882565b6102c2600480360360208110156103e557600080fd5b50356001600160a01b031661088b565b6102cc6004803603602081101561040b57600080fd5b50356001600160a01b03166108b7565b6102886004803603602081101561043157600080fd5b50356001600160a01b0316610962565b6102c26004803603604081101561045757600080fd5b506001600160a01b0381351690602001356109fc565b6102886004803603604081101561048357600080fd5b506001600160a01b038135169060200135610a0a565b6102c2610ab2565b6102c2610b27565b6104b1610b32565b604080516001600160a01b039092168252519081900360200190f35b6101e7610b41565b610288600480360360408110156104eb57600080fd5b506001600160a01b038135169060200135610ba1565b6102886004803603604081101561051757600080fd5b506001600160a01b038135169060200135610bbe565b6102886004803603602081101561054357600080fd5b50356001600160a01b0316610c39565b61057f6004803603604081101561056957600080fd5b506001600160a01b038135169060200135610c4e565b6040805192835260208301919091528051918290030190f35b6102cc600480360360408110156105ae57600080fd5b506001600160a01b0381358116916020013516610c89565b610288600480360360608110156105dc57600080fd5b506001600160a01b038135169060208101359060400135610cb4565b6102886004803603606081101561060e57600080fd5b506001600160a01b038135169060208101359060400135610cfa565b6102886004803603602081101561064057600080fd5b50356001600160a01b0316610d79565b6102c26004803603602081101561066657600080fd5b50356001600160a01b0316610e15565b6102c2610e9d565b60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070a5780601f106106df5761010080835404028352916020019161070a565b820191906000526020600020905b8154815290600101906020018083116106ed57829003601f168201915b505050505090505b90565b60085460009060ff161561072857600080fd5b6107328383610f10565b9392505050565b6006546001600160a01b0316331461075057600080fd5b61075981610f7c565b50565b60055490565b6001600160a01b0383166000908152600a6020526040812054849060ff161561078a57600080fd5b336000818152600a602052604090205460ff16156107a757600080fd5b6001600160a01b0385166000908152600a6020526040902054859060ff16156107cf57600080fd5b6001600160a01b038716600090815260096020526040902054156107f8576107f687610fc4565b505b61080387878761104a565b979650505050505050565b600061082160078363ffffffff61107016565b90505b919050565b6006546000906001600160a01b038381169116141561084a57506001610824565b506000610824565b60025460ff1690565b60085460009060ff161561086e57600080fd5b61073283836110a7565b6107593382611145565b60085460ff1690565b6108943361080e565b806108a357506108a333610829565b15156108ae57600080fd5b610759816111f0565b6000806108c383611238565b6001600160a01b038416600090815260096020526040902054909150156108215760005b6001600160a01b03841660009081526009602052604090205481101561095b576001600160a01b0384166000908152600960205260409020805461095191908390811061093057fe5b9060005260206000209060020201600101548361125390919063ffffffff16565b91506001016108e7565b5092915050565b600061096d3361080e565b8061097c575061097c33610829565b151561098757600080fd5b6001600160a01b0382166000908152600a602052604090205460ff1615156109ae57600080fd5b6001600160a01b0382166000818152600a6020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b610a068282611265565b5050565b6000610a153361080e565b80610a245750610a2433610829565b1515610a2f57600080fd5b6001600160a01b0383166000908152600960205260409020548210610a9e5760408051600160e51b62461bcd02815260206004820152601760248201527f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000604482015290519081900360640190fd5b610aa88383611315565b5060019392505050565b610abb3361080e565b80610aca5750610aca33610829565b1515610ad557600080fd5b60085460ff1615610ae557600080fd5b6008805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b610b3033610f7c565b565b6006546001600160a01b031681565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561070a5780601f106106df5761010080835404028352916020019161070a565b60085460009060ff1615610bb457600080fd5b61073283836114e0565b336000818152600a602052604081205490919060ff1615610bde57600080fd5b6001600160a01b0384166000908152600a6020526040902054849060ff1615610c0657600080fd5b3360009081526009602052604090205415610c2657610c2433610fc4565b505b610c30858561152b565b95945050505050565b600a6020526000908152604090205460ff1681565b600960205281600052604060002081815481101515610c6957fe5b600091825260209091206002909102018054600190910154909250905082565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6000610cbf3361080e565b80610cce5750610cce33610829565b1515610cd957600080fd5b610ce4338585611548565b610cef848484611617565b506001949350505050565b6000610d053361080e565b80610d145750610d1433610829565b1515610d1f57600080fd5b6001600160a01b038416600090815260036020526040902054831115610ce457604051600160e51b62461bcd0281526004018080602001828103825260268152602001806118fe6026913960400191505060405180910390fd5b6000610d843361080e565b80610d935750610d9333610829565b1515610d9e57600080fd5b6001600160a01b0382166000908152600a602052604090205460ff1615610dc457600080fd5b6001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b6006546001600160a01b03163314610e2c57600080fd5b6001600160a01b0381161515610e4157600080fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b610ea63361080e565b80610eb55750610eb533610829565b1515610ec057600080fd5b60085460ff161515610ed157600080fd5b6008805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b60006001600160a01b0383161515610f2757600080fd5b3360008181526004602090815260408083206001600160a01b0388168085529083529281902086905580518681529051929392600080516020611924833981519152929181900390910190a350600192915050565b610f8d60078263ffffffff61173516565b6040516001600160a01b038216907fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f90600090a250565b6000805b6001600160a01b038316600090815260096020526040902054811015611041576001600160a01b038316600090815260096020526040902080544291908390811061100f57fe5b6000918252602090912060029091020154116110395761102f8382611315565b1561103957600019015b600101610fc8565b50600192915050565b60085460009060ff161561105d57600080fd5b611068848484611781565b949350505050565b60006001600160a01b038216151561108757600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60006001600160a01b03831615156110be57600080fd5b3360009081526004602090815260408083206001600160a01b03871684529091529020546110f2908363ffffffff61125316565b3360008181526004602090815260408083206001600160a01b038916808552908352928190208590558051948552519193600080516020611924833981519152929081900390910190a350600192915050565b6001600160a01b038216151561115a57600080fd5b60055461116d908263ffffffff61183816565b6005556001600160a01b038216600090815260036020526040902054611199908263ffffffff61183816565b6001600160a01b0383166000818152600360209081526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61120160078263ffffffff61184d16565b6040516001600160a01b038216907f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33990600090a250565b6001600160a01b031660009081526003602052604090205490565b60008282018381101561073257600080fd5b6001600160a01b0382166000908152600460209081526040808320338452909152902054611299908263ffffffff61183816565b6001600160a01b03831660009081526004602090815260408083203384529091529020556112c78282611145565b6001600160a01b038216600081815260046020908152604080832033808552908352928190205481519081529051929392600080516020611924833981519152929181900390910190a35050565b6001600160a01b038216600090815260096020526040812080548291908490811061133c57fe5b600091825260208083206001600290930201918201546001600160a01b0388168452600990915260409092208054919350908590811061137857fe5b60009182526020808320600290920290910182815560019081018390556001600160a01b038816835260099091526040909120805490916113bf919063ffffffff61183816565b815481106113c957fe5b906000526020600020906002020160096000876001600160a01b03166001600160a01b031681526020019081526020016000208581548110151561140957fe5b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b03871681526009909152604090208054600019019061145290826118a8565b506040805182815290516001600160a01b038716917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1919081900360200190a26001600160a01b0385166000908152600360205260409020546114bb908263ffffffff61125316565b6001600160a01b03861660009081526003602052604090205550600191505092915050565b60006001600160a01b03831615156114f757600080fd5b3360009081526004602090815260408083206001600160a01b03871684529091529020546110f2908363ffffffff61183816565b60085460009060ff161561153e57600080fd5b610732838361189b565b6001600160a01b038216151561155d57600080fd5b6001600160a01b038316600090815260036020526040902054611586908263ffffffff61183816565b6001600160a01b0380851660009081526003602052604080822093909355908416815220546115bb908263ffffffff61125316565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60004282116116705760408051600160e51b62461bcd02815260206004820152601460248201527f52656c656173652074696d6520696e76616c6964000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260036020526040902054611699908463ffffffff61183816565b6001600160a01b03851660008181526003602090815260408083209490945560098152838220845180860186528781528083018981528254600181810185559386529484902091516002909502909101938455519201919091558251868152908101859052825191927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b92918290030190a25060019392505050565b6001600160a01b038116151561174a57600080fd5b6117548282611070565b151561175f57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b03831660009081526004602090815260408083203384529091528120546117b5908363ffffffff61183816565b6001600160a01b03851660009081526004602090815260408083203384529091529020556117e4848484611548565b6001600160a01b038416600081815260046020908152604080832033808552908352928190205481519081529051929392600080516020611924833981519152929181900390910190a35060019392505050565b60008282111561184757600080fd5b50900390565b6001600160a01b038116151561186257600080fd5b61186c8282611070565b1561187657600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000611041338484611548565b8154818355818111156118d4576002028160020283600052602060002091820191016118d491906118d9565b505050565b61071291905b808211156118f957600080825560018201556002016118df565b509056fe5468657265206973206e6f7420656e6f7567682062616c616e6365206f6620686f6c6465722e8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a165627a7a7230582092ea3e8f0c2709c7e97212efc4878c5b932c79f5e26717dc90f6fd878aa699c10029