0x6080604052600436106101fd5760003560e01c8063675279861161010d578063958c2e52116100a0578063dd62ed3e1161006f578063dd62ed3e146105ef578063f2fde38b14610635578063f5648a4f14610655578063f99e36bc1461066a578063ffecf5161461068457600080fd5b8063958c2e521461055f57806395d89b411461057f578063a9059cbb146105af578063d9d99c96146105cf57600080fd5b8063783efbc7116100dc578063783efbc7146104d45780638183b3c8146104f45780638bcea939146105095780638da5cb5b1461054157600080fd5b8063675279861461046057806370a0823114610480578063715018a6146104a0578063745d032f146104b557600080fd5b80631a841d0211610190578063313ce5671161015f578063313ce567146103b457806333251a0b146103d0578063353470be146103f057806345a119a3146104105780635fecd9261461044057600080fd5b80631a841d021461032e5780631cae21081461035e57806323b872dd146103745780632500ae8a1461039457600080fd5b806311b4181a116101cc57806311b4181a146102c257806318160ddd146102d75780631892a9e2146102ec57806318b78fe11461030e57600080fd5b806302fb0c5e1461020957806305b723911461023e57806306fdde0314610262578063095ea7b3146102a257600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506012546102299062010000900460ff1681565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025460105481565b604051908152602001610235565b34801561026e57600080fd5b5060408051808201909152600e81526d15d85c9c995b88109d5999995d1d60921b60208201525b604051610235919061211b565b3480156102ae57600080fd5b506102296102bd366004612188565b6106a4565b3480156102ce57600080fd5b50610229610757565b3480156102e357600080fd5b50610254610afa565b3480156102f857600080fd5b5061030c6103073660046121c9565b610b1a565b005b34801561031a57600080fd5b5061030c6103293660046121fe565b610b6f565b34801561033a57600080fd5b50610229610349366004612219565b601d6020526000908152604090205460ff1681565b34801561036a57600080fd5b5061025460115481565b34801561038057600080fd5b5061022961038f366004612236565b610bb3565b3480156103a057600080fd5b5061030c6103af3660046121c9565b610c17565b3480156103c057600080fd5b5060405160128152602001610235565b3480156103dc57600080fd5b5061030c6103eb366004612219565b610c6c565b3480156103fc57600080fd5b5061030c61040b366004612277565b610d1f565b34801561041c57600080fd5b5061022961042b366004612219565b601e6020526000908152604090205460ff1681565b34801561044c57600080fd5b5061030c61045b366004612219565b610df7565b34801561046c57600080fd5b5061030c61047b366004612299565b610eaa565b34801561048c57600080fd5b5061025461049b366004612219565b610ef1565b3480156104ac57600080fd5b5061030c610f0c565b3480156104c157600080fd5b5060125461022990610100900460ff1681565b3480156104e057600080fd5b5061030c6104ef3660046121fe565b610f80565b34801561050057600080fd5b5061030c610fca565b34801561051557600080fd5b50601754610529906001600160a01b031681565b6040516001600160a01b039091168152602001610235565b34801561054d57600080fd5b506000546001600160a01b0316610529565b34801561056b57600080fd5b50601854610529906001600160a01b031681565b34801561058b57600080fd5b506040805180820190915260078152661095519191551560ca1b6020820152610295565b3480156105bb57600080fd5b506102296105ca366004612188565b61101a565b3480156105db57600080fd5b5061030c6105ea3660046121fe565b611030565b3480156105fb57600080fd5b5061025461060a3660046122dc565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b34801561064157600080fd5b5061030c610650366004612219565b61106d565b34801561066157600080fd5b5061030c61115c565b34801561067657600080fd5b506012546102299060ff1681565b34801561069057600080fd5b5061030c61069f366004612219565b6111de565b6000336106cc5760405162461bcd60e51b81526004016106c390612315565b60405180910390fd5b6001600160a01b0383166106f25760405162461bcd60e51b81526004016106c39061235d565b3360008181526019602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b600080546001600160a01b031633146107825760405162461bcd60e51b81526004016106c3906123a3565b60125462010000900460ff16156107db5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164657320616c7265616479206163746976652100000060448201526064016106c3565b436010556107ec4262093a806112b4565b601155601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556000819052601b6020527f737a8aa320b777139cfebe450e173d90b49df21bdde0d83dcfdff4abee7622ee805460ff19166001179055610871308261085f6012600a6124e2565b61086c90620f42406124f1565b6112c0565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e29190612510565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561092a57600080fd5b505afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190612510565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e29190612510565b601780546001600160a01b0319166001600160a01b039290921691821790556000908152601b60205260409020805460ff1916600117905547610a7e5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526d20746f20476f206163746976652160901b60648201526084016106c3565b610a90610a8a30610ef1565b4761136e565b6016546012805465010000000000600160c81b031916650100000000006001600160a01b03938416810291909117918290559004166000908152601c60205260409020805460ff1916600117905550506012805464ff00ffffff1916640100010101179055600190565b6000610b086012600a6124e2565b610b1590620f42406124f1565b905090565b6000546001600160a01b03163314610b445760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b995760405162461bcd60e51b81526004016106c3906123a3565b601280549115156101000261ff0019909216919091179055565b6000610bc084848461143a565b610c0d843361086c8560405180606001604052806031815260200161264f603191396001600160a01b038a1660009081526019602090815260408083203384529091529020549190611af7565b5060019392505050565b6000546001600160a01b03163314610c415760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c965760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166000908152601d602052604090205460ff16610cfe5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016106c3565b6001600160a01b03166000908152601d60205260409020805460ff19169055565b6000546001600160a01b03163314610d495760405162461bcd60e51b81526004016106c3906123a3565b610d7681610d7084610d5d6012600a6124e2565b610d6a90620f42406124f1565b90611295565b906112a8565b600155610d8f6064610d706004610d5d6012600a6124e2565b6001541115610df35760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016106c3565b5050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166000908152601e602052604090205460ff16610e895760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016106c3565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b6000546001600160a01b03163314610ed45760405162461bcd60e51b81526004016106c3906123a3565b600a95909555600b93909355600c91909155600d55600e55600f55565b6001600160a01b03166000908152601a602052604090205490565b6000546001600160a01b03163314610f365760405162461bcd60e51b81526004016106c3906123a3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610faa5760405162461bcd60e51b81526004016106c3906123a3565b601280549115156401000000000264ff0000000019909216919091179055565b6000546001600160a01b03163314610ff45760405162461bcd60e51b81526004016106c3906123a3565b6110183061100a6000546001600160a01b031690565b61101330610ef1565b61143a565b565b600061102733848461143a565b50600192915050565b6000546001600160a01b0316331461105a5760405162461bcd60e51b81526004016106c3906123a3565b6012805460ff1916911515919091179055565b6000546001600160a01b031633146110975760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166111015760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016106c3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111865760405162461bcd60e51b81526004016106c3906123a3565b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146111d3576040519150601f19603f3d011682016040523d82523d6000602084013e6111d8565b606091505b50505050565b6000546001600160a01b031633146112085760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166000908152601e602052604090205460ff16156112715760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016106c3565b6001600160a01b03166000908152601e60205260409020805460ff19166001179055565b60006112a182846124f1565b9392505050565b60006112a1828461252d565b60006112a1828461254f565b6001600160a01b0383166112e65760405162461bcd60e51b81526004016106c390612315565b6001600160a01b03821661130c5760405162461bcd60e51b81526004016106c39061235d565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6018546113869030906001600160a01b0316846112c0565b60185460125460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0365010000000000909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114339190612567565b5050505050565b6001600160a01b03831661149e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c3565b6001600160a01b0382166115005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c3565b600081116115695760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106c3565b6001600160a01b0383166000908152601e602052604090205460ff16156115d25760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016106c3565b60125462010000900460ff1661166d576001600160a01b0383166000908152601c602052604090205460ff168061162157506001600160a01b0382166000908152601c602052604090205460ff165b61166d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67204973204e6f74206163746976652100000060448201526064016106c3565b60125460ff61010090910416151560011480156116a357506001600160a01b0382166000908152601b602052604090205460ff16155b15611723576001546116be826116b885610ef1565b906112b4565b11156117235760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016106c3565b60125460ff16156117ff576000546001600160a01b0384811691161480159061175a57506000546001600160a01b03838116911614155b801561176e57506001600160a01b03821615155b801561178857506016546001600160a01b03838116911614155b80156117a257506017546001600160a01b03838116911614155b156117ff5760005b60028110156117fd576010546117c090826112b4565b4314156117eb576001600160a01b0383166000908152601d60205260409020805460ff191660011790555b806117f581612595565b9150506117aa565b505b60006118186003546005546112b490919063ffffffff16565b9050600061182530610ef1565b600254601254919250821015906301000000900460ff161580156118535750601254640100000000900460ff165b80156118745750601754600090611872906001600160a01b0316610ef1565b115b80156118805750600083115b80156118a557506001600160a01b0385166000908152601c602052604090205460ff16155b80156118ca57506001600160a01b0386166000908152601c602052604090205460ff16155b80156118e357506017546001600160a01b038681169116145b80156118ec5750805b156118f9576118f9611b23565b6001600160a01b0386166000908152601c602052604090205460ff168061193857506001600160a01b0385166000908152601c602052604090205460ff165b1561196457600060068190556007819055600881905561195c906116b881806112b4565b600955611ae4565b6017546001600160a01b03878116911614156119a257600a546006819055600b546007819055600c54600881905561195c9290916116b891906112b4565b6017546001600160a01b0386811691161415611a3857600d546006819055600e546007819055600f5460088190556119e09290916116b891906112b4565b6009556001600160a01b0386166000908152601d602052604090205460ff168015611a0d57504260115410155b15611a3357605f600681905560006007819055600881905561195c916116b890826112b4565b611ae4565b6001600160a01b0386166000908152601d602052604090205460ff161580611a6257504260115411155b611ad45760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016106c3565b6000600681905560078190556008555b611aef868686611d53565b505050505050565b60008184841115611b1b5760405162461bcd60e51b81526004016106c3919061211b565b505050900390565b6012805463ff000000191663010000001790556000611b4130610ef1565b90506000611b626005546116b86004546003546112b490919063ffffffff16565b90506000611b7c60026005546112a890919063ffffffff16565b90506000611b8a8483611ef4565b905047611b9682611f00565b6000611ba24783611ef4565b90506000611bbf86610d706003548561129590919063ffffffff16565b90506000611bdc87610d706004548661129590919063ffffffff16565b90506000611bf482611bee8686611ef4565b90611ef4565b600060038190556004819055600581905560135460405192935090916001600160a01b039091169085908381818185875af1925050503d8060008114611c56576040519150601f19603f3d011682016040523d82523d6000602084013e611c5b565b606091505b50506014546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611cab576040519150601f19603f3d011682016040523d82523d6000602084013e611cb0565b606091505b50909150508115801590611cc357508715155b15611cd257611cd2888361136e565b6706f05b59d3b20000471115611d3a576015546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611d2f576040519150601f19603f3d011682016040523d82523d6000602084013e611d34565b606091505b50909150505b50506012805463ff000000191690555050505050505050565b60095415611e53576000611d6682612061565b90506000611d748383611ef4565b9050611d7f8261208f565b6001600160a01b0385166000908152601a602052604081208054859290611da79084906125b0565b90915550506001600160a01b0384166000908152601a602052604081208054839290611dd490849061254f565b9091555050306000908152601a602052604081208054849290611df890849061254f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e4491815260200190565b60405180910390a35050505050565b6001600160a01b0383166000908152601a602052604081208054839290611e7b9084906125b0565b90915550506001600160a01b0382166000908152601a602052604081208054839290611ea890849061254f565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136191815260200190565b60006112a182846125b0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f3557611f356125c7565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f8957600080fd5b505afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190612510565b81600181518110611fd457611fd46125c7565b6001600160a01b039283166020918202929092010152601854611ffa91309116846112c0565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906120339085906000908690309042906004016125dd565b600060405180830381600087803b15801561204d57600080fd5b505af1158015611aef573d6000803e3d6000fd5b60006107516064610d706120886008546116b86007546006546112b490919063ffffffff16565b8590611295565b6120aa600954610d706006548461129590919063ffffffff16565b600360008282546120bb919061254f565b90915550506009546007546120d69190610d70908490611295565b600460008282546120e7919061254f565b90915550506009546008546121029190610d70908490611295565b60056000828254612113919061254f565b909155505050565b600060208083528351808285015260005b818110156121485785810183015185820160400152820161212c565b8181111561215a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461218557600080fd5b50565b6000806040838503121561219b57600080fd5b82356121a681612170565b946020939093013593505050565b803580151581146121c457600080fd5b919050565b600080604083850312156121dc57600080fd5b82356121e781612170565b91506121f5602084016121b4565b90509250929050565b60006020828403121561221057600080fd5b6112a1826121b4565b60006020828403121561222b57600080fd5b81356112a181612170565b60008060006060848603121561224b57600080fd5b833561225681612170565b9250602084013561226681612170565b929592945050506040919091013590565b6000806040838503121561228a57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156122b257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156122ef57600080fd5b82356122fa81612170565b9150602083013561230a81612170565b809150509250929050565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561243957816000190482111561241f5761241f6123e8565b8085161561242c57918102915b93841c9390800290612403565b509250929050565b60008261245057506001610751565b8161245d57506000610751565b8160018114612473576002811461247d57612499565b6001915050610751565b60ff84111561248e5761248e6123e8565b50506001821b610751565b5060208310610133831016604e8410600b84101617156124bc575081810a610751565b6124c683836123fe565b80600019048211156124da576124da6123e8565b029392505050565b60006112a160ff841683612441565b600081600019048311821515161561250b5761250b6123e8565b500290565b60006020828403121561252257600080fd5b81516112a181612170565b60008261254a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612562576125626123e8565b500190565b60008060006060848603121561257c57600080fd5b8351925060208401519150604084015190509250925092565b60006000198214156125a9576125a96123e8565b5060010190565b6000828210156125c2576125c26123e8565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561262d5784516001600160a01b031683529383019391830191600101612608565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c6bafa289e62fa5806d8cd0f90356028a1f3cced1ed02c8eaf4ff7d5eacacbca64736f6c63430008090033
0x60806040526012805464ff00ffffff19169055601680546001600160a01b03191661dead1790556000620000303390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506013805473e5649481b798d189c8314b22af1a2be3259e5c9c6001600160a01b0319918216811790925560148054821683178155601580549092169092179055600a8190556000600b819055600c819055600d91909155600e819055600f55620000ec6000546001600160a01b031690565b601280546001600160a01b03929092166501000000000002600160281b600160c81b03199092169190911781556200012690600a620004ac565b6200013590620f4240620004bd565b306000908152601a60205260409020556200019660646200018260026200015f6012600a620004ac565b6200016e90620f4240620004bd565b6200037460201b620012951790919060201c565b6200038b60201b620012a81790919060201c565b600155620001b46127106200018260056200015f6012600a620004ac565b6002556001601c6000620001d06000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560165482168152601c845282812080548616600190811790915530808352848320805488168317905560135484168352848320805488168317905560145484168352848320805488168317905560125465010000000000900490931682528382208054871682179055918152601b9384905291822080549094168117909355620002906000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560135482168152601b909352818320805485166001908117909155601454821684528284208054861682179055601280546501000000000090048316855283852080548716831790556016549092168452918320805490941690911790925530917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200034e90600a620004ac565b6200035d90620f4240620004bd565b60405190815260200160405180910390a362000502565b6000620003828284620004bd565b90505b92915050565b6000620003828284620004df565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f0578160001904821115620003d457620003d462000399565b80851615620003e257918102915b93841c9390800290620003b4565b509250929050565b600082620004095750600162000385565b81620004185750600062000385565b81600181146200043157600281146200043c576200045c565b600191505062000385565b60ff84111562000450576200045062000399565b50506001821b62000385565b5060208310610133831016604e8410600b841016171562000481575081810a62000385565b6200048d8383620003af565b8060001904821115620004a457620004a462000399565b029392505050565b60006200038260ff841683620003f8565b6000816000190483118215151615620004da57620004da62000399565b500290565b600082620004fd57634e487b7160e01b600052601260045260246000fd5b500490565b6126b580620005126000396000f3fe6080604052600436106101fd5760003560e01c8063675279861161010d578063958c2e52116100a0578063dd62ed3e1161006f578063dd62ed3e146105ef578063f2fde38b14610635578063f5648a4f14610655578063f99e36bc1461066a578063ffecf5161461068457600080fd5b8063958c2e521461055f57806395d89b411461057f578063a9059cbb146105af578063d9d99c96146105cf57600080fd5b8063783efbc7116100dc578063783efbc7146104d45780638183b3c8146104f45780638bcea939146105095780638da5cb5b1461054157600080fd5b8063675279861461046057806370a0823114610480578063715018a6146104a0578063745d032f146104b557600080fd5b80631a841d0211610190578063313ce5671161015f578063313ce567146103b457806333251a0b146103d0578063353470be146103f057806345a119a3146104105780635fecd9261461044057600080fd5b80631a841d021461032e5780631cae21081461035e57806323b872dd146103745780632500ae8a1461039457600080fd5b806311b4181a116101cc57806311b4181a146102c257806318160ddd146102d75780631892a9e2146102ec57806318b78fe11461030e57600080fd5b806302fb0c5e1461020957806305b723911461023e57806306fdde0314610262578063095ea7b3146102a257600080fd5b3661020457005b600080fd5b34801561021557600080fd5b506012546102299062010000900460ff1681565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b5061025460105481565b604051908152602001610235565b34801561026e57600080fd5b5060408051808201909152600e81526d15d85c9c995b88109d5999995d1d60921b60208201525b604051610235919061211b565b3480156102ae57600080fd5b506102296102bd366004612188565b6106a4565b3480156102ce57600080fd5b50610229610757565b3480156102e357600080fd5b50610254610afa565b3480156102f857600080fd5b5061030c6103073660046121c9565b610b1a565b005b34801561031a57600080fd5b5061030c6103293660046121fe565b610b6f565b34801561033a57600080fd5b50610229610349366004612219565b601d6020526000908152604090205460ff1681565b34801561036a57600080fd5b5061025460115481565b34801561038057600080fd5b5061022961038f366004612236565b610bb3565b3480156103a057600080fd5b5061030c6103af3660046121c9565b610c17565b3480156103c057600080fd5b5060405160128152602001610235565b3480156103dc57600080fd5b5061030c6103eb366004612219565b610c6c565b3480156103fc57600080fd5b5061030c61040b366004612277565b610d1f565b34801561041c57600080fd5b5061022961042b366004612219565b601e6020526000908152604090205460ff1681565b34801561044c57600080fd5b5061030c61045b366004612219565b610df7565b34801561046c57600080fd5b5061030c61047b366004612299565b610eaa565b34801561048c57600080fd5b5061025461049b366004612219565b610ef1565b3480156104ac57600080fd5b5061030c610f0c565b3480156104c157600080fd5b5060125461022990610100900460ff1681565b3480156104e057600080fd5b5061030c6104ef3660046121fe565b610f80565b34801561050057600080fd5b5061030c610fca565b34801561051557600080fd5b50601754610529906001600160a01b031681565b6040516001600160a01b039091168152602001610235565b34801561054d57600080fd5b506000546001600160a01b0316610529565b34801561056b57600080fd5b50601854610529906001600160a01b031681565b34801561058b57600080fd5b506040805180820190915260078152661095519191551560ca1b6020820152610295565b3480156105bb57600080fd5b506102296105ca366004612188565b61101a565b3480156105db57600080fd5b5061030c6105ea3660046121fe565b611030565b3480156105fb57600080fd5b5061025461060a3660046122dc565b6001600160a01b03918216600090815260196020908152604080832093909416825291909152205490565b34801561064157600080fd5b5061030c610650366004612219565b61106d565b34801561066157600080fd5b5061030c61115c565b34801561067657600080fd5b506012546102299060ff1681565b34801561069057600080fd5b5061030c61069f366004612219565b6111de565b6000336106cc5760405162461bcd60e51b81526004016106c390612315565b60405180910390fd5b6001600160a01b0383166106f25760405162461bcd60e51b81526004016106c39061235d565b3360008181526019602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b600080546001600160a01b031633146107825760405162461bcd60e51b81526004016106c3906123a3565b60125462010000900460ff16156107db5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164657320616c7265616479206163746976652100000060448201526064016106c3565b436010556107ec4262093a806112b4565b601155601880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556000819052601b6020527f737a8aa320b777139cfebe450e173d90b49df21bdde0d83dcfdff4abee7622ee805460ff19166001179055610871308261085f6012600a6124e2565b61086c90620f42406124f1565b6112c0565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108aa57600080fd5b505afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e29190612510565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561092a57600080fd5b505afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190612510565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e29190612510565b601780546001600160a01b0319166001600160a01b039290921691821790556000908152601b60205260409020805460ff1916600117905547610a7e5760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526d20746f20476f206163746976652160901b60648201526084016106c3565b610a90610a8a30610ef1565b4761136e565b6016546012805465010000000000600160c81b031916650100000000006001600160a01b03938416810291909117918290559004166000908152601c60205260409020805460ff1916600117905550506012805464ff00ffffff1916640100010101179055600190565b6000610b086012600a6124e2565b610b1590620f42406124f1565b905090565b6000546001600160a01b03163314610b445760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b995760405162461bcd60e51b81526004016106c3906123a3565b601280549115156101000261ff0019909216919091179055565b6000610bc084848461143a565b610c0d843361086c8560405180606001604052806031815260200161264f603191396001600160a01b038a1660009081526019602090815260408083203384529091529020549190611af7565b5060019392505050565b6000546001600160a01b03163314610c415760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c965760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166000908152601d602052604090205460ff16610cfe5760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016106c3565b6001600160a01b03166000908152601d60205260409020805460ff19169055565b6000546001600160a01b03163314610d495760405162461bcd60e51b81526004016106c3906123a3565b610d7681610d7084610d5d6012600a6124e2565b610d6a90620f42406124f1565b90611295565b906112a8565b600155610d8f6064610d706004610d5d6012600a6124e2565b6001541115610df35760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016106c3565b5050565b6000546001600160a01b03163314610e215760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166000908152601e602052604090205460ff16610e895760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016106c3565b6001600160a01b03166000908152601e60205260409020805460ff19169055565b6000546001600160a01b03163314610ed45760405162461bcd60e51b81526004016106c3906123a3565b600a95909555600b93909355600c91909155600d55600e55600f55565b6001600160a01b03166000908152601a602052604090205490565b6000546001600160a01b03163314610f365760405162461bcd60e51b81526004016106c3906123a3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610faa5760405162461bcd60e51b81526004016106c3906123a3565b601280549115156401000000000264ff0000000019909216919091179055565b6000546001600160a01b03163314610ff45760405162461bcd60e51b81526004016106c3906123a3565b6110183061100a6000546001600160a01b031690565b61101330610ef1565b61143a565b565b600061102733848461143a565b50600192915050565b6000546001600160a01b0316331461105a5760405162461bcd60e51b81526004016106c3906123a3565b6012805460ff1916911515919091179055565b6000546001600160a01b031633146110975760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166111015760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016106c3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111865760405162461bcd60e51b81526004016106c3906123a3565b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146111d3576040519150601f19603f3d011682016040523d82523d6000602084013e6111d8565b606091505b50505050565b6000546001600160a01b031633146112085760405162461bcd60e51b81526004016106c3906123a3565b6001600160a01b0381166000908152601e602052604090205460ff16156112715760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016106c3565b6001600160a01b03166000908152601e60205260409020805460ff19166001179055565b60006112a182846124f1565b9392505050565b60006112a1828461252d565b60006112a1828461254f565b6001600160a01b0383166112e65760405162461bcd60e51b81526004016106c390612315565b6001600160a01b03821661130c5760405162461bcd60e51b81526004016106c39061235d565b6001600160a01b0383811660008181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6018546113869030906001600160a01b0316846112c0565b60185460125460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0365010000000000909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156113fa57600080fd5b505af115801561140e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114339190612567565b5050505050565b6001600160a01b03831661149e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c3565b6001600160a01b0382166115005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c3565b600081116115695760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106c3565b6001600160a01b0383166000908152601e602052604090205460ff16156115d25760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016106c3565b60125462010000900460ff1661166d576001600160a01b0383166000908152601c602052604090205460ff168061162157506001600160a01b0382166000908152601c602052604090205460ff165b61166d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67204973204e6f74206163746976652100000060448201526064016106c3565b60125460ff61010090910416151560011480156116a357506001600160a01b0382166000908152601b602052604090205460ff16155b15611723576001546116be826116b885610ef1565b906112b4565b11156117235760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016106c3565b60125460ff16156117ff576000546001600160a01b0384811691161480159061175a57506000546001600160a01b03838116911614155b801561176e57506001600160a01b03821615155b801561178857506016546001600160a01b03838116911614155b80156117a257506017546001600160a01b03838116911614155b156117ff5760005b60028110156117fd576010546117c090826112b4565b4314156117eb576001600160a01b0383166000908152601d60205260409020805460ff191660011790555b806117f581612595565b9150506117aa565b505b60006118186003546005546112b490919063ffffffff16565b9050600061182530610ef1565b600254601254919250821015906301000000900460ff161580156118535750601254640100000000900460ff165b80156118745750601754600090611872906001600160a01b0316610ef1565b115b80156118805750600083115b80156118a557506001600160a01b0385166000908152601c602052604090205460ff16155b80156118ca57506001600160a01b0386166000908152601c602052604090205460ff16155b80156118e357506017546001600160a01b038681169116145b80156118ec5750805b156118f9576118f9611b23565b6001600160a01b0386166000908152601c602052604090205460ff168061193857506001600160a01b0385166000908152601c602052604090205460ff165b1561196457600060068190556007819055600881905561195c906116b881806112b4565b600955611ae4565b6017546001600160a01b03878116911614156119a257600a546006819055600b546007819055600c54600881905561195c9290916116b891906112b4565b6017546001600160a01b0386811691161415611a3857600d546006819055600e546007819055600f5460088190556119e09290916116b891906112b4565b6009556001600160a01b0386166000908152601d602052604090205460ff168015611a0d57504260115410155b15611a3357605f600681905560006007819055600881905561195c916116b890826112b4565b611ae4565b6001600160a01b0386166000908152601d602052604090205460ff161580611a6257504260115411155b611ad45760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016106c3565b6000600681905560078190556008555b611aef868686611d53565b505050505050565b60008184841115611b1b5760405162461bcd60e51b81526004016106c3919061211b565b505050900390565b6012805463ff000000191663010000001790556000611b4130610ef1565b90506000611b626005546116b86004546003546112b490919063ffffffff16565b90506000611b7c60026005546112a890919063ffffffff16565b90506000611b8a8483611ef4565b905047611b9682611f00565b6000611ba24783611ef4565b90506000611bbf86610d706003548561129590919063ffffffff16565b90506000611bdc87610d706004548661129590919063ffffffff16565b90506000611bf482611bee8686611ef4565b90611ef4565b600060038190556004819055600581905560135460405192935090916001600160a01b039091169085908381818185875af1925050503d8060008114611c56576040519150601f19603f3d011682016040523d82523d6000602084013e611c5b565b606091505b50506014546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611cab576040519150601f19603f3d011682016040523d82523d6000602084013e611cb0565b606091505b50909150508115801590611cc357508715155b15611cd257611cd2888361136e565b6706f05b59d3b20000471115611d3a576015546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611d2f576040519150601f19603f3d011682016040523d82523d6000602084013e611d34565b606091505b50909150505b50506012805463ff000000191690555050505050505050565b60095415611e53576000611d6682612061565b90506000611d748383611ef4565b9050611d7f8261208f565b6001600160a01b0385166000908152601a602052604081208054859290611da79084906125b0565b90915550506001600160a01b0384166000908152601a602052604081208054839290611dd490849061254f565b9091555050306000908152601a602052604081208054849290611df890849061254f565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e4491815260200190565b60405180910390a35050505050565b6001600160a01b0383166000908152601a602052604081208054839290611e7b9084906125b0565b90915550506001600160a01b0382166000908152601a602052604081208054839290611ea890849061254f565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161136191815260200190565b60006112a182846125b0565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f3557611f356125c7565b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611f8957600080fd5b505afa158015611f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc19190612510565b81600181518110611fd457611fd46125c7565b6001600160a01b039283166020918202929092010152601854611ffa91309116846112c0565b60185460405163791ac94760e01b81526001600160a01b039091169063791ac947906120339085906000908690309042906004016125dd565b600060405180830381600087803b15801561204d57600080fd5b505af1158015611aef573d6000803e3d6000fd5b60006107516064610d706120886008546116b86007546006546112b490919063ffffffff16565b8590611295565b6120aa600954610d706006548461129590919063ffffffff16565b600360008282546120bb919061254f565b90915550506009546007546120d69190610d70908490611295565b600460008282546120e7919061254f565b90915550506009546008546121029190610d70908490611295565b60056000828254612113919061254f565b909155505050565b600060208083528351808285015260005b818110156121485785810183015185820160400152820161212c565b8181111561215a576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461218557600080fd5b50565b6000806040838503121561219b57600080fd5b82356121a681612170565b946020939093013593505050565b803580151581146121c457600080fd5b919050565b600080604083850312156121dc57600080fd5b82356121e781612170565b91506121f5602084016121b4565b90509250929050565b60006020828403121561221057600080fd5b6112a1826121b4565b60006020828403121561222b57600080fd5b81356112a181612170565b60008060006060848603121561224b57600080fd5b833561225681612170565b9250602084013561226681612170565b929592945050506040919091013590565b6000806040838503121561228a57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156122b257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156122ef57600080fd5b82356122fa81612170565b9150602083013561230a81612170565b809150509250929050565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561243957816000190482111561241f5761241f6123e8565b8085161561242c57918102915b93841c9390800290612403565b509250929050565b60008261245057506001610751565b8161245d57506000610751565b8160018114612473576002811461247d57612499565b6001915050610751565b60ff84111561248e5761248e6123e8565b50506001821b610751565b5060208310610133831016604e8410600b84101617156124bc575081810a610751565b6124c683836123fe565b80600019048211156124da576124da6123e8565b029392505050565b60006112a160ff841683612441565b600081600019048311821515161561250b5761250b6123e8565b500290565b60006020828403121561252257600080fd5b81516112a181612170565b60008261254a57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612562576125626123e8565b500190565b60008060006060848603121561257c57600080fd5b8351925060208401519150604084015190509250925092565b60006000198214156125a9576125a96123e8565b5060010190565b6000828210156125c2576125c26123e8565b500390565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561262d5784516001600160a01b031683529383019391830191600101612608565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c6bafa289e62fa5806d8cd0f90356028a1f3cced1ed02c8eaf4ff7d5eacacbca64736f6c63430008090033