60806040526101f46009819055600a55600b805460ff191690556000600c553480156200002b57600080fd5b50604051620020af380380620020af8339810160408190526200004e91620004d7565b6040518060400160405280601581526020017f4b656e6e6564792046726565646f6d20546f6b656e00000000000000000000008152506040518060400160405280600381526020016212d19560ea1b8152508160039081620000b19190620005ba565b506004620000c08282620005ba565b505050620000dd620000d7620001cb60201b60201c565b620001cf565b6001600160a01b038116620001435760405162461bcd60e51b815260206004820152602160248201527f45524332303a2066656557616c6c657420746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b600d80546001600160a01b0319166001600160a01b0383161790556001600f6000620001776005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600f909252902080549091166001179055620001c3338362000221565b5050620006ad565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002795760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200013a565b6200028760008383620002f2565b80600260008282546200029b919062000686565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166000908152600e602052604090205460ff161580156200033557506001600160a01b0383166000908152600e602052604090205460ff16155b620003715760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016200013a565b6008546001600160a01b0316620003ff576005546001600160a01b0384811691161480620003ac57506005546001600160a01b038381169116145b620003fa5760405162461bcd60e51b815260206004820152601660248201527f74726164696e67206973206e6f7420737461727465640000000000000000000060448201526064016200013a565b505050565b600554600160a01b900460ff1680156200042657506008546001600160a01b038481169116145b15620003fa57600654816200044684620004bc60201b6200076e1760201c565b62000452919062000686565b11158015620004855750600754816200047684620004bc60201b6200076e1760201c565b62000482919062000686565b10155b620003fa5760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016200013a565b6001600160a01b031660009081526020819052604090205490565b60008060408385031215620004eb57600080fd5b825160208401519092506001600160a01b03811681146200050b57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200054157607f821691505b6020821081036200056257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003fa57600081815260208120601f850160051c81016020861015620005915750805b601f850160051c820191505b81811015620005b2578281556001016200059d565b505050505050565b81516001600160401b03811115620005d657620005d662000516565b620005ee81620005e784546200052c565b8462000568565b602080601f8311600181146200062657600084156200060d5750858301515b600019600386901b1c1916600185901b178555620005b2565b600085815260208120601f198616915b82811015620006575788860151825594840194600190910190840162000636565b5085821015620006765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008219821115620006a857634e487b7160e01b600052601160045260246000fd5b500190565b6119f280620006bd6000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80636d1b229d11610125578063a9059cbb116100ad578063f25f4b561161007c578063f25f4b5614610471578063f2fde38b14610484578063f55e44b014610497578063fa6fd6d7146104aa578063fe85b42b146104b757600080fd5b8063a9059cbb14610425578063aad41a4114610438578063c492f0461461044b578063dd62ed3e1461045e57600080fd5b806389f9a1d3116100f457806389f9a1d3146103dd5780638da5cb5b146103e657806395392094146103f757806395d89b411461040a578063a457c2d71461041257600080fd5b80636d1b229d1461039b57806370a08231146103ae578063715018a6146103c1578063860a32ec146103c957600080fd5b806328462813116101a8578063404e512911610177578063404e51291461031e5780634773a6a91461033157806349bd5a5e1461033a5780635342acb414610365578063667185241461038857600080fd5b806328462813146102c6578063313ce567146102e957806339509351146102f85780633aa633aa1461030b57600080fd5b80631ab99e12116101e45780631ab99e121461028c57806323b872dd146102955780632740c197146102a857806327b9bb9c146102bd57600080fd5b806306fdde0314610216578063095ea7b31461023457806316c021291461025757806318160ddd1461027a575b600080fd5b61021e6104c0565b60405161022b9190611439565b60405180910390f35b6102476102423660046114a5565b610552565b604051901515815260200161022b565b6102476102653660046114cf565b600e6020526000908152604090205460ff1681565b6002545b60405190815260200161022b565b61027e60075481565b6102476102a33660046114ea565b61056c565b6102bb6102b6366004611526565b610590565b005b61027e60095481565b6102476102d43660046114cf565b60106020526000908152604090205460ff1681565b6040516012815260200161022b565b6102476103063660046114a5565b61064e565b6102bb610319366004611558565b610670565b6102bb61032c36600461159a565b6106bf565b61027e600a5481565b60085461034d906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b6102476103733660046114cf565b600f6020526000908152604090205460ff1681565b6102bb6103963660046114cf565b6106f2565b6102476103a93660046115cd565b610751565b61027e6103bc3660046114cf565b61076e565b6102bb610789565b60055461024790600160a01b900460ff1681565b61027e60065481565b6005546001600160a01b031661034d565b6102bb61040536600461159a565b61079d565b61021e610812565b6102476104203660046114a5565b610821565b6102476104333660046114a5565b61089c565b61027e6104463660046116bc565b6108aa565b6102bb61045936600461177c565b610934565b61027e61046c366004611800565b610a28565b600d5461034d906001600160a01b031681565b6102bb6104923660046114cf565b610a53565b6102bb6104a536600461182a565b610acc565b600b546102479060ff1681565b61027e600c5481565b6060600380546104cf90611845565b80601f01602080910402602001604051908101604052809291908181526020018280546104fb90611845565b80156105485780601f1061051d57610100808354040283529160200191610548565b820191906000526020600020905b81548152906001019060200180831161052b57829003601f168201915b5050505050905090565b600033610560818585610b1f565b60019150505b92915050565b60003361057a858285610c43565b610585858585610cb7565b506001949350505050565b610598610e46565b6103848111156105ef5760405162461bcd60e51b815260206004820152601c60248201527f54686520746178204665652063616e6e6f74206578636565642039250000000060448201526064015b60405180910390fd5b8160010361060157600981905561060f565b8160020361060f57600a8190555b604080518381526020810183905233917fcf5b6c438b64611d8ee0722509d7ad5149d4f779f0b29bc845152f0d89e42e19910160405180910390a25050565b6000336105608185856106618383610a28565b61066b9190611895565b610b1f565b610678610e46565b60058054941515600160a01b0260ff60a01b1990951694909417909355600880546001600160a01b039093166001600160a01b031990931692909217909155600655600755565b6106c7610e46565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6106fa610e46565b600d80546001600160a01b0319166001600160a01b03831690811790915560405190815233907f362a006325d32978b283e449d254cfcf93e2cccc321603ead9a74238d8dbf36e906020015b60405180910390a250565b600061075b610e46565b6107653383610ea0565b5060015b919050565b6001600160a01b031660009081526020819052604090205490565b610791610e46565b61079b6000610fde565b565b6107a5610e46565b6001600160a01b0382166000818152601060205260409020805460ff1916831515179055336001600160a01b03167f1b0acd114abe3e45107dfd0d7da1fcae9eacf8c21eaf12480c6e9acf4fa212e083604051610806911515815260200190565b60405180910390a35050565b6060600480546104cf90611845565b6000338161082f8286610a28565b90508381101561088f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105858286868403610b1f565b600033610560818585610cb7565b60006108b4610e46565b81518351146108c257600080fd5b60648351106108d057600080fd5b60005b835181101561092b576109188482815181106108f1576108f16118ad565b602002602001015184838151811061090b5761090b6118ad565b602002602001015161089c565b5080610923816118c3565b9150506108d3565b50509051919050565b61093c610e46565b60005b82811015610a225781600f600086868581811061095e5761095e6118ad565b905060200201602081019061097391906114cf565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558383828181106109ad576109ad6118ad565b90506020020160208101906109c291906114cf565b6001600160a01b0316336001600160a01b03167fde503af4b0fa05bc65107b81b87bd48b2e376f9de424cee5c211600226868b8f84604051610a08911515815260200190565b60405180910390a380610a1a816118c3565b91505061093f565b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a5b610e46565b6001600160a01b038116610ac05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e6565b610ac981610fde565b50565b610ad4610e46565b600b805460ff1916821515179055336001600160a01b03167f6cccb45c83dd7502f4d55297e5cda25e6572ae82eae9084b72a9a7a4e3fa9c1582604051610746911515815260200190565b6001600160a01b038316610b815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105e6565b6001600160a01b038216610be25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105e6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610c4f8484610a28565b90506000198114610a225781811015610caa5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b610a228484848403610b1f565b6001600160a01b038316610cdd5760405162461bcd60e51b81526004016105e6906118dc565b6001600160a01b038216610d035760405162461bcd60e51b81526004016105e690611921565b600b5460ff1615610e36576001600160a01b03831660009081526010602052604081205460ff1615610d385750600954610d5e565b6001600160a01b03831660009081526010602052604090205460ff1615610d5e5750600a545b6001600160a01b0384166000908152600f602052604090205460ff1680610d9d57506001600160a01b0383166000908152600f602052604090205460ff165b80610de557506001600160a01b03841660009081526010602052604090205460ff16158015610de557506001600160a01b03831660009081526010602052604090205460ff16155b15610dee575060005b6000610e06612710610e008585611030565b906110b9565b90508015610e3357600d54610e269086906001600160a01b031683611114565b610e308382611249565b92505b50505b610e41838383611114565b505050565b6005546001600160a01b0316331461079b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e6565b6001600160a01b038216610f005760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b610f0c826000836112a5565b6001600160a01b03821660009081526020819052604090205481811015610f805760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008260000361104257506000610566565b600061104e8385611964565b90508261105b8583611983565b146110b25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105e6565b9392505050565b600080821161110a5760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016105e6565b6110b28284611983565b6001600160a01b03831661113a5760405162461bcd60e51b81526004016105e6906118dc565b6001600160a01b0382166111605760405162461bcd60e51b81526004016105e690611921565b61116b8383836112a5565b6001600160a01b038316600090815260208190526040902054818110156111e35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105e6565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a22565b60008282111561129b5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016105e6565b6110b282846119a5565b6001600160a01b0382166000908152600e602052604090205460ff161580156112e757506001600160a01b0383166000908152600e602052604090205460ff16155b6113215760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b60448201526064016105e6565b6008546001600160a01b031661139f576005546001600160a01b038481169116148061135a57506005546001600160a01b038381169116145b610e415760405162461bcd60e51b81526020600482015260166024820152751d1c98591a5b99c81a5cc81b9bdd081cdd185c9d195960521b60448201526064016105e6565b600554600160a01b900460ff1680156113c557506008546001600160a01b038481169116145b15610e4157600654816113d78461076e565b6113e19190611895565b111580156114045750600754816113f78461076e565b6114019190611895565b10155b610e415760405162461bcd60e51b8152602060048201526006602482015265119bdc989a5960d21b60448201526064016105e6565b600060208083528351808285015260005b818110156114665785810183015185820160400152820161144a565b81811115611478576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461076957600080fd5b600080604083850312156114b857600080fd5b6114c18361148e565b946020939093013593505050565b6000602082840312156114e157600080fd5b6110b28261148e565b6000806000606084860312156114ff57600080fd5b6115088461148e565b92506115166020850161148e565b9150604084013590509250925092565b6000806040838503121561153957600080fd5b50508035926020909101359150565b8035801515811461076957600080fd5b6000806000806080858703121561156e57600080fd5b61157785611548565b93506115856020860161148e565b93969395505050506040820135916060013590565b600080604083850312156115ad57600080fd5b6115b68361148e565b91506115c460208401611548565b90509250929050565b6000602082840312156115df57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611625576116256115e6565b604052919050565b600067ffffffffffffffff821115611647576116476115e6565b5060051b60200190565b600082601f83011261166257600080fd5b813560206116776116728361162d565b6115fc565b82815260059290921b8401810191818101908684111561169657600080fd5b8286015b848110156116b1578035835291830191830161169a565b509695505050505050565b600080604083850312156116cf57600080fd5b823567ffffffffffffffff808211156116e757600080fd5b818501915085601f8301126116fb57600080fd5b8135602061170b6116728361162d565b82815260059290921b8401810191818101908984111561172a57600080fd5b948201945b8386101561174f576117408661148e565b8252948201949082019061172f565b9650508601359250508082111561176557600080fd5b5061177285828601611651565b9150509250929050565b60008060006040848603121561179157600080fd5b833567ffffffffffffffff808211156117a957600080fd5b818601915086601f8301126117bd57600080fd5b8135818111156117cc57600080fd5b8760208260051b85010111156117e157600080fd5b6020928301955093506117f79186019050611548565b90509250925092565b6000806040838503121561181357600080fd5b61181c8361148e565b91506115c46020840161148e565b60006020828403121561183c57600080fd5b6110b282611548565b600181811c9082168061185957607f821691505b60208210810361187957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156118a8576118a861187f565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016118d5576118d561187f565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600081600019048311821515161561197e5761197e61187f565b500290565b6000826119a057634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156119b7576119b761187f565b50039056fea2646970667358221220f7d644b06046baa1abed36efffaef5a11364176da9df51dcd4fe13a151ffdff264736f6c634300080f0033000000000000000000000000000000000000000c9f2c9cd04674edea4000000000000000000000000000000073434f227d3a259a800813ec8fdd5636821cc4ac