1 tx
7.1k calls
constructor
constructor(address[] _components, int256[] _units, address[] _modules, address _controller, address _manager, string _name, string _symbol)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
components
viewfunction components(uint256) view returns (address)
controller
viewfunction controller() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
getComponents
viewfunction getComponents() view returns (address[])
getDefaultPositionRealUnit
viewfunction getDefaultPositionRealUnit(address _component) view returns (int256)
getExternalPositionData
viewfunction getExternalPositionData(address _component, address _positionModule) view returns (bytes)
getExternalPositionModules
viewfunction getExternalPositionModules(address _component) view returns (address[])
getExternalPositionRealUnit
viewfunction getExternalPositionRealUnit(address _component, address _positionModule) view returns (int256)
getModules
viewfunction getModules() view returns (address[])
getPositions
viewfunction getPositions() view returns (tuple[])
getTotalComponentRealUnits
viewfunction getTotalComponentRealUnits(address _component) view returns (int256)
isComponent
viewfunction isComponent(address _component) view returns (bool)
isExternalPositionModule
viewfunction isExternalPositionModule(address _component, address _module) view returns (bool)
isInitializedModule
viewfunction isInitializedModule(address _module) view returns (bool)
isLocked
viewfunction isLocked() view returns (bool)
isPendingModule
viewfunction isPendingModule(address _module) view returns (bool)
locker
viewfunction locker() view returns (address)
manager
viewfunction manager() view returns (address)
modules
viewfunction modules(uint256) view returns (address)
moduleStates
viewfunction moduleStates(address) view returns (uint8)
name
viewfunction name() view returns (string)
positionMultiplier
viewfunction positionMultiplier() view returns (int256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
addComponent
nonpayablefunction addComponent(address _component)
addExternalPositionModule
nonpayablefunction addExternalPositionModule(address _component, address _positionModule)
addModule
nonpayablefunction addModule(address _module)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
burn
nonpayablefunction burn(address _account, uint256 _quantity)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
editDefaultPositionUnit
nonpayablefunction editDefaultPositionUnit(address _component, int256 _realUnit)
editExternalPositionData
nonpayablefunction editExternalPositionData(address _component, address _positionModule, bytes _data)
editExternalPositionUnit
nonpayablefunction editExternalPositionUnit(address _component, address _positionModule, int256 _realUnit)
editPositionMultiplier
nonpayablefunction editPositionMultiplier(int256 _newMultiplier)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initializeModule
nonpayablefunction initializeModule()
invoke
nonpayablefunction invoke(address _target, uint256 _value, bytes _data) returns (bytes _returnValue)
lock
nonpayablefunction lock()
mint
nonpayablefunction mint(address _account, uint256 _quantity)
removeComponent
nonpayablefunction removeComponent(address _component)
removeExternalPositionModule
nonpayablefunction removeExternalPositionModule(address _component, address _positionModule)
removeModule
nonpayablefunction removeModule(address _module)
removePendingModule
nonpayablefunction removePendingModule(address _module)
setManager
nonpayablefunction setManager(address _manager)
transfer
nonpayablefunction transfer(address recipient, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address sender, address recipient, uint256 amount) returns (bool)
unlock
nonpayablefunction unlock()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ComponentAdded
event ComponentAdded(address indexed _component)
ComponentRemoved
event ComponentRemoved(address indexed _component)
DefaultPositionUnitEdited
event DefaultPositionUnitEdited(address indexed _component, int256 _realUnit)
ExternalPositionDataEdited
event ExternalPositionDataEdited(address indexed _component, address indexed _positionModule, bytes _data)
ExternalPositionUnitEdited
event ExternalPositionUnitEdited(address indexed _component, address indexed _positionModule, int256 _realUnit)
Invoked
event Invoked(address indexed _target, uint256 indexed _value, bytes _data, bytes _returnValue)
ManagerEdited
event ManagerEdited(address _newManager, address _oldManager)
ModuleAdded
event ModuleAdded(address indexed _module)
ModuleInitialized
event ModuleInitialized(address indexed _module)
ModuleRemoved
event ModuleRemoved(address indexed _module)
PendingModuleRemoved
event PendingModuleRemoved(address indexed _module)
PositionModuleAdded
event PositionModuleAdded(address indexed _component, address indexed _positionModule)
PositionModuleRemoved
event PositionModuleRemoved(address indexed _component, address indexed _positionModule)
PositionMultiplierEdited
event PositionMultiplierEdited(int256 _newMultiplier)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b5060405162003cfd38038062003cfd833981016040819052620000349162000476565b8151829082906200004d906003906020850190620001bf565b50805162000063906004906020840190620001bf565b505060058054601260ff1990911617610100600160a81b0319166101006001600160a01b038881169190910291909117909155600680546001600160a01b03191691861691909117905550620000c4620001b2602090811b62001a6d17901c565b600d558651620000dc90600b9060208a019062000244565b5060005b85518110156200014357600160096000888481518110620000fd57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660018360028111156200013557fe5b0217905550600101620000e0565b5060005b8751811015620001a4578681815181106200015e57fe5b6020026020010151600c60008a84815181106200017757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205560010162000147565b5050505050505050620005d8565b670de0b6b3a76400005b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b5062000240929150620002aa565b5090565b8280548282559060005260206000209081019282156200029c579160200282015b828111156200029c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000265565b5062000240929150620002c7565b620001bc91905b80821115620002405760008155600101620002b1565b620001bc91905b80821115620002405780546001600160a01b0319168155600101620002ce565b8051620002fb81620005bf565b92915050565b600082601f83011262000312578081fd5b81516200032962000323826200059f565b62000578565b8181529150602080830190848101818402860182018710156200034b57600080fd5b60005b84811015620003775781516200036481620005bf565b845292820192908201906001016200034e565b505050505092915050565b600082601f83011262000393578081fd5b8151620003a462000323826200059f565b818152915060208083019084810181840286018201871015620003c657600080fd5b60005b848110156200037757815184529282019290820190600101620003c9565b600082601f830112620003f8578081fd5b81516001600160401b038111156200040e578182fd5b602062000424601f8301601f1916820162000578565b925081835284818386010111156200043b57600080fd5b60005b828110156200045b5784810182015184820183015281016200043e565b828111156200046d5760008284860101525b50505092915050565b600080600080600080600060e0888a03121562000491578283fd5b87516001600160401b0380821115620004a8578485fd5b620004b68b838c0162000301565b985060208a0151915080821115620004cc578485fd5b620004da8b838c0162000382565b975060408a0151915080821115620004f0578485fd5b620004fe8b838c0162000301565b96506200050f8b60608c01620002ee565b9550620005208b60808c01620002ee565b945060a08a015191508082111562000536578384fd5b620005448b838c01620003e7565b935060c08a01519150808211156200055a578283fd5b50620005698a828b01620003e7565b91505092959891949750929550565b6040518181016001600160401b03811182821017156200059757600080fd5b604052919050565b60006001600160401b03821115620005b5578081fd5b5060209081020190565b6001600160a01b0381168114620005d557600080fd5b50565b61371580620005e86000396000f3fe6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610842578063eaf993e114610862578063f77c479114610882578063f83d08ba14610897576102b9565b8063d7f1b27c146107e2578063dd62ed3e14610802578063df5e9b2914610822576102b9565b8063b2494df314610738578063c2de0e9d1461074d578063c5d574fe1461076d578063c75640171461078d578063d0ebdbe7146107ad578063d7b96d4e146107cd576102b9565b8063a457c2d71161012e578063a457c2d71461068e578063a4e2d634146106ae578063a69df4b5146106c3578063a7bdad03146106d8578063a9059cbb146106f8578063acf3f07714610718576102b9565b80638ae458da146105d75780638f6f0332146105f757806395d89b411461061757806399d50d5d1461062c5780639dc29fac1461064e578063a06324611461066e576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146105155780636f86c8971461053557806370a08231146105555780637d96659314610575578063802758601461059557806381b2248a146105b7576102b9565b806340c10f191461045e578063481c6a751461047e5780634e353270146104a05780635230c396146104c057806353bae5f7146104d557806363a90fc1146104f5576102b9565b806323b872dd1161026b57806323b872dd1461038f57806326898fe1146103af5780632ba57d17146103cf578063313ce567146103ef57806335bc4e5214610411578063395093511461043e576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461031657806318160ddd1461032d5780631ed86f191461034f57806322ebeba41461036f576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108ac565b6040516102e09190612de8565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612b64565b610943565b6040516102e09190612d99565b34801561032257600080fd5b5061032b610961565b005b34801561033957600080fd5b50610342610a4b565b6040516102e09190612e0f565b34801561035b57600080fd5b5061032b61036a366004612a35565b610a51565b34801561037b57600080fd5b5061034261038a366004612a50565b610b89565b34801561039b57600080fd5b506103096103aa366004612b24565b610ba4565b3480156103bb57600080fd5b5061032b6103ca366004612a84565b610c31565b3480156103db57600080fd5b5061032b6103ea366004612b64565b610ccc565b3480156103fb57600080fd5b50610404610d43565b6040516102e091906135d2565b34801561041d57600080fd5b5061043161042c366004612a35565b610d4c565b6040516102e09190612dfb565b34801561044a57600080fd5b50610309610459366004612b64565b610d61565b34801561046a57600080fd5b5061032b610479366004612b64565b610db5565b34801561048a57600080fd5b50610493610dd3565b6040516102e09190612c7a565b3480156104ac57600080fd5b5061032b6104bb366004612a35565b610de2565b3480156104cc57600080fd5b50610342610e90565b3480156104e157600080fd5b506103096104f0366004612a35565b610e96565b34801561050157600080fd5b5061032b610510366004612ae7565b610ec9565b34801561052157600080fd5b50610342610530366004612a35565b610f48565b34801561054157600080fd5b5061032b610550366004612a35565b610f56565b34801561056157600080fd5b50610342610570366004612a35565b610fae565b34801561058157600080fd5b50610309610590366004612a50565b610fc9565b3480156105a157600080fd5b506105aa610fe4565b6040516102e09190612cf5565b3480156105c357600080fd5b506104936105d2366004612bf0565b6111a1565b3480156105e357600080fd5b506102d36105f2366004612a50565b6111c8565b34801561060357600080fd5b506102d3610612366004612b8e565b6111d4565b34801561062357600080fd5b506102d3611281565b34801561063857600080fd5b506106416112e2565b6040516102e09190612ca8565b34801561065a57600080fd5b5061032b610669366004612b64565b611343565b34801561067a57600080fd5b5061032b610689366004612a35565b61135d565b34801561069a57600080fd5b506103096106a9366004612b64565b611483565b3480156106ba57600080fd5b506103096114f1565b3480156106cf57600080fd5b5061032b6114fa565b3480156106e457600080fd5b506106416106f3366004612a35565b61156a565b34801561070457600080fd5b50610309610713366004612b64565b611575565b34801561072457600080fd5b5061032b610733366004612a50565b611589565b34801561074457600080fd5b50610641611646565b34801561075957600080fd5b5061032b610768366004612bf0565b6116a6565b34801561077957600080fd5b50610493610788366004612bf0565b6116ff565b34801561079957600080fd5b5061032b6107a8366004612a35565b61170c565b3480156107b957600080fd5b5061032b6107c8366004612a35565b6117c6565b3480156107d957600080fd5b50610493611850565b3480156107ee57600080fd5b506103096107fd366004612a35565b61185f565b34801561080e57600080fd5b5061034261081d366004612a50565b611868565b34801561082e57600080fd5b5061030961083d366004612a35565b611893565b34801561084e57600080fd5b5061032b61085d366004612a50565b611902565b34801561086e57600080fd5b5061034261087d366004612a35565b6119a6565b34801561088e57600080fd5b50610493611a0d565b3480156108a357600080fd5b5061032b611a21565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b820191906000526020600020905b81548152906001019060200180831161091b57829003601f168201915b505050505090505b90565b6000610957610950611a79565b8484611a7d565b5060015b92915050565b600a5460ff161561098d5760405162461bcd60e51b8152600401610984906134b1565b60405180910390fd5b60013360009081526009602052604090205460ff1660028111156109ad57fe5b146109ca5760405162461bcd60e51b815260040161098490613541565b33600081815260096020526040808220805460ff19166002179055600880546001810182559083527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191684179055517f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b9289190a2565b60025490565b610a59611b31565b6001600160a01b03811660009081526009602052604081205460ff166002811115610a8057fe5b14610a9d5760405162461bcd60e51b815260040161098490612ee4565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990610ad1908490600401612c7a565b60206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612bd0565b610b3d5760405162461bcd60e51b8152600401610984906131f8565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9190a250565b6000610b9d610b988484611b5d565b611b8c565b9392505050565b6000610bb1848484611ba3565b610c2784610bbd611a79565b610c2285604051806060016040528060288152602001613693602891396001600160a01b038a16600090815260016020526040812090610bfb611a79565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611cc416565b611a7d565b5060019392505050565b610c39611cf0565b610c41611dcd565b6001600160a01b038085166000908152600c6020908152604080832093871683526002909301905220610c789060010183836128bf565b50826001600160a01b0316846001600160a01b03167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e8484604051610cbe929190612da4565b60405180910390a350505050565b610cd4611cf0565b610cdc611dcd565b6000610ce782611e02565b6001600160a01b0384166000818152600c60205260409081902083905551919250907f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a9790610d36908590612e0f565b60405180910390a2505050565b60055460ff1690565b60096020526000908152604090205460ff1681565b6000610957610d6e611a79565b84610c228560016000610d7f611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611e7a16565b610dbd611cf0565b610dc5611dcd565b610dcf8282611e9f565b5050565b6006546001600160a01b031681565b610dea611cf0565b610df2611dcd565b610dfb81611893565b15610e185760405162461bcd60e51b815260040161098490613182565b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915560405190917f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29891a250565b600d5481565b600060015b6001600160a01b03831660009081526009602052604090205460ff166002811115610ec257fe5b1492915050565b610ed1611cf0565b610ed9611dcd565b6000610ee482611e02565b6001600160a01b038086166000818152600c602090815260408083209489168084526002909501909152908190208490555192935090917f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd90610cbe908690612e0f565b600061095b610b9883611f6b565b610f5e611cf0565b610f66611dcd565b610f77600b8263ffffffff611f8616565b6040516001600160a01b038216907fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df90600090a250565b6001600160a01b031660009081526020819052604090205490565b6000610b9d82610fd8856120b3565b9063ffffffff61212c16565b606080610fef612142565b67ffffffffffffffff8111801561100557600080fd5b5060405190808252806020026020018201604052801561103f57816020015b61102c612939565b8152602001906001900390816110245790505b5090506000805b600b54811015611199576000600b828154811061105f57fe5b60009182526020822001546001600160a01b0316915061107e82611f6b565b13156110ed576040805160a0810182526001600160a01b0383168152600060208201529081016110ad83610f48565b8152602001600060ff168152602001604051806020016040528060008152508152508484815181106110db57fe5b60209081029190910101526001909201915b60606110f8826120b3565b905060005b815181101561118e57600082828151811061111457fe5b602002602001015190506040518060a00160405280856001600160a01b03168152602001826001600160a01b031681526020016111518684610b89565b81526001602082015260400161116786846121c7565b81525087878151811061117657fe5b602090810291909101015250600194850194016110fd565b505050600101611046565b509091505090565b600881815481106111ae57fe5b6000918252602090912001546001600160a01b0316905081565b6060610b9d83836121c7565b60606111de611cf0565b6111e6611dcd565b61123183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506001600160a01b03881691905086612285565b905083856001600160a01b03167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab285858560405161127193929190612db8565b60405180910390a3949350505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b6060600b80548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131c575050505050905090565b61134b611cf0565b611353611dcd565b610dcf82826122b3565b611365611b31565b600a5460ff16156113885760405162461bcd60e51b8152600401610984906134b1565b60026001600160a01b03821660009081526009602052604090205460ff1660028111156113b157fe5b146113ce5760405162461bcd60e51b815260040161098490613062565b806001600160a01b031663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b505050506001600160a01b0381166000908152600960205260409020805460ff1916905561144c600882611f86565b6040516001600160a01b038216907f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b890600090a250565b6000610957611490611a79565b84610c22856040518060600160405280602581526020016136bb60259139600160006114ba611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611cc416565b600a5460ff1681565b611502611cf0565b600a5460ff166115245760405162461bcd60e51b815260040161098490613276565b6007546001600160a01b0316331461154e5760405162461bcd60e51b815260040161098490613306565b600780546001600160a01b0319169055600a805460ff19169055565b606061095b826120b3565b6000610957611582611a79565b8484611ba3565b611591611cf0565b611599611dcd565b6001600160a01b0382166000908152600c602052604090206115c4906001018263ffffffff611f8616565b6001600160a01b038083166000908152600c6020908152604080832093851683526002909301905290812081815590611600600183018261297d565b5050806001600160a01b0316826001600160a01b03167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b60606008805480602002602001604051908101604052809291908181526020018280548015610938576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161131c575050505050905090565b6116ae611cf0565b6116b6611dcd565b6116bf81612395565b600d8190556040517fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a906116f4908390612e0f565b60405180910390a150565b600b81815481106111ae57fe5b611714611b31565b600a5460ff16156117375760405162461bcd60e51b8152600401610984906134b1565b60016001600160a01b03821660009081526009602052604090205460ff16600281111561176057fe5b1461177d5760405162461bcd60e51b815260040161098490613541565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d8779190a250565b6117ce611b31565b600a5460ff16156117f15760405162461bcd60e51b8152600401610984906134b1565b600680546001600160a01b038381166001600160a01b03198316179092556040519116907f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c906118449084908490612c8e565b60405180910390a15050565b6007546001600160a01b031681565b60006002610e9b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061095b82600b8054806020026020016040519081016040528092919081815260200182805480156118ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118d1575b505050505061212c90919063ffffffff16565b61190a611cf0565b611912611dcd565b61191c8282610fc9565b156119395760405162461bcd60e51b815260040161098490612e87565b6001600160a01b038281166000818152600c60209081526040808320600190810180549182018155845291832090910180546001600160a01b0319169486169485179055517ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb9190a35050565b6000806119b283610f48565b905060606119bf846120b3565b905060005b8151811015611a04576119fa6119ed868484815181106119e057fe5b6020026020010151610b89565b849063ffffffff6123d016565b92506001016119c4565b50909392505050565b60055461010090046001600160a01b031681565b611a29611cf0565b600a5460ff1615611a4c5760405162461bcd60e51b815260040161098490612e18565b600780546001600160a01b03191633179055600a805460ff19166001179055565b670de0b6b3a764000090565b3390565b6001600160a01b038316611aa35760405162461bcd60e51b8152600401610984906133aa565b6001600160a01b038216611ac95760405162461bcd60e51b815260040161098490612f1b565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b24908590612e0f565b60405180910390a3505050565b6006546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610984906134dd565b565b6001600160a01b039182166000908152600c602090815260408083209390941682526002909201909152205490565b600061095b600d548361241690919063ffffffff16565b6001600160a01b038316611bc95760405162461bcd60e51b81526004016109849061332e565b6001600160a01b038216611bef5760405162461bcd60e51b815260040161098490612e44565b611bfa838383612439565b611c3d81604051806060016040528060268152602001613644602691396001600160a01b038616600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611c72908263ffffffff611e7a16565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b24908590612e0f565b60008184841115611ce85760405162461bcd60e51b81526004016109849190612de8565b505050900390565b60023360009081526009602052604090205460ff166002811115611d1057fe5b14611d2d5760405162461bcd60e51b81526004016109849061310a565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990611d61903390600401612c7a565b60206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612bd0565b611b5b5760405162461bcd60e51b81526004016109849061346d565b600a5460ff1615611b5b576007546001600160a01b03163314611b5b5760405162461bcd60e51b815260040161098490613090565b600080611e1a600d548461243e90919063ffffffff16565b9050600083138015611e2a575080155b15611e475760405162461bcd60e51b8152600401610984906131b1565b600083138015611e5d5750611e5b81611b8c565b155b1561095b5760405162461bcd60e51b815260040161098490612f94565b600082820183811015610b9d5760405162461bcd60e51b815260040161098490612f5d565b6001600160a01b038216611ec55760405162461bcd60e51b815260040161098490613571565b611ed160008383612439565b600254611ee4908263ffffffff611e7a16565b6002556001600160a01b038216600090815260208190526040902054611f10908263ffffffff611e7a16565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5f908590612e0f565b60405180910390a35050565b6001600160a01b03166000908152600c602052604090205490565b600080611fec84805480602002602001604051908101604052809291908181526020018280548015611fe157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fc3575b505050505084612461565b915091508061200d5760405162461bcd60e51b815260040161098490612eb5565b83546000190182811461207f5784818154811061202657fe5b9060005260206000200160009054906101000a90046001600160a01b031685848154811061205057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8480548061208957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055505b50505050565b6001600160a01b0381166000908152600c602090815260409182902060010180548351818402810184019094528084526060939283018282801561212057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612102575b50505050509050919050565b6000806121398484612461565b95945050505050565b600080805b600b548110156121c1576000600b828154811061216057fe5b60009182526020822001546001600160a01b0316915061217f82611f6b565b131561218c576001909201915b6060612197826120b3565b8051909150156121b75780516121b490859063ffffffff611e7a16565b93505b5050600101612147565b50905090565b6001600160a01b038281166000908152600c60209081526040808320938516835260029384018252918290206001908101805484519281161561010002600019011694909404601f8101839004830282018301909352828152606093909290918301828280156122785780601f1061224d57610100808354040283529160200191612278565b820191906000526020600020905b81548152906001019060200180831161225b57829003601f168201915b5050505050905092915050565b60606122ab84848460405180606001604052806029815260200161366a602991396124c7565b949350505050565b6001600160a01b0382166122d95760405162461bcd60e51b8152600401610984906132c5565b6122e582600083612439565b61232881604051806060016040528060228152602001613622602291396001600160a01b038516600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038316600090815260208190526040902055600254612354908263ffffffff61258816565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5f908590612e0f565b600061239f6125ca565b905060006123b3828463ffffffff61241616565b13610dcf5760405162461bcd60e51b815260040161098490613373565b60008282018183128015906123e55750838112155b806123fa57506000831280156123fa57508381125b610b9d5760405162461bcd60e51b815260040161098490612fdb565b6000610b9d61242b848463ffffffff6126b416565b670de0b6b3a764000061271f565b505050565b6000610b9d61245b84670de0b6b3a764000063ffffffff6126b416565b8361271f565b81516000908190815b818110156124b457846001600160a01b031686828151811061248857fe5b60200260200101516001600160a01b031614156124ac579250600191506124c09050565b60010161246a565b50600019600092509250505b9250929050565b6060824710156124e95760405162461bcd60e51b81526004016109849061301c565b6124f2856127ad565b61250e5760405162461bcd60e51b8152600401610984906133ee565b60006060866001600160a01b0316858760405161252b9190612c5e565b60006040518083038185875af1925050503d8060008114612568576040519150601f19603f3d011682016040523d82523d6000602084013e61256d565b606091505b509150915061257d8282866127b3565b979650505050505050565b6000610b9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc4565b6000600019815b600b548110156126a4576000600b82815481106125ea57fe5b60009182526020822001546001600160a01b0316915061261161260c83611f6b565b6127ec565b905060008111801561262257508381105b1561262b578093505b6060612636836120b3565b905060005b815181101561269457600082828151811061265257fe5b60200260200101519050600061267061266b8784611b5d565b612812565b905060008111801561268157508781105b1561268a578097505b505060010161263b565b5050600190920191506125d19050565b506126ae81612836565b91505090565b6000826126c35750600061095b565b826000191480156126d75750600160ff1b82145b156126f45760405162461bcd60e51b81526004016109849061322f565b8282028284828161270157fe5b0514610b9d5760405162461bcd60e51b81526004016109849061322f565b60008161273e5760405162461bcd60e51b8152600401610984906135a8565b600160ff1b8314158061275357508160001914155b61276f5760405162461bcd60e51b81526004016109849061329e565b6000612781848463ffffffff61285b16565b9050600083851812801561279d575082848161279957fe5b0715155b15610b9d57600019019392505050565b3b151590565b606083156127c2575081610b9d565b8251156127d25782518084602001fd5b8160405162461bcd60e51b81526004016109849190612de8565b60008082121561280e5760405162461bcd60e51b8152600401610984906130d5565b5090565b60008082121561282d57612828826000036127ec565b61095b565b61095b826127ec565b6000600160ff1b821061280e5760405162461bcd60e51b815260040161098490613425565b60008161287a5760405162461bcd60e51b81526004016109849061350c565b8160001914801561288e5750600160ff1b83145b156128ab5760405162461bcd60e51b815260040161098490613141565b60008284816128b657fe5b05949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129005782800160ff1982351617855561292d565b8280016001018555821561292d579182015b8281111561292d578235825591602001919060010190612912565b5061280e9291506129c4565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f106129a357506129c1565b601f0160209004906000526020600020908101906129c191906129c4565b50565b61094091905b8082111561280e57600081556001016129ca565b80356001600160a01b038116811461095b57600080fd5b60008083601f840112612a06578182fd5b50813567ffffffffffffffff811115612a1d578182fd5b6020830191508360208285010111156124c057600080fd5b600060208284031215612a46578081fd5b610b9d83836129de565b60008060408385031215612a62578081fd5b612a6c84846129de565b9150612a7b84602085016129de565b90509250929050565b60008060008060608587031215612a99578182fd5b8435612aa48161360c565b93506020850135612ab48161360c565b9250604085013567ffffffffffffffff811115612acf578283fd5b612adb878288016129f5565b95989497509550505050565b600080600060608486031215612afb578283fd5b612b0585856129de565b9250612b1485602086016129de565b9150604084013590509250925092565b600080600060608486031215612b38578283fd5b8335612b438161360c565b92506020840135612b538161360c565b929592945050506040919091013590565b60008060408385031215612b76578182fd5b612b8084846129de565b946020939093013593505050565b60008060008060608587031215612ba3578384fd5b8435612bae8161360c565b935060208501359250604085013567ffffffffffffffff811115612acf578283fd5b600060208284031215612be1578081fd5b81518015158114610b9d578182fd5b600060208284031215612c01578081fd5b5035919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612c4a8160208601602086016135e0565b601f01601f19169290920160200192915050565b60008251612c708184602087016135e0565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612ce95783516001600160a01b031683529284019291840191600101612cc4565b50909695505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015612d8b57888303603f19018552815180516001600160a01b039081168552888201511688850152868101518785015260608082015160ff169085015260808082015160a08287018190529190612d7583880182612c32565b988b019896505050928801925050600101612d19565b509098975050505050505050565b901515815260200190565b6000602082526122ab602083018486612c08565b600060408252612dcc604083018587612c08565b8281036020840152612dde8185612c32565b9695505050505050565b600060208252610b9d6020830184612c32565b6020810160038310612e0957fe5b91905290565b90815260200190565b602080825260129082015271135d5cdd081b9bdd081899481b1bd8dad95960721b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b602080825260149082015273135bd91d5b1948185b1c9958591e48185919195960621b604082015260600190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f4d6f64756c65206d757374206e6f742062652061646465640000000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f5669727475616c20746f205265616c20756e697420636f6e76657273696f6e206040820152661a5b9d985b1a5960ca1b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b602080825260149082015273135bd91d5b19481b5d5cdd08189948185919195960621b604082015260600190565b60208082526025908201527f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e6040820152640818d85b1b60da1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526018908201527f4f6e6c7920746865206d6f64756c652063616e2063616c6c0000000000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260159082015274135d5cdd081b9bdd0818994818dbdb5c1bdb995b9d605a1b604082015260600190565b60208082526027908201527f5265616c20746f205669727475616c20756e697420636f6e76657273696f6e206040820152661a5b9d985b1a5960ca1b606082015260800190565b6020808252601d908201527f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c6572000000604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b6020808252600e908201526d135d5cdd081899481b1bd8dad95960921b604082015260600190565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252600e908201526d26bab9ba103132903637b1b5b2b960911b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f4e6577206d756c7469706c69657220746f6f20736d616c6c0000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526024908201527f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f604082015263363632b960e11b606082015260800190565b60208082526012908201527113db9b1e481dda195b881d5b9b1bd8dad95960721b604082015260600190565b60208082526015908201527413db9b1e481b585b9859d95c8818d85b8818d85b1b605a1b604082015260600190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b6020808252601690820152754d6f64756c65206d7573742062652070656e64696e6760501b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b60208082526010908201526f043616e742064697669646520627920360841b604082015260600190565b60ff91909116815260200190565b60005b838110156135fb5781810151838201526020016135e3565b838111156120ad5750506000910152565b6001600160a01b03811681146129c157600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122079736a494acee47751eec276f063048b044aec9d3e3e9b00486d2efcf067f08164736f6c634300060a003300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000001246553a53cd2897eb26bee87a0db0fb456f39d100000000000000000000000037e6365d4f6ae378467b0e24c9065ce5f06d70bf00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b0505e5a99abd03d94a1169e638b78edfed26ea4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000e0a58d7c25a2c00000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000a30e87311407ddcf1741901a8f359b6005252f220000000000000000000000004580dbe79b8fcb1282eb43113536d62e882fc0440000000000000000000000009534b6ec541ad182fbee2b0b01d1e4404765b8d7000000000000000000000000000000000000000000000000000000000000001c755355492f55534443203378204c65766572616765204d6f7270686f0000000000000000000000000000000000000000000000000000000000000000000000067553554933780000000000000000000000000000000000000000000000000000