60806040523480156200001157600080fd5b506040516200271a3803806200271a8339810160408190526200003491620007f5565b6040518060400160405280600781526020016626b2b3b0b43ab160c91b81525060405180604001604052806003815260200162242aa160e91b815250838360400151836003908162000087919062000932565b50600462000096848262000932565b50600580546001600160a01b03909216610100026001600160a81b031990921660ff909316929092171790555060009050620000cf3390565b600680546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604080820151600c80546001600160a01b039092166001600160a01b03199283161790558251600b55602080840151600a5560078054909216737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255825163c45a015560e01b81529251919263c45a015592600482810193928290030181865afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce9190620009fe565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002579190620009fe565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb9190620009fe565b600880546001600160a01b0319166001600160a01b03929092169182179055620002f79060016200043c565b620003166200030e6006546001600160a01b031690565b60016200052c565b600c546200032f906001600160a01b031660016200052c565b6200033c3060016200052c565b60075462000355906001600160a01b031660016200052c565b6200036282600a62000b2f565b6200037084611388620005e7565b6200037d90600162000b40565b62000389919062000b56565b600955620003a7612710620003a084600a62000b2f565b90620005e7565b838260600151620003b9919062000b56565b620003c5919062000b56565b600d55620003dc612710620003a084600a62000b2f565b838260800151620003ee919062000b56565b620003fa919062000b56565b600e5562000433620004146006546001600160a01b031690565b6200042184600a62000b2f565b6200042d908662000b56565b6200063a565b50505062000be3565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503620004d85760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084015b60405180910390fd5b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546001600160a01b03163314620005885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620004cf565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b60006200063183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200071e60201b60201c565b90505b92915050565b6001600160a01b038216620006925760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004cf565b600254620006a190826200075f565b6002556001600160a01b038216600090815260208190526040902054620006c990826200075f565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008183620007425760405162461bcd60e51b8152600401620004cf919062000b70565b50600062000751848662000bc0565b95945050505050565b505050565b6000806200076e838562000b40565b905083811015620006315760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620004cf565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620007f057600080fd5b919050565b600080600083850360e08112156200080c57600080fd5b84519350602085015160ff811681146200082557600080fd5b925060a0603f19820112156200083a57600080fd5b5060405160a081016001600160401b0381118282101715620008605762000860620007c2565b60409081528501518152606085015160208201526200088260808601620007d8565b604082015260a0850151606082015260c0909401516080850152509093909250565b600181811c90821680620008b957607f821691505b602082108103620008da57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200075a57600081815260208120601f850160051c81016020861015620009095750805b601f850160051c820191505b818110156200092a5782815560010162000915565b505050505050565b81516001600160401b038111156200094e576200094e620007c2565b62000966816200095f8454620008a4565b84620008e0565b602080601f8311600181146200099e5760008415620009855750858301515b600019600386901b1c1916600185901b1785556200092a565b600085815260208120601f198616915b82811015620009cf57888601518255948401946001909101908401620009ae565b5085821015620009ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000a1157600080fd5b6200063182620007d8565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a7357816000190482111562000a575762000a5762000a1c565b8085161562000a6557918102915b93841c939080029062000a37565b509250929050565b60008262000a8c5750600162000634565b8162000a9b5750600062000634565b816001811462000ab4576002811462000abf5762000adf565b600191505062000634565b60ff84111562000ad35762000ad362000a1c565b50506001821b62000634565b5060208310610133831016604e8410600b841016171562000b04575081810a62000634565b62000b10838362000a32565b806000190482111562000b275762000b2762000a1c565b029392505050565b60006200063160ff84168362000a7b565b8082018082111562000634576200063462000a1c565b808202811582820484141762000634576200063462000a1c565b600060208083528351808285015260005b8181101562000b9f5785810183015185820160400152820162000b81565b506000604082860101526040601f19601f8301168501019250505092915050565b60008262000bde57634e487b7160e01b600052601260045260246000fd5b500490565b611b278062000bf36000396000f3fe6080604052600436106101c65760003560e01c806375f0a874116100f7578063a9059cbb11610095578063d2889fb011610064578063d2889fb014610526578063dd62ed3e1461053c578063e2f4560514610582578063f2fde38b1461059857600080fd5b8063a9059cbb146104a0578063aa4bde28146104c0578063b62496f5146104d6578063c02466681461050657600080fd5b806395d89b41116100d157806395d89b41146104355780639a7a23d61461044a578063a045bfef1461046a578063a457c2d71461048057600080fd5b806375f0a874146103e15780638c0b5e22146104015780638da5cb5b1461041757600080fd5b806349bd5a5e1161016457806365b8dbc01161013e57806365b8dbc01461036157806370a0823114610381578063715018a6146103b7578063751039fc146103cc57600080fd5b806349bd5a5e146102e65780634fbee193146103065780635d098b381461033f57600080fd5b806318160ddd116101a057806318160ddd1461026557806323b872dd14610284578063313ce567146102a457806339509351146102c657600080fd5b806306fdde03146101d2578063095ea7b3146101fd5780631694505e1461022d57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76105b8565b6040516101f49190611781565b60405180910390f35b34801561020957600080fd5b5061021d6102183660046117e7565b61064a565b60405190151581526020016101f4565b34801561023957600080fd5b5060075461024d906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b34801561027157600080fd5b506002545b6040519081526020016101f4565b34801561029057600080fd5b5061021d61029f366004611813565b610661565b3480156102b057600080fd5b5060055460405160ff90911681526020016101f4565b3480156102d257600080fd5b5061021d6102e13660046117e7565b6106ca565b3480156102f257600080fd5b5060085461024d906001600160a01b031681565b34801561031257600080fd5b5061021d610321366004611854565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561034b57600080fd5b5061035f61035a366004611854565b610700565b005b34801561036d57600080fd5b5061035f61037c366004611854565b610755565b34801561038d57600080fd5b5061027661039c366004611854565b6001600160a01b031660009081526020819052604090205490565b3480156103c357600080fd5b5061035f6109bf565b3480156103d857600080fd5b5061035f610a33565b3480156103ed57600080fd5b50600c5461024d906001600160a01b031681565b34801561040d57600080fd5b50610276600d5481565b34801561042357600080fd5b506006546001600160a01b031661024d565b34801561044157600080fd5b506101e7610a6a565b34801561045657600080fd5b5061035f610465366004611871565b610a79565b34801561047657600080fd5b50610276600a5481565b34801561048c57600080fd5b5061021d61049b3660046117e7565b610b3f565b3480156104ac57600080fd5b5061021d6104bb3660046117e7565b610b8e565b3480156104cc57600080fd5b50610276600e5481565b3480156104e257600080fd5b5061021d6104f1366004611854565b60106020526000908152604090205460ff1681565b34801561051257600080fd5b5061035f610521366004611871565b610b9b565b34801561053257600080fd5b50610276600b5481565b34801561054857600080fd5b506102766105573660046118af565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561058e57600080fd5b5061027660095481565b3480156105a457600080fd5b5061035f6105b3366004611854565b610c24565b6060600380546105c7906118dd565b80601f01602080910402602001604051908101604052809291908181526020018280546105f3906118dd565b80156106405780601f1061061557610100808354040283529160200191610640565b820191906000526020600020905b81548152906001019060200180831161062357829003601f168201915b5050505050905090565b6000610657338484610d0f565b5060015b92915050565b600061066e848484610e34565b6106c084336106bb85604051806060016040528060288152602001611aa5602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919061112b565b610d0f565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106579185906106bb9086611165565b6006546001600160a01b031633146107335760405162461bcd60e51b815260040161072a90611917565b60405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316331461077f5760405162461bcd60e51b815260040161072a90611917565b6007546001600160a01b03908116908216036107e95760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b606482015260840161072a565b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a01559160048083019260209291908290030181865afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a4919061194c565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092a919061194c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610977573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099b919061194c565b600880546001600160a01b0319166001600160a01b03929092169190911790555050565b6006546001600160a01b031633146109e95760405162461bcd60e51b815260040161072a90611917565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b03163314610a5d5760405162461bcd60e51b815260040161072a90611917565b600019600e819055600d55565b6060600480546105c7906118dd565b6006546001600160a01b03163314610aa35760405162461bcd60e51b815260040161072a90611917565b6008546001600160a01b0390811690831603610b315760405162461bcd60e51b815260206004820152604160248201527f54686520556e697377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d206175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a40161072a565b610b3b82826111cb565b5050565b600061065733846106bb85604051806060016040528060258152602001611acd602591393360009081526001602090815260408083206001600160a01b038d168452909152902054919061112b565b6000610657338484610e34565b6006546001600160a01b03163314610bc55760405162461bcd60e51b815260040161072a90611917565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b03163314610c4e5760405162461bcd60e51b815260040161072a90611917565b6001600160a01b038116610cb35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072a565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072a565b6001600160a01b038216610dd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382161580610e5457506001600160a01b03821661dead145b80610e9957506001600160a01b0383166000908152600f602052604090205460ff1680610e9957506001600160a01b0382166000908152600f602052604090205460ff165b80610ea2575080155b15610eb757610eb28383836112b5565b505050565b600d54811115610f1a5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161072a565b6008546001600160a01b03838116911614610fa5576001600160a01b038216600090815260208190526040902054600e54610f55838361197f565b1115610fa35760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161072a565b505b3060009081526020819052604090205460095481108015908190610fd35750600854600160a01b900460ff16155b8015610ff857506001600160a01b03851660009081526010602052604090205460ff16155b1561103d576008805460ff60a01b1916600160a01b17905581801561102e57600c5461102e9082906001600160a01b03166114bd565b506008805460ff60a01b191690555b6008546001600160a01b0386166000908152600f602052604090205460ff600160a01b90920482161591168061108b57506001600160a01b0385166000908152600f602052604090205460ff165b15611094575060005b80156111185760006110bd6127106110b7600b54886114fb90919063ffffffff16565b9061157d565b6001600160a01b03871660009081526010602052604090205490915060ff16156110ff576110fc6127106110b7600a54886114fb90919063ffffffff16565b90505b61110985826115bf565b94506111168730836112b5565b505b6111238686866112b5565b505050505050565b6000818484111561114f5760405162461bcd60e51b815260040161072a9190611781565b50600061115c8486611992565b95945050505050565b600080611172838561197f565b9050838110156111c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072a565b9392505050565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036112615760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840161072a565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166113195760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072a565b6001600160a01b03821661137b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072a565b6005546040516370a0823160e01b81526001600160a01b03858116600483015261143d92600092610100909104909116906370a0823190602401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f691906119a5565b116114015781611404565b60005b604051806060016040528060268152602001611a7f602691396001600160a01b038616600090815260208190526040902054919061112b565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461146c9082611165565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610e27565b6114c682611601565b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610eb2573d6000803e3d6000fd5b60008260000361150d5750600061065b565b600061151983856119be565b90508261152685836119d5565b146111c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072a565b60006111c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611753565b60006111c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061112b565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611636576116366119f7565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561168f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b3919061194c565b816001815181106116c6576116c66119f7565b6001600160a01b0392831660209182029290920101526007546116ec9130911684610d0f565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611725908590600090869030904290600401611a0d565b600060405180830381600087803b15801561173f57600080fd5b505af1158015611123573d6000803e3d6000fd5b600081836117745760405162461bcd60e51b815260040161072a9190611781565b50600061115c84866119d5565b600060208083528351808285015260005b818110156117ae57858101830151858201604001528201611792565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117e457600080fd5b50565b600080604083850312156117fa57600080fd5b8235611805816117cf565b946020939093013593505050565b60008060006060848603121561182857600080fd5b8335611833816117cf565b92506020840135611843816117cf565b929592945050506040919091013590565b60006020828403121561186657600080fd5b81356111c4816117cf565b6000806040838503121561188457600080fd5b823561188f816117cf565b9150602083013580151581146118a457600080fd5b809150509250929050565b600080604083850312156118c257600080fd5b82356118cd816117cf565b915060208301356118a4816117cf565b600181811c908216806118f157607f821691505b60208210810361191157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561195e57600080fd5b81516111c4816117cf565b634e487b7160e01b600052601160045260246000fd5b8082018082111561065b5761065b611969565b8181038181111561065b5761065b611969565b6000602082840312156119b757600080fd5b5051919050565b808202811582820484141761065b5761065b611969565b6000826119f257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a5d5784516001600160a01b031683529383019391830191600101611a38565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207c357ad9610808a275b526a20e1e748a8edc640f86f0db56cd972d683facee9764736f6c63430008130033000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000c81556466a3179ce8ed94262d2968f5334c0a6f00000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000c8