[ { "inputs": [ { "internalType": "address[]", "name": "_components", "type": "address[]" }, { "internalType": "int256[]", "name": "_units", "type": "int256[]" }, { "internalType": "address[]", "name": "_modules", "type": "address[]" }, { "internalType": "contract IController", "name": "_controller", "type": "address" }, { "internalType": "address", "name": "_manager", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" } ], "name": "ComponentAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" } ], "name": "ComponentRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" }, { "indexed": false, "internalType": "int256", "name": "_realUnit", "type": "int256" } ], "name": "DefaultPositionUnitEdited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_positionModule", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "ExternalPositionDataEdited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_positionModule", "type": "address" }, { "indexed": false, "internalType": "int256", "name": "_realUnit", "type": "int256" } ], "name": "ExternalPositionUnitEdited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_target", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "_value", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "_data", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "_returnValue", "type": "bytes" } ], "name": "Invoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_newManager", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_oldManager", "type": "address" } ], "name": "ManagerEdited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_module", "type": "address" } ], "name": "ModuleAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_module", "type": "address" } ], "name": "ModuleInitialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_module", "type": "address" } ], "name": "ModuleRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_module", "type": "address" } ], "name": "PendingModuleRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_positionModule", "type": "address" } ], "name": "PositionModuleAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_component", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_positionModule", "type": "address" } ], "name": "PositionModuleRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256", "name": "_newMultiplier", "type": "int256" } ], "name": "PositionMultiplierEdited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" } ], "name": "addComponent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_positionModule", "type": "address" } ], "name": "addExternalPositionModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_module", "type": "address" } ], "name": "addModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "components", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "controller", "outputs": [ { "internalType": "contract IController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "int256", "name": "_realUnit", "type": "int256" } ], "name": "editDefaultPositionUnit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_positionModule", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "editExternalPositionData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_positionModule", "type": "address" }, { "internalType": "int256", "name": "_realUnit", "type": "int256" } ], "name": "editExternalPositionUnit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "_newMultiplier", "type": "int256" } ], "name": "editPositionMultiplier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getComponents", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" } ], "name": "getDefaultPositionRealUnit", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_positionModule", "type": "address" } ], "name": "getExternalPositionData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" } ], "name": "getExternalPositionModules", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_positionModule", "type": "address" } ], "name": "getExternalPositionRealUnit", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getModules", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPositions", "outputs": [ { "components": [ { "internalType": "address", "name": "component", "type": "address" }, { "internalType": "address", "name": "module", "type": "address" }, { "internalType": "int256", "name": "unit", "type": "int256" }, { "internalType": "uint8", "name": "positionState", "type": "uint8" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct ISetToken.Position[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" } ], "name": "getTotalComponentRealUnits", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initializeModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "invoke", "outputs": [ { "internalType": "bytes", "name": "_returnValue", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" } ], "name": "isComponent", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_module", "type": "address" } ], "name": "isExternalPositionModule", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_module", "type": "address" } ], "name": "isInitializedModule", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_module", "type": "address" } ], "name": "isPendingModule", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "locker", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "moduleStates", "outputs": [ { "internalType": "enum ISetToken.ModuleState", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "modules", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "positionMultiplier", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" } ], "name": "removeComponent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_component", "type": "address" }, { "internalType": "address", "name": "_positionModule", "type": "address" } ], "name": "removeExternalPositionModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_module", "type": "address" } ], "name": "removeModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_module", "type": "address" } ], "name": "removePendingModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_manager", "type": "address" } ], "name": "setManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unlock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162003cb938038062003cb9833981016040819052620000349162000476565b8151829082906200004d906003906020850190620001bf565b50805162000063906004906020840190620001bf565b505060058054601260ff1990911617610100600160a81b0319166101006001600160a01b038881169190910291909117909155600680546001600160a01b03191691861691909117905550620000c4620001b2602090811b62001b9517901c565b600d558651620000dc90600b9060208a019062000244565b5060005b85518110156200014357600160096000888481518110620000fd57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660018360028111156200013557fe5b0217905550600101620000e0565b5060005b8751811015620001a4578681815181106200015e57fe5b6020026020010151600c60008a84815181106200017757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205560010162000147565b5050505050505050620005d8565b670de0b6b3a76400005b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b5062000240929150620002aa565b5090565b8280548282559060005260206000209081019282156200029c579160200282015b828111156200029c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000265565b5062000240929150620002c7565b620001bc91905b80821115620002405760008155600101620002b1565b620001bc91905b80821115620002405780546001600160a01b0319168155600101620002ce565b8051620002fb81620005bf565b92915050565b600082601f83011262000312578081fd5b81516200032962000323826200059f565b62000578565b8181529150602080830190848101818402860182018710156200034b57600080fd5b60005b84811015620003775781516200036481620005bf565b845292820192908201906001016200034e565b505050505092915050565b600082601f83011262000393578081fd5b8151620003a462000323826200059f565b818152915060208083019084810181840286018201871015620003c657600080fd5b60005b848110156200037757815184529282019290820190600101620003c9565b600082601f830112620003f8578081fd5b81516001600160401b038111156200040e578182fd5b602062000424601f8301601f1916820162000578565b925081835284818386010111156200043b57600080fd5b60005b828110156200045b5784810182015184820183015281016200043e565b828111156200046d5760008284860101525b50505092915050565b600080600080600080600060e0888a03121562000491578283fd5b87516001600160401b0380821115620004a8578485fd5b620004b68b838c0162000301565b985060208a0151915080821115620004cc578485fd5b620004da8b838c0162000382565b975060408a0151915080821115620004f0578485fd5b620004fe8b838c0162000301565b96506200050f8b60608c01620002ee565b9550620005208b60808c01620002ee565b945060a08a015191508082111562000536578384fd5b620005448b838c01620003e7565b935060c08a01519150808211156200055a578283fd5b50620005698a828b01620003e7565b91505092959891949750929550565b6040518181016001600160401b03811182821017156200059757600080fd5b604052919050565b60006001600160401b03821115620005b5578081fd5b5060209081020190565b6001600160a01b0381168114620005d557600080fd5b50565b6136d180620005e86000396000f3fe6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610842578063eaf993e114610862578063f77c479114610882578063f83d08ba14610897576102b9565b8063d7f1b27c146107e2578063dd62ed3e14610802578063df5e9b2914610822576102b9565b8063b2494df314610738578063c2de0e9d1461074d578063c5d574fe1461076d578063c75640171461078d578063d0ebdbe7146107ad578063d7b96d4e146107cd576102b9565b8063a457c2d71161012e578063a457c2d71461068e578063a4e2d634146106ae578063a69df4b5146106c3578063a7bdad03146106d8578063a9059cbb146106f8578063acf3f07714610718576102b9565b80638ae458da146105d75780638f6f0332146105f757806395d89b411461061757806399d50d5d1461062c5780639dc29fac1461064e578063a06324611461066e576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146105155780636f86c8971461053557806370a08231146105555780637d96659314610575578063802758601461059557806381b2248a146105b7576102b9565b806340c10f191461045e578063481c6a751461047e5780634e353270146104a05780635230c396146104c057806353bae5f7146104d557806363a90fc1146104f5576102b9565b806323b872dd1161026b57806323b872dd1461038f57806326898fe1146103af5780632ba57d17146103cf578063313ce567146103ef57806335bc4e5214610411578063395093511461043e576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461031657806318160ddd1461032d5780631ed86f191461034f57806322ebeba41461036f576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108ac565b6040516102e09190612e5d565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612bd9565b610943565b6040516102e09190612e0e565b34801561032257600080fd5b5061032b610961565b005b34801561033957600080fd5b50610342610a4b565b6040516102e09190612e84565b34801561035b57600080fd5b5061032b61036a366004612aaa565b610a51565b34801561037b57600080fd5b5061034261038a366004612ac5565b610b89565b34801561039b57600080fd5b506103096103aa366004612b99565b610ba4565b3480156103bb57600080fd5b5061032b6103ca366004612af9565b610c31565b3480156103db57600080fd5b5061032b6103ea366004612bd9565b610ccc565b3480156103fb57600080fd5b50610404610d6c565b6040516102e0919061358a565b34801561041d57600080fd5b5061043161042c366004612aaa565b610d75565b6040516102e09190612e70565b34801561044a57600080fd5b50610309610459366004612bd9565b610d8a565b34801561046a57600080fd5b5061032b610479366004612bd9565b610dde565b34801561048a57600080fd5b50610493610dfc565b6040516102e09190612cef565b3480156104ac57600080fd5b5061032b6104bb366004612aaa565b610e0b565b3480156104cc57600080fd5b50610342610e93565b3480156104e157600080fd5b506103096104f0366004612aaa565b610e99565b34801561050157600080fd5b5061032b610510366004612b5c565b610ecc565b34801561052157600080fd5b50610342610530366004612aaa565b610f73565b34801561054157600080fd5b5061032b610550366004612aaa565b610f81565b34801561056157600080fd5b50610342610570366004612aaa565b61104a565b34801561058157600080fd5b50610309610590366004612ac5565b611065565b3480156105a157600080fd5b506105aa611080565b6040516102e09190612d6a565b3480156105c357600080fd5b506104936105d2366004612c65565b61123d565b3480156105e357600080fd5b506102d36105f2366004612ac5565b611264565b34801561060357600080fd5b506102d3610612366004612c03565b611270565b34801561062357600080fd5b506102d361131e565b34801561063857600080fd5b5061064161137f565b6040516102e09190612d1d565b34801561065a57600080fd5b5061032b610669366004612bd9565b6113e0565b34801561067a57600080fd5b5061032b610689366004612aaa565b6113fa565b34801561069a57600080fd5b506103096106a9366004612bd9565b61159b565b3480156106ba57600080fd5b50610309611609565b3480156106cf57600080fd5b5061032b611612565b3480156106e457600080fd5b506106416106f3366004612aaa565b611682565b34801561070457600080fd5b50610309610713366004612bd9565b61168d565b34801561072457600080fd5b5061032b610733366004612ac5565b6116a1565b34801561074457600080fd5b5061064161177e565b34801561075957600080fd5b5061032b610768366004612c65565b6117de565b34801561077957600080fd5b50610493610788366004612c65565b61184e565b34801561079957600080fd5b5061032b6107a8366004612aaa565b61185b565b3480156107b957600080fd5b5061032b6107c8366004612aaa565b611915565b3480156107d957600080fd5b5061049361199f565b3480156107ee57600080fd5b506103096107fd366004612aaa565b6119ae565b34801561080e57600080fd5b5061034261081d366004612ac5565b6119b7565b34801561082e57600080fd5b5061030961083d366004612aaa565b6119e2565b34801561084e57600080fd5b5061032b61085d366004612ac5565b611a51565b34801561086e57600080fd5b5061034261087d366004612aaa565b611ace565b34801561088e57600080fd5b50610493611b35565b3480156108a357600080fd5b5061032b611b49565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b820191906000526020600020905b81548152906001019060200180831161091b57829003601f168201915b505050505090505b90565b6000610957610950611ba1565b8484611ba5565b5060015b92915050565b600a5460ff161561098d5760405162461bcd60e51b815260040161098490613425565b60405180910390fd5b60013360009081526009602052604090205460ff1660028111156109ad57fe5b146109ca5760405162461bcd60e51b8152600401610984906134f9565b33600081815260096020526040808220805460ff19166002179055600880546001810182559083527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191684179055517f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b9289190a2565b60025490565b610a59611c59565b6001600160a01b03811660009081526009602052604081205460ff166002811115610a8057fe5b14610a9d5760405162461bcd60e51b815260040161098490612f62565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990610ad1908490600401612cef565b60206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612c45565b610b3d5760405162461bcd60e51b8152600401610984906131eb565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9190a250565b6000610b9d610b988484611c85565b611cb4565b9392505050565b6000610bb1848484611ccb565b610c2784610bbd611ba1565b610c228560405180606001604052806028815260200161364f602891396001600160a01b038a16600090815260016020526040812090610bfb611ba1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611dec16565b611ba5565b5060019392505050565b610c39611e18565b610c41611ef5565b6001600160a01b038085166000908152600c6020908152604080832093871683526002909301905220610c789060010183836128ab565b50826001600160a01b0316846001600160a01b03167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e8484604051610cbe929190612e19565b60405180910390a350505050565b610cd4611e18565b610cdc611ef5565b6000610ce782611f2a565b9050600082138015610cf7575080155b15610d145760405162461bcd60e51b815260040161098490613099565b6001600160a01b0383166000818152600c602052604090819020839055517f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a9790610d5f908590612e84565b60405180910390a2505050565b60055460ff1690565b60096020526000908152604090205460ff1681565b6000610957610d97611ba1565b84610c228560016000610da8611ba1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611f4116565b610de6611e18565b610dee611ef5565b610df88282611f66565b5050565b6006546001600160a01b031681565b610e13611e18565b610e1b611ef5565b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915560405190917f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29891a250565b600d5481565b600060015b6001600160a01b03831660009081526009602052604090205460ff166002811115610ec557fe5b1492915050565b610ed4611e18565b610edc611ef5565b6000610ee782611f2a565b9050600082138015610ef7575080155b15610f145760405162461bcd60e51b815260040161098490613099565b6001600160a01b038085166000818152600c60209081526040808320948816808452600290950190915290819020849055517f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd90610cbe908690612e84565b600061095b610b9883612032565b610f89611e18565b610f91611ef5565b610ffe81600b805480602002602001604051908101604052809291908181526020018280548015610feb57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610fcd575b505050505061204d90919063ffffffff16565b805161101291600b91602090910190612929565b506040516001600160a01b038216907fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df90600090a250565b6001600160a01b031660009081526020819052604090205490565b6000610b9d8261107485612095565b9063ffffffff61210e16565b60608061108b612124565b67ffffffffffffffff811180156110a157600080fd5b506040519080825280602002602001820160405280156110db57816020015b6110c861298a565b8152602001906001900390816110c05790505b5090506000805b600b54811015611235576000600b82815481106110fb57fe5b60009182526020822001546001600160a01b0316915061111a82612032565b1315611189576040805160a0810182526001600160a01b03831681526000602082015290810161114983610f73565b8152602001600060ff1681526020016040518060200160405280600081525081525084848151811061117757fe5b60209081029190910101526001909201915b606061119482612095565b905060005b815181101561122a5760008282815181106111b057fe5b602002602001015190506040518060a00160405280856001600160a01b03168152602001826001600160a01b031681526020016111ed8684610b89565b81526001602082015260400161120386846121a9565b81525087878151811061121257fe5b60209081029190910101525060019485019401611199565b5050506001016110e2565b509091505090565b6008818154811061124a57fe5b6000918252602090912001546001600160a01b0316905081565b6060610b9d83836121a9565b606061127a611e18565b611282611ef5565b6112cd83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506001600160a01b03881691905086612267565b905083856001600160a01b03167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab285858560405161130d93929190612e2d565b60405180910390a35b949350505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b6060600b80548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113b9575050505050905090565b6113e8611e18565b6113f0611ef5565b610df8828261228d565b611402611c59565b600a5460ff16156114255760405162461bcd60e51b815260040161098490613425565b60026001600160a01b03821660009081526009602052604090205460ff16600281111561144e57fe5b1461146b5760405162461bcd60e51b8152600401610984906130d0565b806001600160a01b031663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114a657600080fd5b505af11580156114ba573d6000803e3d6000fd5b505050506001600160a01b0381166000908152600960205260408120805460ff1916600183021790555061154f816008805480602002602001604051908101604052809291908181526020018280548015610feb576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311610fcd57505050505061204d90919063ffffffff16565b805161156391600891602090910190612929565b506040516001600160a01b038216907f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b890600090a250565b60006109576115a8611ba1565b84610c228560405180606001604052806025815260200161367760259139600160006115d2611ba1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611dec16565b600a5460ff1681565b61161a611e18565b600a5460ff1661163c5760405162461bcd60e51b815260040161098490613269565b6007546001600160a01b031633146116665760405162461bcd60e51b8152600401610984906132f9565b600780546001600160a01b0319169055600a805460ff19169055565b606061095b82612095565b600061095761169a611ba1565b8484611ccb565b6116a9611e18565b6116b1611ef5565b6116ca816116be84612095565b9063ffffffff61204d16565b6001600160a01b0383166000908152600c6020908152604090912082516116fb936001909201929190910190612929565b506001600160a01b038083166000908152600c602090815260408083209385168352600290930190529081208181559061173860018301826129ce565b5050806001600160a01b0316826001600160a01b03167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b60606008805480602002602001604051908101604052809291908181526020018280548015610938576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113b9575050505050905090565b6117e6611e18565b6117ee611ef5565b6000811361180e5760405162461bcd60e51b8152600401610984906130fe565b600d8190556040517fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a90611843908390612e84565b60405180910390a150565b600b818154811061124a57fe5b611863611c59565b600a5460ff16156118865760405162461bcd60e51b815260040161098490613425565b60016001600160a01b03821660009081526009602052604090205460ff1660028111156118af57fe5b146118cc5760405162461bcd60e51b8152600401610984906134f9565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d8779190a250565b61191d611c59565b600a5460ff16156119405760405162461bcd60e51b815260040161098490613425565b600680546001600160a01b038381166001600160a01b03198316179092556040519116907f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c906119939084908490612d03565b60405180910390a15050565b6007546001600160a01b031681565b60006002610e9e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061095b82600b805480602002602001604051908101604052809291908181526020018280548015611a3e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a20575b505050505061210e90919063ffffffff16565b611a59611e18565b611a61611ef5565b6001600160a01b038281166000818152600c60209081526040808320600190810180549182018155845291832090910180546001600160a01b0319169486169485179055517ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb9190a35050565b600080611ada83610f73565b90506060611ae784612095565b905060005b8151811015611b2c57611b22611b1586848481518110611b0857fe5b6020026020010151610b89565b849063ffffffff61236f16565b9250600101611aec565b50909392505050565b60055461010090046001600160a01b031681565b611b51611e18565b600a5460ff1615611b745760405162461bcd60e51b815260040161098490612e8d565b600780546001600160a01b03191633179055600a805460ff19166001179055565b670de0b6b3a764000090565b3390565b6001600160a01b038316611bcb5760405162461bcd60e51b815260040161098490613366565b6001600160a01b038216611bf15760405162461bcd60e51b815260040161098490612f99565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611c4c908590612e84565b60405180910390a3505050565b6006546001600160a01b03163314611c835760405162461bcd60e51b815260040161098490613495565b565b6001600160a01b039182166000908152600c602090815260408083209390941682526002909201909152205490565b600061095b600d54836123b590919063ffffffff16565b6001600160a01b038316611cf15760405162461bcd60e51b815260040161098490613321565b6001600160a01b038216611d175760405162461bcd60e51b815260040161098490612eb9565b611d228383836123d8565b611d6581604051806060016040528060268152602001613600602691396001600160a01b038616600090815260208190526040902054919063ffffffff611dec16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611d9a908263ffffffff611f4116565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c4c908590612e84565b60008184841115611e105760405162461bcd60e51b81526004016109849190612e5d565b505050900390565b60023360009081526009602052604090205460ff166002811115611e3857fe5b14611e555760405162461bcd60e51b815260040161098490613173565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990611e89903390600401612cef565b60206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612c45565b611c835760405162461bcd60e51b8152600401610984906133e1565b600a5460ff1615611c83576007546001600160a01b03163314611c835760405162461bcd60e51b81526004016109849061312e565b600061095b600d54836123dd90919063ffffffff16565b600082820183811015610b9d5760405162461bcd60e51b815260040161098490612fdb565b6001600160a01b038216611f8c5760405162461bcd60e51b815260040161098490613529565b611f98600083836123d8565b600254611fab908263ffffffff611f4116565b6002556001600160a01b038216600090815260208190526040902054611fd7908263ffffffff611f4116565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612026908590612e84565b60405180910390a35050565b6001600160a01b03166000908152600c602052604090205490565b606060008061205c8585612400565b915091508061207d5760405162461bcd60e51b815260040161098490612efc565b60606120898684612466565b50935061095b92505050565b6001600160a01b0381166000908152600c602090815260409182902060010180548351818402810184019094528084526060939283018282801561210257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116120e4575b50505050509050919050565b60008061211b8484612400565b95945050505050565b600080805b600b548110156121a3576000600b828154811061214257fe5b60009182526020822001546001600160a01b0316915061216182612032565b131561216e576001909201915b606061217982612095565b80519091501561219957805161219690859063ffffffff611f4116565b93505b5050600101612129565b50905090565b6001600160a01b038281166000908152600c60209081526040808320938516835260029384018252918290206001908101805484519281161561010002600019011694909404601f81018390048302820183019093528281526060939092909183018282801561225a5780601f1061222f5761010080835404028352916020019161225a565b820191906000526020600020905b81548152906001019060200180831161223d57829003601f168201915b5050505050905092915050565b606061131684848460405180606001604052806029815260200161362660299139612595565b6001600160a01b0382166122b35760405162461bcd60e51b8152600401610984906132b8565b6122bf826000836123d8565b612302816040518060600160405280602281526020016135de602291396001600160a01b038516600090815260208190526040902054919063ffffffff611dec16565b6001600160a01b03831660009081526020819052604090205560025461232e908263ffffffff6125c316565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612026908590612e84565b60008282018183128015906123845750838112155b80612399575060008312801561239957508381125b610b9d5760405162461bcd60e51b815260040161098490613012565b6000610b9d6123ca848463ffffffff61260516565b670de0b6b3a7640000612670565b505050565b6000610b9d6123fa84670de0b6b3a764000063ffffffff61260516565b83612670565b81516000908190815b8181101561245357846001600160a01b031686828151811061242757fe5b60200260200101516001600160a01b0316141561244b5792506001915061245f9050565b600101612409565b50600019600092509250505b9250929050565b815160609060009080841061248d5760405162461bcd60e51b815260040161098490612f2b565b60606001820367ffffffffffffffff811180156124a957600080fd5b506040519080825280602002602001820160405280156124d3578160200160208202803683370190505b50905060005b85811015612521578681815181106124ed57fe5b602002602001015182828151811061250157fe5b6001600160a01b03909216602092830291909101909101526001016124d9565b50600185015b828110156125725786818151811061253b57fe5b602002602001015182600183038151811061255257fe5b6001600160a01b0390921660209283029190910190910152600101612527565b508086868151811061258057fe5b60200260200101519350935050509250929050565b6060824710156125b75760405162461bcd60e51b815260040161098490613053565b61211b85858585612704565b6000610b9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dec565b6000826126145750600061095b565b826000191480156126285750600160ff1b82145b156126455760405162461bcd60e51b815260040161098490613222565b8282028284828161265257fe5b0514610b9d5760405162461bcd60e51b815260040161098490613222565b60008161268f5760405162461bcd60e51b815260040161098490613560565b600160ff1b831415806126a457508160001914155b6126c05760405162461bcd60e51b815260040161098490613291565b60006126d2848463ffffffff6127c816565b905060008385181280156126ee57508284816126ea57fe5b0715155b15610b9d5761131681600163ffffffff61282c16565b606061270f85612872565b61272b5760405162461bcd60e51b8152600401610984906133aa565b60006060866001600160a01b031685876040516127489190612cd3565b60006040518083038185875af1925050503d8060008114612785576040519150601f19603f3d011682016040523d82523d6000602084013e61278a565b606091505b5091509150811561279e5791506113169050565b8051156127ae5780518082602001fd5b8360405162461bcd60e51b81526004016109849190612e5d565b6000816127e75760405162461bcd60e51b8152600401610984906134c4565b816000191480156127fb5750600160ff1b83145b156128185760405162461bcd60e51b8152600401610984906131aa565b600082848161282357fe5b05949350505050565b60008183038183128015906128415750838113155b80612856575060008312801561285657508381135b610b9d5760405162461bcd60e51b815260040161098490613451565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611316575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106128ec5782800160ff19823516178555612919565b82800160010185558215612919579182015b828111156129195782358255916020019190600101906128fe565b50612925929150612a15565b5090565b82805482825590600052602060002090810192821561297e579160200282015b8281111561297e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612949565b50612925929150612a2f565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f106129f45750612a12565b601f016020900490600052602060002090810190612a129190612a15565b50565b61094091905b808211156129255760008155600101612a1b565b61094091905b808211156129255780546001600160a01b0319168155600101612a35565b80356001600160a01b038116811461095b57600080fd5b60008083601f840112612a7b578182fd5b50813567ffffffffffffffff811115612a92578182fd5b60208301915083602082850101111561245f57600080fd5b600060208284031215612abb578081fd5b610b9d8383612a53565b60008060408385031215612ad7578081fd5b612ae18484612a53565b9150612af08460208501612a53565b90509250929050565b60008060008060608587031215612b0e578182fd5b8435612b19816135c8565b93506020850135612b29816135c8565b9250604085013567ffffffffffffffff811115612b44578283fd5b612b5087828801612a6a565b95989497509550505050565b600080600060608486031215612b70578283fd5b612b7a8585612a53565b9250612b898560208601612a53565b9150604084013590509250925092565b600080600060608486031215612bad578283fd5b8335612bb8816135c8565b92506020840135612bc8816135c8565b929592945050506040919091013590565b60008060408385031215612beb578182fd5b612bf58484612a53565b946020939093013593505050565b60008060008060608587031215612c18578384fd5b8435612c23816135c8565b935060208501359250604085013567ffffffffffffffff811115612b44578283fd5b600060208284031215612c56578081fd5b81518015158114610b9d578182fd5b600060208284031215612c76578081fd5b5035919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612cbf816020860160208601613598565b601f01601f19169290920160200192915050565b60008251612ce5818460208701613598565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612d5e5783516001600160a01b031683529284019291840191600101612d39565b50909695505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015612e0057888303603f19018552815180516001600160a01b039081168552888201511688850152868101518785015260608082015160ff169085015260808082015160a08287018190529190612dea83880182612ca7565b988b019896505050928801925050600101612d8e565b509098975050505050505050565b901515815260200190565b600060208252611316602083018486612c7d565b600060408252612e41604083018587612c7d565b8281036020840152612e538185612ca7565b9695505050505050565b600060208252610b9d6020830184612ca7565b6020810160038310612e7e57fe5b91905290565b90815260200190565b602080825260129082015271135d5cdd081b9bdd081899481b1bd8dad95960721b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f496e646578206d757374206265203c2041206c656e6774680000000000000000604082015260600190565b60208082526018908201527f4d6f64756c65206d757374206e6f742062652061646465640000000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252601f908201527f5669727475616c20756e697420636f6e76657273696f6e20696e76616c696400604082015260600190565b602080825260149082015273135bd91d5b19481b5d5cdd08189948185919195960621b604082015260600190565b60208082526016908201527504d7573742062652067726561746572207468616e20360541b604082015260600190565b60208082526025908201527f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e6040820152640818d85b1b60da1b606082015260800190565b60208082526018908201527f4f6e6c7920746865206d6f64756c652063616e2063616c6c0000000000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601d908201527f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c6572000000604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b6020808252600e908201526d135d5cdd081899481b1bd8dad95960921b604082015260600190565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252600e908201526d26bab9ba103132903637b1b5b2b960911b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526024908201527f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f604082015263363632b960e11b606082015260800190565b60208082526012908201527113db9b1e481dda195b881d5b9b1bd8dad95960721b604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b60208082526015908201527413db9b1e481b585b9859d95c8818d85b8818d85b1b605a1b604082015260600190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b6020808252601690820152754d6f64756c65206d7573742062652070656e64696e6760501b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b60208082526010908201526f043616e742064697669646520627920360841b604082015260600190565b60ff91909116815260200190565b60005b838110156135b357818101518382015260200161359b565b838111156135c2576000848401525b50505050565b6001600160a01b0381168114612a1257600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204d28bc809b5d46c991eebf0091f4cd889699f35ea15cd104b1b95f5b9cb506ab64736f6c634300060a003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a4c8d221d8bb851f83aadd0223a8900a6921a3490000000000000000000000003607d6a99336838de14dd64ba186a06f3c6e93d800000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000010a8fe90fbdfda90000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d8ef3cace8b4907117a45b0b125c68560532f94d00000000000000000000000090f765f63e7dc5ae97d6c576bf693fb6af41c12900000000000000000000000008f866c74205617b6f3903ef481798eced10cdec000000000000000000000000000000000000000000000000000000000000000e5468652054756c69702046756e64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000554554c4950000000000000000000000000000000000000000000000000000000