[ { "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" } ]
60806040523480156200001157600080fd5b5060405162003cfd38038062003cfd833981016040819052620000349162000476565b8151829082906200004d906003906020850190620001bf565b50805162000063906004906020840190620001bf565b505060058054601260ff1990911617610100600160a81b0319166101006001600160a01b038881169190910291909117909155600680546001600160a01b03191691861691909117905550620000c4620001b2602090811b62001a6d17901c565b600d558651620000dc90600b9060208a019062000244565b5060005b85518110156200014357600160096000888481518110620000fd57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660018360028111156200013557fe5b0217905550600101620000e0565b5060005b8751811015620001a4578681815181106200015e57fe5b6020026020010151600c60008a84815181106200017757fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205560010162000147565b5050505050505050620005d8565b670de0b6b3a76400005b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b5062000240929150620002aa565b5090565b8280548282559060005260206000209081019282156200029c579160200282015b828111156200029c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000265565b5062000240929150620002c7565b620001bc91905b80821115620002405760008155600101620002b1565b620001bc91905b80821115620002405780546001600160a01b0319168155600101620002ce565b8051620002fb81620005bf565b92915050565b600082601f83011262000312578081fd5b81516200032962000323826200059f565b62000578565b8181529150602080830190848101818402860182018710156200034b57600080fd5b60005b84811015620003775781516200036481620005bf565b845292820192908201906001016200034e565b505050505092915050565b600082601f83011262000393578081fd5b8151620003a462000323826200059f565b818152915060208083019084810181840286018201871015620003c657600080fd5b60005b848110156200037757815184529282019290820190600101620003c9565b600082601f830112620003f8578081fd5b81516001600160401b038111156200040e578182fd5b602062000424601f8301601f1916820162000578565b925081835284818386010111156200043b57600080fd5b60005b828110156200045b5784810182015184820183015281016200043e565b828111156200046d5760008284860101525b50505092915050565b600080600080600080600060e0888a03121562000491578283fd5b87516001600160401b0380821115620004a8578485fd5b620004b68b838c0162000301565b985060208a0151915080821115620004cc578485fd5b620004da8b838c0162000382565b975060408a0151915080821115620004f0578485fd5b620004fe8b838c0162000301565b96506200050f8b60608c01620002ee565b9550620005208b60808c01620002ee565b945060a08a015191508082111562000536578384fd5b620005448b838c01620003e7565b935060c08a01519150808211156200055a578283fd5b50620005698a828b01620003e7565b91505092959891949750929550565b6040518181016001600160401b03811182821017156200059757600080fd5b604052919050565b60006001600160401b03821115620005b5578081fd5b5060209081020190565b6001600160a01b0381168114620005d557600080fd5b50565b61371580620005e86000396000f3fe6080604052600436106102b25760003560e01c80638ae458da11610175578063b2494df3116100dc578063d7f1b27c11610095578063ea0ee5591161006f578063ea0ee55914610842578063eaf993e114610862578063f77c479114610882578063f83d08ba14610897576102b9565b8063d7f1b27c146107e2578063dd62ed3e14610802578063df5e9b2914610822576102b9565b8063b2494df314610738578063c2de0e9d1461074d578063c5d574fe1461076d578063c75640171461078d578063d0ebdbe7146107ad578063d7b96d4e146107cd576102b9565b8063a457c2d71161012e578063a457c2d71461068e578063a4e2d634146106ae578063a69df4b5146106c3578063a7bdad03146106d8578063a9059cbb146106f8578063acf3f07714610718576102b9565b80638ae458da146105d75780638f6f0332146105f757806395d89b411461061757806399d50d5d1461062c5780639dc29fac1461064e578063a06324611461066e576102b9565b806340c10f191161021957806366cb8d2f116101d257806366cb8d2f146105155780636f86c8971461053557806370a08231146105555780637d96659314610575578063802758601461059557806381b2248a146105b7576102b9565b806340c10f191461045e578063481c6a751461047e5780634e353270146104a05780635230c396146104c057806353bae5f7146104d557806363a90fc1146104f5576102b9565b806323b872dd1161026b57806323b872dd1461038f57806326898fe1146103af5780632ba57d17146103cf578063313ce567146103ef57806335bc4e5214610411578063395093511461043e576102b9565b806306fdde03146102be578063095ea7b3146102e95780630ffe0f1e1461031657806318160ddd1461032d5780631ed86f191461034f57806322ebeba41461036f576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108ac565b6040516102e09190612de8565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612b64565b610943565b6040516102e09190612d99565b34801561032257600080fd5b5061032b610961565b005b34801561033957600080fd5b50610342610a4b565b6040516102e09190612e0f565b34801561035b57600080fd5b5061032b61036a366004612a35565b610a51565b34801561037b57600080fd5b5061034261038a366004612a50565b610b89565b34801561039b57600080fd5b506103096103aa366004612b24565b610ba4565b3480156103bb57600080fd5b5061032b6103ca366004612a84565b610c31565b3480156103db57600080fd5b5061032b6103ea366004612b64565b610ccc565b3480156103fb57600080fd5b50610404610d43565b6040516102e091906135d2565b34801561041d57600080fd5b5061043161042c366004612a35565b610d4c565b6040516102e09190612dfb565b34801561044a57600080fd5b50610309610459366004612b64565b610d61565b34801561046a57600080fd5b5061032b610479366004612b64565b610db5565b34801561048a57600080fd5b50610493610dd3565b6040516102e09190612c7a565b3480156104ac57600080fd5b5061032b6104bb366004612a35565b610de2565b3480156104cc57600080fd5b50610342610e90565b3480156104e157600080fd5b506103096104f0366004612a35565b610e96565b34801561050157600080fd5b5061032b610510366004612ae7565b610ec9565b34801561052157600080fd5b50610342610530366004612a35565b610f48565b34801561054157600080fd5b5061032b610550366004612a35565b610f56565b34801561056157600080fd5b50610342610570366004612a35565b610fae565b34801561058157600080fd5b50610309610590366004612a50565b610fc9565b3480156105a157600080fd5b506105aa610fe4565b6040516102e09190612cf5565b3480156105c357600080fd5b506104936105d2366004612bf0565b6111a1565b3480156105e357600080fd5b506102d36105f2366004612a50565b6111c8565b34801561060357600080fd5b506102d3610612366004612b8e565b6111d4565b34801561062357600080fd5b506102d3611281565b34801561063857600080fd5b506106416112e2565b6040516102e09190612ca8565b34801561065a57600080fd5b5061032b610669366004612b64565b611343565b34801561067a57600080fd5b5061032b610689366004612a35565b61135d565b34801561069a57600080fd5b506103096106a9366004612b64565b611483565b3480156106ba57600080fd5b506103096114f1565b3480156106cf57600080fd5b5061032b6114fa565b3480156106e457600080fd5b506106416106f3366004612a35565b61156a565b34801561070457600080fd5b50610309610713366004612b64565b611575565b34801561072457600080fd5b5061032b610733366004612a50565b611589565b34801561074457600080fd5b50610641611646565b34801561075957600080fd5b5061032b610768366004612bf0565b6116a6565b34801561077957600080fd5b50610493610788366004612bf0565b6116ff565b34801561079957600080fd5b5061032b6107a8366004612a35565b61170c565b3480156107b957600080fd5b5061032b6107c8366004612a35565b6117c6565b3480156107d957600080fd5b50610493611850565b3480156107ee57600080fd5b506103096107fd366004612a35565b61185f565b34801561080e57600080fd5b5061034261081d366004612a50565b611868565b34801561082e57600080fd5b5061030961083d366004612a35565b611893565b34801561084e57600080fd5b5061032b61085d366004612a50565b611902565b34801561086e57600080fd5b5061034261087d366004612a35565b6119a6565b34801561088e57600080fd5b50610493611a0d565b3480156108a357600080fd5b5061032b611a21565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b820191906000526020600020905b81548152906001019060200180831161091b57829003601f168201915b505050505090505b90565b6000610957610950611a79565b8484611a7d565b5060015b92915050565b600a5460ff161561098d5760405162461bcd60e51b8152600401610984906134b1565b60405180910390fd5b60013360009081526009602052604090205460ff1660028111156109ad57fe5b146109ca5760405162461bcd60e51b815260040161098490613541565b33600081815260096020526040808220805460ff19166002179055600880546001810182559083527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191684179055517f27b541a16df0902e262f34789782092ab25125513b8ed73608e802951771b9289190a2565b60025490565b610a59611b31565b6001600160a01b03811660009081526009602052604081205460ff166002811115610a8057fe5b14610a9d5760405162461bcd60e51b815260040161098490612ee4565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990610ad1908490600401612c7a565b60206040518083038186803b158015610ae957600080fd5b505afa158015610afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b219190612bd0565b610b3d5760405162461bcd60e51b8152600401610984906131f8565b6001600160a01b038116600081815260096020526040808220805460ff19166001179055517fead6a006345da1073a106d5f32372d2d2204f46cb0b4bca8f5ebafcbbed12b8a9190a250565b6000610b9d610b988484611b5d565b611b8c565b9392505050565b6000610bb1848484611ba3565b610c2784610bbd611a79565b610c2285604051806060016040528060288152602001613693602891396001600160a01b038a16600090815260016020526040812090610bfb611a79565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611cc416565b611a7d565b5060019392505050565b610c39611cf0565b610c41611dcd565b6001600160a01b038085166000908152600c6020908152604080832093871683526002909301905220610c789060010183836128bf565b50826001600160a01b0316846001600160a01b03167fb373eedb8e9038a2dcba31f06b2735887c1a904125e5c9f0021ba41ed972318e8484604051610cbe929190612da4565b60405180910390a350505050565b610cd4611cf0565b610cdc611dcd565b6000610ce782611e02565b6001600160a01b0384166000818152600c60205260409081902083905551919250907f8133e2bf34edab764b55c59d1d41f9df637e7c22828bb6b0a9d55b429d008a9790610d36908590612e0f565b60405180910390a2505050565b60055460ff1690565b60096020526000908152604090205460ff1681565b6000610957610d6e611a79565b84610c228560016000610d7f611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611e7a16565b610dbd611cf0565b610dc5611dcd565b610dcf8282611e9f565b5050565b6006546001600160a01b031681565b610dea611cf0565b610df2611dcd565b610dfb81611893565b15610e185760405162461bcd60e51b815260040161098490613182565b600b805460018101825560009182527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b03841690811790915560405190917f76da6cf8b40dd2b2c223a5956831e0ff4e75522538a86782108a0bbe1577e29891a250565b600d5481565b600060015b6001600160a01b03831660009081526009602052604090205460ff166002811115610ec257fe5b1492915050565b610ed1611cf0565b610ed9611dcd565b6000610ee482611e02565b6001600160a01b038086166000818152600c602090815260408083209489168084526002909501909152908190208490555192935090917f81a422e27f503e1b92cdb616a6e653aac10a8e0c3fa6832a58dc616c080fd7bd90610cbe908690612e0f565b600061095b610b9883611f6b565b610f5e611cf0565b610f66611dcd565b610f77600b8263ffffffff611f8616565b6040516001600160a01b038216907fc605d0bf97f9b921340106a2e59f9428d5eb9039b16866159e0cdd2bf8e963df90600090a250565b6001600160a01b031660009081526020819052604090205490565b6000610b9d82610fd8856120b3565b9063ffffffff61212c16565b606080610fef612142565b67ffffffffffffffff8111801561100557600080fd5b5060405190808252806020026020018201604052801561103f57816020015b61102c612939565b8152602001906001900390816110245790505b5090506000805b600b54811015611199576000600b828154811061105f57fe5b60009182526020822001546001600160a01b0316915061107e82611f6b565b13156110ed576040805160a0810182526001600160a01b0383168152600060208201529081016110ad83610f48565b8152602001600060ff168152602001604051806020016040528060008152508152508484815181106110db57fe5b60209081029190910101526001909201915b60606110f8826120b3565b905060005b815181101561118e57600082828151811061111457fe5b602002602001015190506040518060a00160405280856001600160a01b03168152602001826001600160a01b031681526020016111518684610b89565b81526001602082015260400161116786846121c7565b81525087878151811061117657fe5b602090810291909101015250600194850194016110fd565b505050600101611046565b509091505090565b600881815481106111ae57fe5b6000918252602090912001546001600160a01b0316905081565b6060610b9d83836121c7565b60606111de611cf0565b6111e6611dcd565b61123183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506001600160a01b03881691905086612285565b905083856001600160a01b03167f2a936dbabeaea30adc1ddad138b1958497988474bef8b09a29411f0105ab8ab285858560405161127193929190612db8565b60405180910390a3949350505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109385780601f1061090d57610100808354040283529160200191610938565b6060600b80548060200260200160405190810160405280929190818152602001828054801561093857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161131c575050505050905090565b61134b611cf0565b611353611dcd565b610dcf82826122b3565b611365611b31565b600a5460ff16156113885760405162461bcd60e51b8152600401610984906134b1565b60026001600160a01b03821660009081526009602052604090205460ff1660028111156113b157fe5b146113ce5760405162461bcd60e51b815260040161098490613062565b806001600160a01b031663847ef08d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561140957600080fd5b505af115801561141d573d6000803e3d6000fd5b505050506001600160a01b0381166000908152600960205260409020805460ff1916905561144c600882611f86565b6040516001600160a01b038216907f0a1ee69f55c33d8467c69ca59ce2007a737a88603d75392972520bf67cb513b890600090a250565b6000610957611490611a79565b84610c22856040518060600160405280602581526020016136bb60259139600160006114ba611a79565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611cc416565b600a5460ff1681565b611502611cf0565b600a5460ff166115245760405162461bcd60e51b815260040161098490613276565b6007546001600160a01b0316331461154e5760405162461bcd60e51b815260040161098490613306565b600780546001600160a01b0319169055600a805460ff19169055565b606061095b826120b3565b6000610957611582611a79565b8484611ba3565b611591611cf0565b611599611dcd565b6001600160a01b0382166000908152600c602052604090206115c4906001018263ffffffff611f8616565b6001600160a01b038083166000908152600c6020908152604080832093851683526002909301905290812081815590611600600183018261297d565b5050806001600160a01b0316826001600160a01b03167f5d0275f68d583838a7e2be68e3ef8ac2c1f9d4eeaa4b223360f4cd093a160d7560405160405180910390a35050565b60606008805480602002602001604051908101604052809291908181526020018280548015610938576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161131c575050505050905090565b6116ae611cf0565b6116b6611dcd565b6116bf81612395565b600d8190556040517fc4e78b3245dc105eefced18655b978e194ff858545a1080f2888dc3b6ae8df0a906116f4908390612e0f565b60405180910390a150565b600b81815481106111ae57fe5b611714611b31565b600a5460ff16156117375760405162461bcd60e51b8152600401610984906134b1565b60016001600160a01b03821660009081526009602052604090205460ff16600281111561176057fe5b1461177d5760405162461bcd60e51b815260040161098490613541565b6001600160a01b038116600081815260096020526040808220805460ff19169055517fd6b18042563148f38d728c1c4d339ffd515b632d0ad2e1833b822412f3f4d8779190a250565b6117ce611b31565b600a5460ff16156117f15760405162461bcd60e51b8152600401610984906134b1565b600680546001600160a01b038381166001600160a01b03198316179092556040519116907f43fcfef38622d6a5b118be09c27a6ed8cbdbfca21f0ea9245412ce8031c0423c906118449084908490612c8e565b60405180910390a15050565b6007546001600160a01b031681565b60006002610e9b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061095b82600b8054806020026020016040519081016040528092919081815260200182805480156118ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118d1575b505050505061212c90919063ffffffff16565b61190a611cf0565b611912611dcd565b61191c8282610fc9565b156119395760405162461bcd60e51b815260040161098490612e87565b6001600160a01b038281166000818152600c60209081526040808320600190810180549182018155845291832090910180546001600160a01b0319169486169485179055517ff71324fa78e1894b364a1fc8d0535c4208f28c7b380f752afe00c8ce386023fb9190a35050565b6000806119b283610f48565b905060606119bf846120b3565b905060005b8151811015611a04576119fa6119ed868484815181106119e057fe5b6020026020010151610b89565b849063ffffffff6123d016565b92506001016119c4565b50909392505050565b60055461010090046001600160a01b031681565b611a29611cf0565b600a5460ff1615611a4c5760405162461bcd60e51b815260040161098490612e18565b600780546001600160a01b03191633179055600a805460ff19166001179055565b670de0b6b3a764000090565b3390565b6001600160a01b038316611aa35760405162461bcd60e51b8152600401610984906133aa565b6001600160a01b038216611ac95760405162461bcd60e51b815260040161098490612f1b565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611b24908590612e0f565b60405180910390a3505050565b6006546001600160a01b03163314611b5b5760405162461bcd60e51b8152600401610984906134dd565b565b6001600160a01b039182166000908152600c602090815260408083209390941682526002909201909152205490565b600061095b600d548361241690919063ffffffff16565b6001600160a01b038316611bc95760405162461bcd60e51b81526004016109849061332e565b6001600160a01b038216611bef5760405162461bcd60e51b815260040161098490612e44565b611bfa838383612439565b611c3d81604051806060016040528060268152602001613644602691396001600160a01b038616600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611c72908263ffffffff611e7a16565b6001600160a01b0380841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b24908590612e0f565b60008184841115611ce85760405162461bcd60e51b81526004016109849190612de8565b505050900390565b60023360009081526009602052604090205460ff166002811115611d1057fe5b14611d2d5760405162461bcd60e51b81526004016109849061310a565b6005546040516342f6e38960e01b81526101009091046001600160a01b0316906342f6e38990611d61903390600401612c7a565b60206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db19190612bd0565b611b5b5760405162461bcd60e51b81526004016109849061346d565b600a5460ff1615611b5b576007546001600160a01b03163314611b5b5760405162461bcd60e51b815260040161098490613090565b600080611e1a600d548461243e90919063ffffffff16565b9050600083138015611e2a575080155b15611e475760405162461bcd60e51b8152600401610984906131b1565b600083138015611e5d5750611e5b81611b8c565b155b1561095b5760405162461bcd60e51b815260040161098490612f94565b600082820183811015610b9d5760405162461bcd60e51b815260040161098490612f5d565b6001600160a01b038216611ec55760405162461bcd60e51b815260040161098490613571565b611ed160008383612439565b600254611ee4908263ffffffff611e7a16565b6002556001600160a01b038216600090815260208190526040902054611f10908263ffffffff611e7a16565b6001600160a01b0383166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5f908590612e0f565b60405180910390a35050565b6001600160a01b03166000908152600c602052604090205490565b600080611fec84805480602002602001604051908101604052809291908181526020018280548015611fe157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fc3575b505050505084612461565b915091508061200d5760405162461bcd60e51b815260040161098490612eb5565b83546000190182811461207f5784818154811061202657fe5b9060005260206000200160009054906101000a90046001600160a01b031685848154811061205057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b8480548061208957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055505b50505050565b6001600160a01b0381166000908152600c602090815260409182902060010180548351818402810184019094528084526060939283018282801561212057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612102575b50505050509050919050565b6000806121398484612461565b95945050505050565b600080805b600b548110156121c1576000600b828154811061216057fe5b60009182526020822001546001600160a01b0316915061217f82611f6b565b131561218c576001909201915b6060612197826120b3565b8051909150156121b75780516121b490859063ffffffff611e7a16565b93505b5050600101612147565b50905090565b6001600160a01b038281166000908152600c60209081526040808320938516835260029384018252918290206001908101805484519281161561010002600019011694909404601f8101839004830282018301909352828152606093909290918301828280156122785780601f1061224d57610100808354040283529160200191612278565b820191906000526020600020905b81548152906001019060200180831161225b57829003601f168201915b5050505050905092915050565b60606122ab84848460405180606001604052806029815260200161366a602991396124c7565b949350505050565b6001600160a01b0382166122d95760405162461bcd60e51b8152600401610984906132c5565b6122e582600083612439565b61232881604051806060016040528060228152602001613622602291396001600160a01b038516600090815260208190526040902054919063ffffffff611cc416565b6001600160a01b038316600090815260208190526040902055600254612354908263ffffffff61258816565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5f908590612e0f565b600061239f6125ca565b905060006123b3828463ffffffff61241616565b13610dcf5760405162461bcd60e51b815260040161098490613373565b60008282018183128015906123e55750838112155b806123fa57506000831280156123fa57508381125b610b9d5760405162461bcd60e51b815260040161098490612fdb565b6000610b9d61242b848463ffffffff6126b416565b670de0b6b3a764000061271f565b505050565b6000610b9d61245b84670de0b6b3a764000063ffffffff6126b416565b8361271f565b81516000908190815b818110156124b457846001600160a01b031686828151811061248857fe5b60200260200101516001600160a01b031614156124ac579250600191506124c09050565b60010161246a565b50600019600092509250505b9250929050565b6060824710156124e95760405162461bcd60e51b81526004016109849061301c565b6124f2856127ad565b61250e5760405162461bcd60e51b8152600401610984906133ee565b60006060866001600160a01b0316858760405161252b9190612c5e565b60006040518083038185875af1925050503d8060008114612568576040519150601f19603f3d011682016040523d82523d6000602084013e61256d565b606091505b509150915061257d8282866127b3565b979650505050505050565b6000610b9d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cc4565b6000600019815b600b548110156126a4576000600b82815481106125ea57fe5b60009182526020822001546001600160a01b0316915061261161260c83611f6b565b6127ec565b905060008111801561262257508381105b1561262b578093505b6060612636836120b3565b905060005b815181101561269457600082828151811061265257fe5b60200260200101519050600061267061266b8784611b5d565b612812565b905060008111801561268157508781105b1561268a578097505b505060010161263b565b5050600190920191506125d19050565b506126ae81612836565b91505090565b6000826126c35750600061095b565b826000191480156126d75750600160ff1b82145b156126f45760405162461bcd60e51b81526004016109849061322f565b8282028284828161270157fe5b0514610b9d5760405162461bcd60e51b81526004016109849061322f565b60008161273e5760405162461bcd60e51b8152600401610984906135a8565b600160ff1b8314158061275357508160001914155b61276f5760405162461bcd60e51b81526004016109849061329e565b6000612781848463ffffffff61285b16565b9050600083851812801561279d575082848161279957fe5b0715155b15610b9d57600019019392505050565b3b151590565b606083156127c2575081610b9d565b8251156127d25782518084602001fd5b8160405162461bcd60e51b81526004016109849190612de8565b60008082121561280e5760405162461bcd60e51b8152600401610984906130d5565b5090565b60008082121561282d57612828826000036127ec565b61095b565b61095b826127ec565b6000600160ff1b821061280e5760405162461bcd60e51b815260040161098490613425565b60008161287a5760405162461bcd60e51b81526004016109849061350c565b8160001914801561288e5750600160ff1b83145b156128ab5760405162461bcd60e51b815260040161098490613141565b60008284816128b657fe5b05949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106129005782800160ff1982351617855561292d565b8280016001018555821561292d579182015b8281111561292d578235825591602001919060010190612912565b5061280e9291506129c4565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600060ff168152602001606081525090565b50805460018160011615610100020316600290046000825580601f106129a357506129c1565b601f0160209004906000526020600020908101906129c191906129c4565b50565b61094091905b8082111561280e57600081556001016129ca565b80356001600160a01b038116811461095b57600080fd5b60008083601f840112612a06578182fd5b50813567ffffffffffffffff811115612a1d578182fd5b6020830191508360208285010111156124c057600080fd5b600060208284031215612a46578081fd5b610b9d83836129de565b60008060408385031215612a62578081fd5b612a6c84846129de565b9150612a7b84602085016129de565b90509250929050565b60008060008060608587031215612a99578182fd5b8435612aa48161360c565b93506020850135612ab48161360c565b9250604085013567ffffffffffffffff811115612acf578283fd5b612adb878288016129f5565b95989497509550505050565b600080600060608486031215612afb578283fd5b612b0585856129de565b9250612b1485602086016129de565b9150604084013590509250925092565b600080600060608486031215612b38578283fd5b8335612b438161360c565b92506020840135612b538161360c565b929592945050506040919091013590565b60008060408385031215612b76578182fd5b612b8084846129de565b946020939093013593505050565b60008060008060608587031215612ba3578384fd5b8435612bae8161360c565b935060208501359250604085013567ffffffffffffffff811115612acf578283fd5b600060208284031215612be1578081fd5b81518015158114610b9d578182fd5b600060208284031215612c01578081fd5b5035919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612c4a8160208601602086016135e0565b601f01601f19169290920160200192915050565b60008251612c708184602087016135e0565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015612ce95783516001600160a01b031683529284019291840191600101612cc4565b50909695505050505050565b60208082528251828201819052600091906040908185019080840286018301878501865b83811015612d8b57888303603f19018552815180516001600160a01b039081168552888201511688850152868101518785015260608082015160ff169085015260808082015160a08287018190529190612d7583880182612c32565b988b019896505050928801925050600101612d19565b509098975050505050505050565b901515815260200190565b6000602082526122ab602083018486612c08565b600060408252612dcc604083018587612c08565b8281036020840152612dde8185612c32565b9695505050505050565b600060208252610b9d6020830184612c32565b6020810160038310612e0957fe5b91905290565b90815260200190565b602080825260129082015271135d5cdd081b9bdd081899481b1bd8dad95960721b604082015260600190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b602080825260149082015273135bd91d5b1948185b1c9958591e48185919195960621b604082015260600190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f4d6f64756c65206d757374206e6f742062652061646465640000000000000000604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526027908201527f5669727475616c20746f205265616c20756e697420636f6e76657273696f6e206040820152661a5b9d985b1a5960ca1b606082015260800190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b602080825260149082015273135bd91d5b19481b5d5cdd08189948185919195960621b604082015260600190565b60208082526025908201527f5768656e206c6f636b65642c206f6e6c7920746865206c6f636b65722063616e6040820152640818d85b1b60da1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526018908201527f4f6e6c7920746865206d6f64756c652063616e2063616c6c0000000000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206469766973696f6e206f766572666c6f6040820152607760f81b606082015260800190565b602080825260159082015274135d5cdd081b9bdd0818994818dbdb5c1bdb995b9d605a1b604082015260600190565b60208082526027908201527f5265616c20746f205669727475616c20756e697420636f6e76657273696f6e206040820152661a5b9d985b1a5960ca1b606082015260800190565b6020808252601d908201527f4d75737420626520656e61626c6564206f6e20436f6e74726f6c6c6572000000604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f604082015266766572666c6f7760c81b606082015260800190565b6020808252600e908201526d135d5cdd081899481b1bd8dad95960921b604082015260600190565b6020808252600d908201526c125b9d985b1a59081a5b9c1d5d609a1b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252600e908201526d26bab9ba103132903637b1b5b2b960911b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f4e6577206d756c7469706c69657220746f6f20736d616c6c0000000000000000604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526024908201527f4d6f64756c65206d75737420626520656e61626c6564206f6e20636f6e74726f604082015263363632b960e11b606082015260800190565b60208082526012908201527113db9b1e481dda195b881d5b9b1bd8dad95960721b604082015260600190565b60208082526015908201527413db9b1e481b585b9859d95c8818d85b8818d85b1b605a1b604082015260600190565b6020808252818101527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604082015260600190565b6020808252601690820152754d6f64756c65206d7573742062652070656e64696e6760501b604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b60208082526010908201526f043616e742064697669646520627920360841b604082015260600190565b60ff91909116815260200190565b60005b838110156135fb5781810151838201526020016135e3565b838111156120ad5750506000910152565b6001600160a01b03811681146129c157600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ae2bfd452d6b0474ed7ed15b4a45962324c2e58434c0c73dc72a9d5cd677eaa164736f6c634300060a003300000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000a4c8d221d8bb851f83aadd0223a8900a6921a3490000000000000000000000007a4535c67f2617d2590617666295c46c9f044f0d00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcca60bb61934080951369a648fb03df4f96263c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000000300000000000000000000000069a592d2129415a4a1d1b1e309c17051b7f28d5700000000000000000000000008f866c74205617b6f3903ef481798eced10cdec000000000000000000000000251bd1d42df1f153d86a5ba2305faade4d5f51dc000000000000000000000000000000000000000000000000000000000000000f5465746865722033782053686f72740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a544554484552444f4f4d00000000000000000000000000000000000000000000