0 txs
21 calls
constructor
constructor(address _governanceERC20Base, address _governanceWrappedERC20Base)
functions
governanceERC20Base
viewfunction governanceERC20Base() view returns (address)
governanceWrappedERC20Base
viewfunction governanceWrappedERC20Base() view returns (address)
implementation
viewfunction implementation() view returns (address)
prepareUninstallation
viewfunction prepareUninstallation(address _dao, tuple _payload) view returns (tuple[] permissions)
protocolVersion
purefunction protocolVersion() pure returns (uint8[3])
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
supportsIVotesInterface
viewfunction supportsIVotesInterface(address token) view returns (bool)
prepareInstallation
nonpayablefunction prepareInstallation(address _dao, bytes _data) returns (address plugin, tuple preparedSetupData)
prepareUpdate
nonpayablefunction prepareUpdate(address _dao, uint16 _fromBuild, tuple _payload) returns (bytes initData, tuple preparedSetupData)
events
No events.
errors
InvalidUpdatePath
error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild)
TokenNotContract
error TokenNotContract(address token)
TokenNotERC20
error TokenNotERC20(address token)
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162007d6338038062007d638339810160408190526200003591620000ab565b604051620000439062000084565b604051809103906000f08015801562000060573d6000803e3d6000fd5b506001600160a01b03908116608081905260a05291821660c0521660e052620000ea565b614b15806200324e83390190565b6001600160a01b0381168114620000a857600080fd5b50565b60008060408385031215620000bf57600080fd5b8251620000cc8162000092565b6020840151909250620000df8162000092565b809150509250929050565b60805160a05160c05160e0516130f962000155600039600081816101cc0152610efd0152600081816101170152610fab015260008181610567015281816110a001526112640152600081816101540152818161082701528181610b1701526113f401526130f96000f3fe60806040523480156200001157600080fd5b5060043610620000b05760003560e01c80635c60da1b116200007f578063a8a9c29e1162000062578063a8a9c29e146200019f578063e89b6b9114620001c6578063f10832f114620001ee57600080fd5b80635c60da1b14620001525780639cb0a124146200017957600080fd5b806301ffc9a714620000b55780631c5d401314620000e15780632ae9c60014620000f8578063599cb1a61462000111575b600080fd5b620000cc620000c6366004620018ea565b62000215565b60405190151581526020015b60405180910390f35b620000cc620000f236600462001935565b62000268565b6200010262000493565b604051620000d8919062001953565b620001397f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001620000d8565b7f000000000000000000000000000000000000000000000000000000000000000062000139565b620001906200018a366004620019a2565b620004bf565b604051620000d8919062001a75565b620001b6620001b036600462001ac2565b6200095b565b604051620000d892919062001c36565b620001397f000000000000000000000000000000000000000000000000000000000000000081565b62000205620001ff36600462001c68565b62000e23565b604051620000d892919062001cf2565b60006001600160e01b0319821663099718b560e41b14806200024657506001600160e01b03198216621574e360e91b145b806200026257506301ffc9a760e01b6001600160e01b03198316145b92915050565b604080516000602480830182905283518084039091018152604490920183526020820180516001600160e01b0316632394e7a360e21b1790529151829182916001600160a01b03861691620002bd9162001d16565b600060405180830381855afa9150503d8060008114620002fa576040519150601f19603f3d011682016040523d82523d6000602084013e620002ff565b606091505b50604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166309ab24eb60e41b179052905192945090925060009182916001600160a01b038816916200035d919062001d16565b600060405180830381855afa9150503d80600081146200039a576040519150601f19603f3d011682016040523d82523d6000602084013e6200039f565b606091505b50604080513060248201526000604480830182905283518084039091018152606490920183526020820180516001600160e01b0316630748d63560e31b17905291519395509193509182916001600160a01b038a169162000401919062001d16565b600060405180830381855afa9150503d80600081146200043e576040519150601f19603f3d011682016040523d82523d6000602084013e62000443565b606091505b509150915085801562000457575084516020145b8015620004615750835b80156200046f575082516020145b8015620004795750815b801562000487575080516020145b98975050505050505050565b6200049d620018b0565b5060408051606081018252600181526004602082015260009181019190915290565b60408051600680825260e08201909252606091816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620004d75750506040805160a0810190915260018152909150602080820190620005389085018562001935565b6001600160a01b03168152602001846001600160a01b0316815260200160006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631befc4056040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ea919062001d4a565b8152508160008151811062000603576200060362001d64565b60209081029190910101526040805160a081019091528060018152602001846001600160a01b0316815260200183600001602081019062000645919062001935565b6001600160a01b0316815260200160006001600160a01b031681526020017fbf04b4486c9663d805744005c3da000eda93de6e3308a4a7a812eb565327b78d815250816001815181106200069d576200069d62001d64565b60209081029190910101526040805160a081019091528060018152602090810190620006cc9085018562001935565b6001600160a01b03168152602001846001600160a01b0316815260200160006001600160a01b031681526020017f568cc693d84eb1901f8bcecba154cbdef23ca3cf67efc0a0b698528a06c660f78152508160028151811062000733576200073362001d64565b60209081029190910101526040805160a081019091528060018152602090810190620007629085018562001935565b6001600160a01b03168152602001846001600160a01b0316815260200160006001600160a01b031681526020017f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b81525081600381518110620007c957620007c962001d64565b60209081029190910101526040805160a081019091528060018152602090810190620007f89085018562001935565b6001600160a01b031681526020016001600160a01b038016815260200160006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311ce24386040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000884573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008aa919062001d4a565b81525081600481518110620008c357620008c362001d64565b60209081029190910101526040805160a081019091528060018152602090810190620008f29085018562001935565b6001600160a01b0390811682526020820152600060408201527ff281525e53675515a6ba7cc7bea8a81e649b3608423ee2d73be1752cea8878896060909101528151829060059081106200094a576200094a62001d64565b602002602001018190525092915050565b60606200097b604051806040016040528060608152602001606081525090565b60038461ffff16101562000e1b5760006200099a602085018562001935565b604051620009a890620018ce565b6001600160a01b039091168152602001604051809103906000f080158015620009d5573d6000803e3d6000fd5b5060408051600580825260c0820190925291925060009190816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620009f25750506040805160a081019091526001815290915060208082019062000a539088018862001935565b6001600160a01b03168152602001886001600160a01b0316815260200160006001600160a01b031681526020017f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f58152508160008151811062000aba5762000aba62001d64565b60209081029190910101526040805160a08101909152806002815260209081019062000ae99088018862001935565b6001600160a01b031681526020016001600160a01b0380168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311ce24386040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b9a919062001d4a565b8152508160018151811062000bb35762000bb362001d64565b60209081029190910101526040805160a08101909152806000815260209081019062000be29088018862001935565b6001600160a01b03168152602001886001600160a01b0316815260200160006001600160a01b031681526020017f568cc693d84eb1901f8bcecba154cbdef23ca3cf67efc0a0b698528a06c660f78152508160028151811062000c495762000c4962001d64565b60209081029190910101526040805160a08101909152806000815260209081019062000c789088018862001935565b6001600160a01b03168152602001886001600160a01b0316815260200160006001600160a01b031681526020017f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b8152508160038151811062000cdf5762000cdf62001d64565b60209081029190910101526040805160a08101909152806000815260209081019062000d0e9088018862001935565b6001600160a01b0390811682526020820152600060408201527ff281525e53675515a6ba7cc7bea8a81e649b3608423ee2d73be1752cea88788960609091015281518290600490811062000d665762000d6662001d64565b602090810291909101810191909152838101829052604080516001808252818301909252918281019080368337505050808452805183919060009062000db05762000db062001d64565b6001600160a01b03909216602092830291909101909101528562000dd8604087018762001d7a565b60405160240162000dec9392919062001dcb565b60408051601f198184030181529190526020810180516001600160e01b03166308641fa760e11b179052935050505b935093915050565b600062000e43604051806040016040528060608152602001606081525090565b6000808080808062000e58898b018b62002173565b8451959b509399509197509550935091506001600160a01b0381161562000fa5576001600160a01b0381163b62000eb2576040516318aca2db60e01b81526001600160a01b03821660048201526024015b60405180910390fd5b62000ebd8162001716565b62000ee75760405163fa8925f160e01b81526001600160a01b038216600482015260240162000ea9565b62000ef28162000268565b62000f9f5762000f2b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620017c9565b865160208801516040808a01519051639065714760e01b81529394506001600160a01b0385169363906571479362000f6a9390929091600401620022a7565b600060405180830381600087803b15801562000f8557600080fd5b505af115801562000f9a573d6000803e3d6000fd5b505050505b6200104c565b62000fd97f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620017c9565b9050806001600160a01b031663dab27fa98d88602001518960400151896040518563ffffffff1660e01b8152600401620010179493929190620022e9565b600060405180830381600087803b1580156200103257600080fd5b505af115801562001047573d6000803e3d6000fd5b505050505b620010c78c88838787876040516024016200106d96959493929190620023c1565b60408051601f198184030181529190526020810180516001600160e01b031662ae778960e31b1790526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906200186c565b604080516002808252606082018352929b50919060208301908036833750505088526040518990620010f990620018ce565b6001600160a01b039091168152602001604051809103906000f08015801562001126573d6000803e3d6000fd5b50885180516000906200113d576200113d62001d64565b60200260200101906001600160a01b031690816001600160a01b03168152505080886000015160018151811062001178576200117862001d64565b6001600160a01b039283166020918202929092010152865160009116620011a1576007620011a4565b60065b60ff1667ffffffffffffffff811115620011c257620011c262001d34565b6040519080825280602002602001820160405280156200121d57816020015b6040805160a081018252600080825260208083018290529282018190526060820181905260808201528252600019909201910181620011e15790505b506040805160a0810190915290915080600081526020018b6001600160a01b031681526020018e6001600160a01b0316815260200160006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631befc4056040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e7919062001d4a565b8152508160008151811062001300576200130062001d64565b60209081029190910101526040805160a0810190915280600081526020018e6001600160a01b031681526020018b6001600160a01b0316815260200160006001600160a01b031681526020017fbf04b4486c9663d805744005c3da000eda93de6e3308a4a7a812eb565327b78d8152508160018151811062001386576200138662001d64565b60209081029190910101526040805160a0810190915280600281526020018b6001600160a01b031681526020016001600160a01b03801681526020018a60000151600081518110620013dc57620013dc62001d64565b60200260200101516001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166311ce24386040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001477919062001d4a565b8152508160028151811062001490576200149062001d64565b60209081029190910101526040805160a0810190915280600081526020018b6001600160a01b031681526020018e6001600160a01b0316815260200160006001600160a01b031681526020017f568cc693d84eb1901f8bcecba154cbdef23ca3cf67efc0a0b698528a06c660f78152508160038151811062001516576200151662001d64565b60209081029190910101526040805160a0810190915280600081526020018b6001600160a01b031681526020018e6001600160a01b0316815260200160006001600160a01b031681526020017f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b815250816004815181106200159c576200159c62001d64565b60209081029190910101526040805160a0810190915280600081526001600160a01b03808d1660208301526040820152600060608201527ff281525e53675515a6ba7cc7bea8a81e649b3608423ee2d73be1752cea88788960809091015281518290600590811062001612576200161262001d64565b602090810291909101015286516001600160a01b0316620016ff576000826001600160a01b031663b2d2989c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200166e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001694919062001d4a565b6040805160a081019091529091508060008152602001846001600160a01b031681526020018f6001600160a01b0316815260200160006001600160a01b031681526020018281525082600681518110620016f257620016f262001d64565b6020026020010181905250505b602089015250969a95995094975050505050505050565b604051306024820152600090819081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b179052516200176b919062001d16565b600060405180830381855afa9150503d8060008114620017a8576040519150601f19603f3d011682016040523d82523d6000602084013e620017ad565b606091505b5091509150818015620017c1575080516020145b949350505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116620018675760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640162000ea9565b919050565b600082826040516200187e90620018dc565b6200188b92919062002472565b604051809103906000f080158015620018a8573d6000803e3d6000fd5b509392505050565b60405180606001604052806003906020820280368337509192915050565b610558806200249783390190565b6106fe80620029ef83390190565b600060208284031215620018fd57600080fd5b81356001600160e01b0319811681146200191657600080fd5b9392505050565b80356001600160a01b03811681146200186757600080fd5b6000602082840312156200194857600080fd5b62001916826200191d565b60608101818360005b60038110156200198057815160ff168352602092830192909101906001016200195c565b50505092915050565b6000606082840312156200199c57600080fd5b50919050565b60008060408385031215620019b657600080fd5b620019c1836200191d565b9150602083013567ffffffffffffffff811115620019de57600080fd5b620019ec8582860162001989565b9150509250929050565b634e487b7160e01b600052602160045260246000fd5b6003811062001a1f5762001a1f620019f6565b50565b6000815162001a318162001a0c565b8352506020818101516001600160a01b0390811691840191909152604080830151821690840152606080830151909116908301526080908101519082015260a00190565b6020808252825182820181905260009190848201906040850190845b8181101562001ab65762001aa783855162001a22565b93850193925060010162001a91565b50909695505050505050565b60008060006060848603121562001ad857600080fd5b62001ae3846200191d565b9250602084013561ffff8116811462001afb57600080fd5b9150604084013567ffffffffffffffff81111562001b1857600080fd5b62001b268682870162001989565b9150509250925092565b60005b8381101562001b4d57818101518382015260200162001b33565b50506000910152565b6000815180845262001b7081602086016020860162001b30565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b8381101562001bbf5781516001600160a01b03168752958201959082019060010162001b98565b509495945050505050565b600081516040845262001be1604085018262001b84565b60208481015186830387830152805180845290820193509091600091908301905b8083101562001c2b5762001c1882865162001a22565b9150838501945060018301925062001c02565b509695505050505050565b60408152600062001c4b604083018562001b56565b828103602084015262001c5f818562001bca565b95945050505050565b60008060006040848603121562001c7e57600080fd5b62001c89846200191d565b9250602084013567ffffffffffffffff8082111562001ca757600080fd5b818601915086601f83011262001cbc57600080fd5b81358181111562001ccc57600080fd5b87602082850101111562001cdf57600080fd5b6020830194508093505050509250925092565b6001600160a01b0383168152604060208201526000620017c1604083018462001bca565b6000825162001d2a81846020870162001b30565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001d5d57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811262001d9257600080fd5b83018035915067ffffffffffffffff82111562001dae57600080fd5b60200191503681900382131562001dc457600080fd5b9250929050565b61ffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6040805190810167ffffffffffffffff8111828210171562001e2b5762001e2b62001d34565b60405290565b60405160a0810167ffffffffffffffff8111828210171562001e2b5762001e2b62001d34565b604051601f8201601f1916810167ffffffffffffffff8111828210171562001e835762001e8362001d34565b604052919050565b803563ffffffff811681146200186757600080fd5b600082601f83011262001eb257600080fd5b813567ffffffffffffffff81111562001ecf5762001ecf62001d34565b62001ee4601f8201601f191660200162001e57565b81815284602083860101111562001efa57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121562001f2a57600080fd5b6040516060810167ffffffffffffffff828210818311171562001f515762001f5162001d34565b8160405282935062001f63856200191d565b8352602085013591508082111562001f7a57600080fd5b62001f888683870162001ea0565b6020840152604085013591508082111562001fa257600080fd5b5062001fb18582860162001ea0565b6040830152505092915050565b600067ffffffffffffffff82111562001fdb5762001fdb62001d34565b5060051b60200190565b600082601f83011262001ff757600080fd5b81356020620020106200200a8362001fbe565b62001e57565b82815260059290921b840181019181810190868411156200203057600080fd5b8286015b8481101562001c2b578035835291830191830162002034565b6000604082840312156200206057600080fd5b6200206a62001e05565b9050813567ffffffffffffffff808211156200208557600080fd5b818401915084601f8301126200209a57600080fd5b81356020620020ad6200200a8362001fbe565b82815260059290921b84018101918181019088841115620020cd57600080fd5b948201945b83861015620020f657620020e6866200191d565b82529482019490820190620020d2565b865250858101359350828411156200210d57600080fd5b6200211b8785880162001fe5565b818601525050505092915050565b6000604082840312156200213c57600080fd5b6200214662001e05565b905062002153826200191d565b81526020820135600281106200216857600080fd5b602082015292915050565b6000806000806000808688036101608112156200218f57600080fd5b60a08112156200219e57600080fd5b50620021a962001e31565b873560038110620021b957600080fd5b8152620021c96020890162001e8b565b6020820152620021dc6040890162001e8b565b6040820152606088013567ffffffffffffffff8082168214620021fe57600080fd5b81606084015260808a0135608084015282985060a08a01359250808311156200222657600080fd5b620022348b848c0162001f17565b975060c08a01359250808311156200224b57600080fd5b620022598b848c016200204d565b96506200226a8b60e08c0162002129565b95506101208a013594506101408a01359250808311156200228a57600080fd5b50506200229a89828a0162001ea0565b9150509295509295509295565b6001600160a01b0384168152606060208201526000620022cb606083018562001b56565b8281036040840152620022df818562001b56565b9695505050505050565b6001600160a01b0385168152600060206080818401526200230e608084018762001b56565b838103604085015262002322818762001b56565b9050838103606085015284516040825262002341604083018262001b84565b8684015183820393850193909352825180825290840192840191506000905b8082101562002382578251845292840192918401916001919091019062002360565b50919998505050505050505050565b6001600160a01b038151168252602081015160028110620023b657620023b6620019f6565b806020840152505050565b60006101606001600160a01b03891683528751620023df8162001a0c565b80602085015250602088015163ffffffff80821660408601528060408b0151166060860152505067ffffffffffffffff6060890151166080840152608088015160a08401526200243a60c08401886001600160a01b03169052565b6200244960e084018762002391565b8461012084015280610140840152620024658184018562001b56565b9998505050505050505050565b6001600160a01b0383168152604060208201526000620017c1604083018462001b5656fe60c060405234801561001057600080fd5b5060405161055838038061055883398101604081905261002f916100c7565b6001600160a01b03811660808190526040805163e28c3b1960e01b8152905163e28c3b19916004808201926020929091908290030181865afa158015610079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009d91906100c7565b6001600160a01b031660a052506100eb565b6001600160a01b03811681146100c457600080fd5b50565b6000602082840312156100d957600080fd5b81516100e4816100af565b9392505050565b60805160a05161044261011660003960008181610195015261022b0152600060ec01526104426000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780632675fdd01461006e5780632ae9c60014610081575b600080fd5b610059610054366004610300565b610096565b60405190151581526020015b60405180910390f35b61005961007c36600461034d565b6100e7565b6100896102b8565b60405161006591906103e8565b60006001600160e01b031982166302675fdd60e41b14806100c657506001600160e01b03198216621574e360e91b145b806100e157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f60046b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016c919061041c565b905080156102a9576040516309ab24eb60e41b81526001600160a01b03878116600483015282917f000000000000000000000000000000000000000000000000000000000000000090911690639ab24eb090602401602060405180830381865afa1580156101de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610202919061041c565b10801561029a57506040516370a0823160e01b81526001600160a01b03878116600483015282917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610298919061041c565b105b156102a95760009150506102af565b60019150505b95945050505050565b6102c06102e2565b5060408051606081018252600181526004602082015260009181019190915290565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561031257600080fd5b81356001600160e01b03198116811461032a57600080fd5b9392505050565b80356001600160a01b038116811461034857600080fd5b919050565b60008060008060006080868803121561036557600080fd5b61036e86610331565b945061037c60208701610331565b935060408601359250606086013567ffffffffffffffff808211156103a057600080fd5b818801915088601f8301126103b457600080fd5b8135818111156103c357600080fd5b8960208285010111156103d557600080fd5b9699959850939650602001949392505050565b60608101818360005b600381101561041357815160ff168352602092830192909101906001016103f1565b50505092915050565b60006020828403121561042e57600080fd5b505191905056fea164736f6c6343000811000a60806040526040516106fe3803806106fe83398101604081905261002291610319565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d083836040518060600160405280602781526020016106d7602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103e7565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b81526004016101489190610403565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b50506000910152565b6000806040838503121561032c57600080fd5b82516001600160a01b038116811461034357600080fd5b60208401519092506001600160401b038082111561036057600080fd5b818501915085601f83011261037457600080fd5b815181811115610386576103866102df565b604051601f8201601f19908116603f011681019083821181831017156103ae576103ae6102df565b816040528281528860208487010111156103c757600080fd5b6103d88360208301602088016102f5565b80955050505050509250929050565b600082516103f98184602087016102f5565b9190910192915050565b60208152600082518060208401526104228160408501602087016102f5565b601f01601f19169190910160400192915050565b610292806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161025f602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061020f565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f919061022b565b60005b838110156102065781810151838201526020016101ee565b50506000910152565b600082516102218184602087016101eb565b9190910192915050565b602081526000825180602084015261024a8160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516149f66200011f60003960008181610e1d01528181610ea201528181610fb80152818161103d015261112301526149f66000f3fe6080604052600436106103085760003560e01c80637c36e8e81161019a578063cc63604a116100e1578063e28c3b191161008a578063ee57e36f11610064578063ee57e36f14610982578063f60046b2146109a2578063fe0d94c1146109b857600080fd5b8063e28c3b191461090f578063e306bee71461092e578063ea65ab821461096257600080fd5b8063cfceb588116100bb578063cfceb588146108b1578063da35c664146108e5578063dd63c06f146108fa57600080fd5b8063cc63604a14610851578063ce6366c414610871578063cf1311491461089157600080fd5b8063aac91e4611610143578063c7f758a81161011d578063c7f758a8146107c8578063c98425ee146107fb578063c9c4bfca1461081d57600080fd5b8063aac91e4614610768578063bb225da214610788578063c218c132146107a857600080fd5b8063970601d811610174578063970601d8146106d05780639cba302114610728578063a230c5241461074857600080fd5b80637c36e8e81461065b5780638a4b00f81461067c5780638cb750591461069c57600080fd5b80632ae9c6001161025e5780634f1ef2861161020757806356715761116101e157806356715761146105f05780635c60da1b146106315780637a5b4f591461064657600080fd5b80634f1ef286146105a857806352d1902d146105bb578063536f9f42146105d057600080fd5b80633d3f4b1b116102385780633d3f4b1b146105405780634162169f1461056257806341de68301461059457600080fd5b80632ae9c600146104c45780633659cfe6146104e657806336fa95891461050657600080fd5b80630dfb278e116102c057806317d1b4041161029a57806317d1b4041461044e5780631befc4051461046e57806323d07188146104a257600080fd5b80630dfb278e146103da57806310c83f4e146103fa57806311ce24381461041a57600080fd5b8063054fd2c2116102f1578063054fd2c2146103625780630573bc48146103985780630de21856146103ba57600080fd5b806301ffc9a71461030d57806303ff90f614610342575b600080fd5b34801561031957600080fd5b5061032d6103283660046137a2565b6109d8565b60405190151581526020015b60405180910390f35b34801561034e57600080fd5b50610162545b604051908152602001610339565b34801561036e57600080fd5b506101605465010000000000900463ffffffff165b60405163ffffffff9091168152602001610339565b3480156103a457600080fd5b506103b86103b3366004613854565b610a1e565b005b3480156103c657600080fd5b5061032d6103d53660046138ed565b610b80565b3480156103e657600080fd5b506103b86103f5366004613906565b610c23565b34801561040657600080fd5b506103b8610415366004613922565b610c6e565b34801561042657600080fd5b506103547f8c433a4cd6b51969eca37f974940894297b9fcf4b282a213fea5cd8f85289c9081565b34801561045a57600080fd5b5061032d61046936600461398b565b610d90565b34801561047a57600080fd5b506103547fbba35d41610b7d25c8e486006535c76bd423091563e694d206ae3d71ce949fe581565b3480156104ae57600080fd5b506101605460ff165b60405161033991906139f3565b3480156104d057600080fd5b506104d9610de9565b6040516103399190613a06565b3480156104f257600080fd5b506103b8610501366004613a3a565b610e13565b34801561051257600080fd5b5061032d6105213660046138ed565b600090815261015f602052604090206009810154600490910154101590565b34801561054c57600080fd5b50610555610f8e565b6040516103399190613aa7565b34801561056e57600080fd5b5060c9546001600160a01b03165b6040516001600160a01b039091168152602001610339565b3480156105a057600080fd5b5060006104b7565b6103b86105b6366004613b7f565b610fae565b3480156105c757600080fd5b50610354611116565b3480156105dc57600080fd5b506103546105eb3660046138ed565b6111db565b3480156105fc57600080fd5b50610160546901000000000000000000900467ffffffffffffffff1660405167ffffffffffffffff9091168152602001610339565b34801561063d57600080fd5b5061057c61124a565b34801561065257600080fd5b50610555611282565b34801561066757600080fd5b5061016054610100900463ffffffff16610383565b34801561068857600080fd5b5061032d6106973660046138ed565b611338565b3480156106a857600080fd5b506103547f568cc693d84eb1901f8bcecba154cbdef23ca3cf67efc0a0b698528a06c660f781565b3480156106dc57600080fd5b5061071b6106eb366004613bcf565b600082815261015f602090815260408083206001600160a01b038516845260060190915290205460ff1692915050565b6040516103399190613c13565b34801561073457600080fd5b50610354610743366004613c8a565b611378565b34801561075457600080fd5b5061032d610763366004613a3a565b611722565b34801561077457600080fd5b506103b86107833660046138ed565b611813565b34801561079457600080fd5b506103b86107a3366004613d4e565b611855565b3480156107b457600080fd5b5061032d6107c33660046138ed565b6118a5565b3480156107d457600080fd5b506107e86107e33660046138ed565b611916565b6040516103399796959493929190613e15565b34801561080757600080fd5b50610810611be6565b6040516103399190613edc565b34801561082957600080fd5b506103547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f581565b34801561085d57600080fd5b5061032d61086c3660046138ed565b611c4d565b34801561087d57600080fd5b506103b861088c366004613eea565b611c9a565b34801561089d57600080fd5b5061032d6108ac3660046138ed565b611cdb565b3480156108bd57600080fd5b506103547ff281525e53675515a6ba7cc7bea8a81e649b3608423ee2d73be1752cea88788981565b3480156108f157600080fd5b50610354611d3d565b34801561090657600080fd5b50610810611d58565b34801561091b57600080fd5b50610191546001600160a01b031661057c565b34801561093a57600080fd5b506103547f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b81565b34801561096e57600080fd5b5061035461097d366004613f21565b611e08565b34801561098e57600080fd5b506103b861099d366004613fde565b611e53565b3480156109ae57600080fd5b5061016154610354565b3480156109c457600080fd5b506103b86109d33660046138ed565b611ed0565b60006001600160e01b0319821663e28c3b1960e01b1480610a0957506001600160e01b0319821663288c314960e21b145b80610a185750610a1882611f3b565b92915050565b60005460ff1615610a415760405162dc149f60e41b815260040160405180910390fd5b600054600290610100900460ff16158015610a63575060005460ff8083169116105b610acb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100179055610aed888887878787611fb1565b61019180546001600160a01b0319166001600160a01b0388169081179091556040517f3f1ec22954d444cb99f80a1989ac8f631616b8a575a89379e514c0f7f748c93390600090a26000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b600081815261015f6020526040812060038101546004820154600183015484929190610bbc90600160a81b900467ffffffffffffffff166111db565b610bc69190614036565b610bd09190614036565b6001830154909150610bee908290610100900463ffffffff16614049565b60048301546001840154610c1090610100900463ffffffff16620f4240614036565b610c1a9190614049565b11949350505050565b60c9547fbba35d41610b7d25c8e486006535c76bd423091563e694d206ae3d71ce949fe590610c61906001600160a01b031630335b84600036612090565b610c6a82612144565b5050565b600054600290610100900460ff16158015610c90575060005460ff8083169116105b610cf35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ac2565b6000805461ffff191660ff831617610100179055600361ffff85161015610d495760008080610d24858701876140c7565b925092509250610d3383612315565b610d3c8261237b565b610d458161246a565b5050505b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600083815261015f6020526040812060010154600160a81b900467ffffffffffffffff16610dd457604051630853c2a360e41b815260048101859052602401610ac2565b610ddf8484846124d2565b90505b9392505050565b610df1613784565b5060408051606081018252600181526004602082015260009181019190915290565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ea05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ac2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610efb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610f665760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ac2565b610f6f81612626565b60408051600080825260208201909252610f8b9183919061265f565b50565b606060405180608001604052806043815260200161498060439139905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361103b5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610ac2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110967f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146111015760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610ac2565b61110a82612626565b610c6a8282600161265f565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111b65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ac2565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b61019154604051632394e7a360e21b8152600481018390526000916001600160a01b031690638e539e8c90602401602060405180830381865afa158015611226573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a18919061411f565b600061127d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b7f47ff9796f72d439c6e5c30a24b9fad985a00c85a9f2258074c400a94f8746b0080546060919081906112b490614138565b80601f01602080910402602001604051908101604052809291908181526020018280546112e090614138565b801561132d5780601f106113025761010080835404028352916020019161132d565b820191906000526020600020905b81548152906001019060200180831161131057829003601f168201915b505050505091505090565b600081815261015f602052604081206002810154600382015460058301546004840154611365919061416c565b61136f919061416c565b10159392505050565b60c9546000907f8c433a4cd6b51969eca37f974940894297b9fcf4b282a213fea5cd8f85289c90906113b4906001600160a01b03163033610c58565b600019430160006113c4826111db565b9050806000036113e757604051631f05dadd60e21b815260040160405180910390fd5b6113f188886127ff565b809850819950505061145e8b8b8f8f6040516020016114139493929190614273565b60408051601f198184030181528282528051602091820120468483015243848401523060608501526080808501919091528251808503909101815260a0909301909152815191012090565b600081815261015f60205260409020600181015491955090600160a81b900467ffffffffffffffff16156114a8576040516312dba68f60e01b815260048101869052602401610ac2565b60018101805467ffffffffffffffff8a8116600160681b027fffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffff918d166501000000000002919091167fffffffffffffffffffffff00000000000000000000000000000000ffffffffff909216919091171790556115248361290e565b60018201805467ffffffffffffffff92909216600160a81b027fffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffff9092169190911790556115746101605460ff1690565b60018083018054909160ff1990911690836002811115611596576115966139cd565b021790555061016054610100900463ffffffff1660018201805464ffffffff00191661010063ffffffff93841602179055610160546115e69184916501000000000090041663ffffffff16612992565b60028201556115fe826115f96101625490565b612992565b600982015561160b611d58565b8051600a830180546001600160a01b031981166001600160a01b03909316928317825560208401519192839174ffffffffffffffffffffffffffffffffffffffffff191617600160a01b836001811115611667576116676139cd565b0217905550508a15905061167d57600881018a90555b60005b8b8110156116dc57816007018d8d8381811061169e5761169e61429a565b90506020028101906116b091906142b0565b8154600181018355600092835260209092209091600302016116d28282614316565b5050600101611680565b5060008760038111156116f1576116f16139cd565b1461170157611701858888611c9a565b6117118e8e8e8e8e8a8f8f612a09565b505050509998505050505050505050565b610191546040516309ab24eb60e41b81526001600160a01b0383811660048301526000928392911690639ab24eb090602401602060405180830381865afa158015611771573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611795919061411f565b1180610a185750610191546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a0823190602401602060405180830381865afa1580156117e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180c919061411f565b1192915050565b60c9547fbba35d41610b7d25c8e486006535c76bd423091563e694d206ae3d71ce949fe59061184c906001600160a01b03163033610c58565b610c6a82612315565b60c9547f568cc693d84eb1901f8bcecba154cbdef23ca3cf67efc0a0b698528a06c660f79061188e906001600160a01b03163033610c58565b610c6a6118a03684900384018461443a565b61237b565b600081815261015f6020526040812060010154600160a81b900467ffffffffffffffff166118e957604051630853c2a360e41b815260048101839052602401610ac2565b600082815261015f602052604081209061190282612a61565b905061190e8482612ac5565b949350505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052819061196d60405180606001604052806000815260200160008152602001600081525090565b6060600061198b604080518082019091526000808252602082015290565b600088815261015f602052604090206119a381612a61565b81546040805160c08101909152600184018054939b5060ff9283169a509092909183911660028111156119d8576119d86139cd565b60028111156119e9576119e96139cd565b8152815463ffffffff61010082041660208084019190915267ffffffffffffffff6501000000000083048116604080860191909152600160681b84048216606080870191909152600160a81b909404909116608085015260019094015460a0909301929092528251908101835260038501548152600485015481830152600585015481840152600785018054845181850281018501909552808552949a5090985091929060009084015b82821015611b77576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191611ae690614138565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1290614138565b8015611b5f5780601f10611b3457610100808354040283529160200191611b5f565b820191906000526020600020905b815481529060010190602001808311611b4257829003601f168201915b50505050508152505081526020019060010190611a93565b50505050600882015460408051808201909152600a840180546001600160a01b0381168352939750919550916020830190600160a01b900460ff166001811115611bc357611bc36139cd565b6001811115611bd457611bd46139cd565b81525050915050919395979092949650565b60408051808201909152600080825260208201526040805180820190915260fb80546001600160a01b03811683526020830190600160a01b900460ff166001811115611c3457611c346139cd565b6001811115611c4557611c456139cd565b905250919050565b600081815261015f6020526040812060010154600160a81b900467ffffffffffffffff16611c9157604051630853c2a360e41b815260048101839052602401610ac2565b610a1882612b82565b33611ca68482856124d2565b611cc957838184604051631c2d2c9560e21b8152600401610ac293929190614456565b611cd584848385612bef565b50505050565b600081815261015f6020526040812060058101546001820154611d099190610100900463ffffffff16614049565b60048201546001830154611d2b90610100900463ffffffff16620f4240614036565b611d359190614049565b119392505050565b6000604051631bebc11560e01b815260040160405180910390fd5b60408051808201909152600080825260208201526040805180820190915260fb80546001600160a01b038116835260009291906020830190600160a01b900460ff166001811115611dab57611dab6139cd565b6001811115611dbc57611dbc6139cd565b90525080519091506001600160a01b0316611e03576040518060400160405280611dee60c9546001600160a01b031690565b6001600160a01b031681526020016000905290505b919050565b6000806000808451600014611e335784806020019051810190611e2b9190614479565b919450925090505b611e448b8b8b8b878c8c8989611378565b9b9a5050505050505050505050565b60c9547f4707e94b25cfce1a7c363508fbb838c35864388ad77284b248282b9746982b9b90611e8c906001600160a01b03163033610c58565b611ecb83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061246a92505050565b505050565b60c9547ff281525e53675515a6ba7cc7bea8a81e649b3608423ee2d73be1752cea88788990611f09906001600160a01b03163033610c58565b611f1282612b82565b611f3257604051639fefd0f160e01b815260048101839052602401610ac2565b610c6a82612f23565b60006001600160e01b0319821663059635cb60e31b1480611f6c57506001600160e01b0319821663433c580f60e11b145b80611f8757506001600160e01b0319821663781c112160e01b145b80611fa257506001600160e01b0319821663268c8a2f60e11b145b80610a185750610a18826130a8565b600054610100900460ff1661201c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610ac2565b612025866130e8565b61202e85612144565b61203783612315565b6120496118a03686900386018661443a565b61208882828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061246a92505050565b505050505050565b604051637ef7c88360e11b81526001600160a01b0387169063fdef9106906120c490889088908890889088906004016144b1565b602060405180830381865afa1580156120e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210591906144e4565b61208857604051630cb6f8ed60e21b81526001600160a01b03808816600483015280871660248301528516604482015260648101849052608401610ac2565b6121526001620f4240614036565b6121626040830160208401614513565b63ffffffff1611156121b45761217c6001620f4240614036565b61218c6040830160208401614513565b60405163cc80c19560e01b8152600481019290925263ffffffff166024820152604401610ac2565b620f42406121c86060830160408401614513565b63ffffffff1611156121e857620f424061218c6060830160408401614513565b610e106121fb6080830160608401614530565b67ffffffffffffffff16101561224b57610e1061221e6080830160608401614530565b60405163628819f760e11b815267ffffffffffffffff928316600482015291166024820152604401610ac2565b6301e133806122606080830160608401614530565b67ffffffffffffffff161115612285576301e1338061221e6080830160608401614530565b806101606122938282614567565b507fa8a18d06ddd19f24a872740e3d364c86f62be25f7154525dda18ef07fda46f3e90506122c4602083018361463c565b6122d46040840160208501614513565b6122e46060850160408601614513565b6122f46080860160608701614530565b856080013560405161230a959493929190614659565b60405180910390a150565b620f42408111156123455760405163cc80c19560e01b8152620f4240600482015260248101829052604401610ac2565b6101628190556040518181527f881350fa9fec1b2382437d5d1e9f130ffa2a3b13d62236391c36d3b5e739ec4d9060200161230a565b8051612397906001600160a01b0316632a4f53ad60e11b61315c565b80156123b857506001816020015160018111156123b6576123b66139cd565b145b156123d8578060405163266d0fb960e01b8152600401610ac29190613edc565b805160fb80546001600160a01b039092166001600160a01b0319831681178255602084015184939091839174ffffffffffffffffffffffffffffffffffffffffff191617600160a01b836001811115612433576124336139cd565b02179055509050507f88e879ae0d71faf3aa708f2978daccb99b95243615dc104835b8c5a21c884ae68160405161230a9190613edc565b7f47ff9796f72d439c6e5c30a24b9fad985a00c85a9f2258074c400a94f8746b00806124968382614695565b507fbb39ebb37e60fb5d606ffdb749d2336e56b88e6c88c4bd6513b308f643186eed826040516124c69190613aa7565b60405180910390a15050565b600083815261015f602052604081206124ea81612a61565b6124f8576000915050610de2565b600083600381111561250c5761250c6139cd565b0361251b576000915050610de2565b610191546001820154604051630748d63560e31b81526001600160a01b038781166004830152600160a81b90920467ffffffffffffffff166024820152911690633a46b1a890604401602060405180830381865afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a5919061411f565b6000036125b6576000915050610de2565b6001600160a01b038416600090815260068201602052604081205460ff1660038111156125e5576125e56139cd565b1415801561260c57506002600182015460ff166002811115612609576126096139cd565b14155b1561261b576000915050610de2565b506001949350505050565b60c9547f821b6e3a557148015a918c89e5d092e878a69854a2d1a410635f771bd5a8a3f590610c6a906001600160a01b03163033610c58565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561269257611ecb83613178565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156126ec575060408051601f3d908101601f191682019092526126e99181019061411f565b60015b61275e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610ac2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146127f35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610ac2565b50611ecb838383613236565b600080600061280d4261290e565b90508467ffffffffffffffff1660000361282957809250612875565b8492508067ffffffffffffffff168367ffffffffffffffff16101561287557604051631332703d60e21b815267ffffffffffffffff808316600483015284166024820152604401610ac2565b6101605460009061289d906901000000000000000000900467ffffffffffffffff1685614755565b90508467ffffffffffffffff166000036128b957809250612905565b8492508067ffffffffffffffff168367ffffffffffffffff16101561290557604051631332703d60e21b815267ffffffffffffffff808316600483015284166024820152604401610ac2565b50509250929050565b600067ffffffffffffffff82111561298e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201527f34206269747300000000000000000000000000000000000000000000000000006064820152608401610ac2565b5090565b6000620f42408211156129c45760405163cc80c19560e01b8152620f4240600482015260248101839052604401610ac2565b6129ce8284614049565b925060006129df620f42408561478c565b90506129ee620f4240856147a0565b91508015612a02576129ff826147b4565b91505b5092915050565b336001600160a01b0316837fa6c1f8f4276dc3f243459e13b557c84e8f4e90b2e09070bad5f6909cee687c9284848c8c8c8c8c604051612a4f97969594939291906147cd565b60405180910390a35050505050505050565b600080612a6d4261290e565b600184015490915067ffffffffffffffff808316650100000000009092041611801590612ab25750600183015467ffffffffffffffff600160681b9091048116908216105b8015610de2575050905460ff1615919050565b600082815261015f602052604081208215612b20576002600182015460ff166002811115612af557612af56139cd565b03612b04576000915050610a18565b612b0d84610b80565b612b1b576000915050610a18565b612b37565b612b2984611cdb565b612b37576000915050610a18565b612b4084611338565b612b4e576000915050610a18565b600084815261015f6020526040902060098101546004909101541015612b78576000915050610a18565b5060019392505050565b600081815261015f60205260408120805460ff1615612ba45750600092915050565b6000612baf82612a61565b905060018083015460ff166002811115612bcb57612bcb6139cd565b14158015612bd65750805b15612be5575060009392505050565b61190e8482612ac5565b600084815261015f60205260408082206101915460018201549251630748d63560e31b81526001600160a01b038781166004830152600160a81b90940467ffffffffffffffff1660248201529193921690633a46b1a890604401602060405180830381865afa158015612c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8a919061411f565b6001600160a01b038516600090815260068401602052604090205490915060ff166002816003811115612cbf57612cbf6139cd565b03612cde576004830154612cd4908390614036565b6004840155612d40565b6003816003811115612cf257612cf26139cd565b03612d11576005830154612d07908390614036565b6005840155612d40565b6001816003811115612d2557612d256139cd565b03612d40576003830154612d3a908390614036565b60038401555b6002866003811115612d5457612d546139cd565b03612d73576004830154612d6990839061416c565b6004840155612dd5565b6003866003811115612d8757612d876139cd565b03612da6576005830154612d9c90839061416c565b6005840155612dd5565b6001866003811115612dba57612dba6139cd565b03612dd5576003830154612dcf90839061416c565b60038401555b6001600160a01b03851660009081526006840160205260409020805487919060ff19166001836003811115612e0c57612e0c6139cd565b0217905550846001600160a01b0316877fb83d25c6a5d258561330739951487acb4bd09ba5190b5d32c4f261817d9067928885604051612e4d929190614823565b60405180910390a383612e6257505050611cd5565b612e6b87612b82565b8015612f0c575060c954604051637ef7c88360e11b81526001600160a01b039091169063fdef910690612ecb90309089907ff281525e53675515a6ba7cc7bea8a81e649b3608423ee2d73be1752cea8878899060009036906004016144b1565b602060405180830381865afa158015612ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0c91906144e4565b15612f1a57612f1a87612f23565b50505050505050565b600081815261015f60209081526040808320805460ff19166001178155600a8101546007820180548451818702810187019095528085529295613077956001600160a01b03909316948894909390919084015b8282101561305a576000848152602090819020604080516060810182526003860290920180546001600160a01b0316835260018101549383019390935260028301805492939291840191612fc990614138565b80601f0160208091040260200160405190810160405280929190818152602001828054612ff590614138565b80156130425780601f1061301757610100808354040283529160200191613042565b820191906000526020600020905b81548152906001019060200180831161302557829003601f168201915b50505050508152505081526020019060010190612f76565b505050506008850154600a860154600160a01b900460ff1661325b565b505060405182907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90600090a25050565b60006001600160e01b0319821663368d719960e21b14806130d957506001600160e01b03198216633f4644d160e21b145b80610a185750610a1882613401565b600054610100900460ff166131535760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610ac2565b610f8b81613476565b600061316783613503565b8015610de25750610de28383613536565b6001600160a01b0381163b6131f55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610ac2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b61323f836135d4565b60008251118061324c5750805b15611ecb57611cd58383613614565b606060006001836001811115613273576132736139cd565b0361337a5760006060886001600160a01b031688888860405160240161329b9392919061483e565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166331c6fcc960e21b179052516132e59190614867565b600060405180830381855af49150503d8060008114613320576040519150601f19603f3d011682016040523d82523d6000602084013e613325565b606091505b50909250905081613359578051156133405780518082602001fd5b6040516318cecad560e01b815260040160405180910390fd5b8080602001905181019061336d9190614879565b90945092506133f7915050565b6040516331c6fcc960e21b81526001600160a01b0388169063c71bf324906133aa9089908990899060040161483e565b6000604051808303816000875af11580156133c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133f19190810190614879565b90925090505b9550959350505050565b60006001600160e01b0319821663041de68360e41b148061343157506001600160e01b03198216621574e360e91b145b8061344c57506001600160e01b031982166352d1902d60e01b145b8061346757506001600160e01b0319821663afc5b82360e01b145b80610a185750610a1882613639565b600054610100900460ff166134e15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610ac2565b60c980546001600160a01b0319166001600160a01b0392909216919091179055565b6000613516826301ffc9a760e01b613536565b8015610a18575061352f826001600160e01b0319613536565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156135bd575060208210155b80156135c95750600081115b979650505050505050565b6135dd81613178565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610de283836040518060600160405280602781526020016149c36027913961366e565b60006001600160e01b03198216634a06561b60e11b1480610a1857506301ffc9a760e01b6001600160e01b0319831614610a18565b6060600080856001600160a01b03168560405161368b9190614867565b600060405180830381855af49150503d80600081146136c6576040519150601f19603f3d011682016040523d82523d6000602084013e6136cb565b606091505b50915091506136dc868383876136e6565b9695505050505050565b6060831561375557825160000361374e576001600160a01b0385163b61374e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac2565b508161190e565b61190e838381511561376a5781518083602001fd5b8060405162461bcd60e51b8152600401610ac29190613aa7565b60405180606001604052806003906020820280368337509192915050565b6000602082840312156137b457600080fd5b81356001600160e01b031981168114610de257600080fd5b6001600160a01b0381168114610f8b57600080fd5b600060a082840312156137f357600080fd5b50919050565b6000604082840312156137f357600080fd5b60008083601f84011261381d57600080fd5b50813567ffffffffffffffff81111561383557600080fd5b60208301915083602082850101111561384d57600080fd5b9250929050565b6000806000806000806000610160888a03121561387057600080fd5b873561387b816137cc565b965061388a8960208a016137e1565b955060c088013561389a816137cc565b94506138a98960e08a016137f9565b9350610120880135925061014088013567ffffffffffffffff8111156138ce57600080fd5b6138da8a828b0161380b565b989b979a50959850939692959293505050565b6000602082840312156138ff57600080fd5b5035919050565b600060a0828403121561391857600080fd5b610de283836137e1565b60008060006040848603121561393757600080fd5b833561ffff8116811461394957600080fd5b9250602084013567ffffffffffffffff81111561396557600080fd5b6139718682870161380b565b9497909650939450505050565b60048110610f8b57600080fd5b6000806000606084860312156139a057600080fd5b8335925060208401356139b2816137cc565b915060408401356139c28161397e565b809150509250925092565b634e487b7160e01b600052602160045260246000fd5b60038110610f8b57610f8b6139cd565b60208101613a00836139e3565b91905290565b60608101818360005b6003811015613a3157815160ff16835260209283019290910190600101613a0f565b50505092915050565b600060208284031215613a4c57600080fd5b8135610de2816137cc565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b60008151808452613a93816020860160208601613a57565b601f01601f19169290920160200192915050565b602081526000610de26020830184613a7b565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613af957613af9613aba565b604052919050565b600067ffffffffffffffff821115613b1b57613b1b613aba565b50601f01601f191660200190565b600082601f830112613b3a57600080fd5b8135613b4d613b4882613b01565b613ad0565b818152846020838601011115613b6257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613b9257600080fd5b8235613b9d816137cc565b9150602083013567ffffffffffffffff811115613bb957600080fd5b613bc585828601613b29565b9150509250929050565b60008060408385031215613be257600080fd5b823591506020830135613bf4816137cc565b809150509250929050565b60048110613c0f57613c0f6139cd565b9052565b60208101610a188284613bff565b60008083601f840112613c3357600080fd5b50813567ffffffffffffffff811115613c4b57600080fd5b6020830191508360208260051b850101111561384d57600080fd5b67ffffffffffffffff81168114610f8b57600080fd5b8015158114610f8b57600080fd5b600080600080600080600080600060e08a8c031215613ca857600080fd5b893567ffffffffffffffff80821115613cc057600080fd5b613ccc8d838e0161380b565b909b50995060208c0135915080821115613ce557600080fd5b50613cf28c828d01613c21565b90985096505060408a0135945060608a0135613d0d81613c66565b935060808a0135613d1d81613c66565b925060a08a0135613d2d8161397e565b915060c08a0135613d3d81613c7c565b809150509295985092959850929598565b600060408284031215613d6057600080fd5b610de283836137f9565b600081518084526020808501808196508360051b8101915082860160005b85811015613ddb578284038952815180516001600160a01b031685528581015186860152604090810151606091860182905290613dc781870183613a7b565b9a87019a9550505090840190600101613d88565b5091979650505050505050565b6001600160a01b038151168252602081015160028110613e0a57613e0a6139cd565b806020840152505050565b60006101e0891515835288151560208401528751613e32816139e3565b8060408501525063ffffffff6020890151166060840152604088015167ffffffffffffffff80821660808601528060608b01511660a08601528060808b01511660c0860152505060a088015160e0840152613ea56101008401888051825260208082015190830152604090810151910152565b80610160840152613eb881840187613d6a565b91505083610180830152613ed06101a0830184613de8565b98975050505050505050565b60408101610a188284613de8565b600080600060608486031215613eff57600080fd5b833592506020840135613f118161397e565b915060408401356139c281613c7c565b600080600080600080600060a0888a031215613f3c57600080fd5b873567ffffffffffffffff80821115613f5457600080fd5b613f608b838c0161380b565b909950975060208a0135915080821115613f7957600080fd5b613f858b838c01613c21565b909750955060408a01359150613f9a82613c66565b909350606089013590613fac82613c66565b90925060808901359080821115613fc257600080fd5b50613fcf8a828b01613b29565b91505092959891949750929550565b60008060208385031215613ff157600080fd5b823567ffffffffffffffff81111561400857600080fd5b6140148582860161380b565b90969095509350505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a1857610a18614020565b8082028115828204841417610a1857610a18614020565b60006040828403121561407257600080fd5b6040516040810181811067ffffffffffffffff8211171561409557614095613aba565b60405290508082356140a6816137cc565b81526020830135600281106140ba57600080fd5b6020919091015292915050565b6000806000608084860312156140dc57600080fd5b833592506140ed8560208601614060565b9150606084013567ffffffffffffffff81111561410957600080fd5b61411586828701613b29565b9150509250925092565b60006020828403121561413157600080fd5b5051919050565b600181811c9082168061414c57607f821691505b6020821081036137f357634e487b7160e01b600052602260045260246000fd5b80820180821115610a1857610a18614020565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006020808501808196508560051b810191508460005b87811015613ddb5782840389528135605e198836030181126141e357600080fd5b8701606081356141f2816137cc565b6001600160a01b03168652818701358787015260408083013536849003601e1901811261421e57600080fd5b90920187810192903567ffffffffffffffff81111561423c57600080fd5b80360384131561424b57600080fd5b828289015261425d838901828661417f565b9c89019c975050509286019250506001016141c2565b6040815260006142876040830186886141a8565b82810360208401526135c981858761417f565b634e487b7160e01b600052603260045260246000fd5b60008235605e198336030181126142c657600080fd5b9190910192915050565b601f821115611ecb57600081815260208120601f850160051c810160208610156142f75750805b601f850160051c820191505b8181101561208857828155600101614303565b8135614321816137cc565b6001600160a01b0381166001600160a01b031983541617825550600160208084013582840155600283016040850135601e1986360301811261436257600080fd5b8501803567ffffffffffffffff81111561437b57600080fd5b803603848301131561438c57600080fd5b6143a08161439a8554614138565b856142d0565b6000601f8211600181146143d657600083156143be57508382018601355b600019600385901b1c1916600184901b17855561442f565b600085815260209020601f19841690835b82811015614406578685018901358255938801939089019088016143e7565b50848210156144255760001960f88660031b161c198885880101351681555b50508683881b0185555b505050505050505050565b60006040828403121561444c57600080fd5b610de28383614060565b8381526001600160a01b03831660208201526060810161190e6040830184613bff565b60008060006060848603121561448e57600080fd5b8351925060208401516144a08161397e565b60408501519092506139c281613c7c565b60006001600160a01b038088168352808716602084015250846040830152608060608301526135c960808301848661417f565b6000602082840312156144f657600080fd5b8151610de281613c7c565b63ffffffff81168114610f8b57600080fd5b60006020828403121561452557600080fd5b8135610de281614501565b60006020828403121561454257600080fd5b8135610de281613c66565b60038110610f8b57600080fd5b60008135610a1881613c66565b81356145728161454d565b61457b816139e3565b815460ff821691508160ff198216178355602084013561459a81614501565b64ffffffff008160081b169050808364ffffffffff1984161717845560408501356145c481614501565b68ffffffff00000000008160281b168468ffffffffffffffffff1985161783171785555050505061462e6145fa6060840161455a565b825470ffffffffffffffff000000000000000000191660489190911b70ffffffffffffffff00000000000000000016178255565b608082013560018201555050565b60006020828403121561464e57600080fd5b8135610de28161454d565b60a08101614666876139e3565b95815263ffffffff948516602082015292909316604083015267ffffffffffffffff1660608201526080015290565b815167ffffffffffffffff8111156146af576146af613aba565b6146c3816146bd8454614138565b846142d0565b602080601f8311600181146146f857600084156146e05750858301515b600019600386901b1c1916600185901b178555612088565b600085815260208120601f198616915b8281101561472757888601518255948401946001909101908401614708565b50858210156147455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b67ffffffffffffffff818116838216019080821115612a0257612a02614020565b634e487b7160e01b600052601260045260246000fd5b60008261479b5761479b614776565b500690565b6000826147af576147af614776565b500490565b6000600182016147c6576147c6614020565b5060010190565b600067ffffffffffffffff808a16835280891660208401525060a060408301526147fb60a08301878961417f565b828103606084015261480e8186886141a8565b91505082608083015298975050505050505050565b604081016148318285613bff565b8260208301529392505050565b8381526060602082015260006148576060830185613d6a565b9050826040830152949350505050565b600082516142c6818460208701613a57565b600080604080848603121561488d57600080fd5b835167ffffffffffffffff808211156148a557600080fd5b818601915086601f8301126148b957600080fd5b81516020828211156148cd576148cd613aba565b8160051b6148dc828201613ad0565b928352848101820192828101908b8511156148f657600080fd5b83870192505b8483101561496b578251868111156149145760008081fd5b8701603f81018d136149265760008081fd5b84810151614936613b4882613b01565b8181528e8b83850101111561494b5760008081fd5b61495a828883018d8601613a57565b8452505091830191908301906148fc565b9990920151989a989950505050505050505056fe2875696e7432353620616c6c6f774661696c7572654d61702c2075696e743820766f74654f7074696f6e2c20626f6f6c207472794561726c79457865637574696f6e29416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000a000000000000000000000000f4162790cdb7fd9335a1e89a457143c28a307410000000000000000000000000e9e8dd50e5f6a6d49e80e5265591ad89c751cc8e