Loading
[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "AttachedBoost", "type": "error" }, { "inputs": [], "name": "GaugeAlreadyAttached", "type": "error" }, { "inputs": [], "name": "InvalidGauge", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NotbHermes", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "gauge", "type": "address" } ], "name": "AddGauge", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "gauge", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "boost", "type": "uint256" } ], "name": "Attach", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "gauge", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "UpdatedBoost", "type": "uint256" } ], "name": "DecrementUserGaugeBoost", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "gauge", "type": "address" } ], "name": "Detach", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "gauge", "type": "address" } ], "name": "RemoveGauge", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "updatedBoost", "type": "uint256" } ], "name": "UpdateUserBoost", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "gauge", "type": "address" } ], "name": "addGauge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "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": "user", "type": "address" } ], "name": "attach", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "bHermes", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decrementAllGaugesAllBoost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "boost", "type": "uint256" } ], "name": "decrementAllGaugesBoost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "gauge", "type": "address" } ], "name": "decrementGaugeAllBoost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "gauge", "type": "address" }, { "internalType": "uint256", "name": "boost", "type": "uint256" } ], "name": "decrementGaugeBoost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "boost", "type": "uint256" }, { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "num", "type": "uint256" } ], "name": "decrementGaugesBoostIndexed", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deprecatedGauges", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "detach", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "freeGaugeBoost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "num", "type": "uint256" } ], "name": "gauges", "outputs": [ { "internalType": "address[]", "name": "values", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gauges", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUserBoost", "outputs": [ { "internalType": "uint256", "name": "boost", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "gauge", "type": "address" } ], "name": "getUserGaugeBoost", "outputs": [ { "internalType": "uint128", "name": "userGaugeBoost", "type": "uint128" }, { "internalType": "uint128", "name": "totalGaugeBoost", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "gauge", "type": "address" } ], "name": "isGauge", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "gauge", "type": "address" } ], "name": "isUserGauge", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numDeprecatedGauges", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numGauges", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "numUserGauges", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "gauge", "type": "address" } ], "name": "removeGauge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "oldGauge", "type": "address" }, { "internalType": "address", "name": "newGauge", "type": "address" } ], "name": "replaceGauge", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "updateUserBoost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "userGauges", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "offset", "type": "uint256" }, { "internalType": "uint256", "name": "num", "type": "uint256" } ], "name": "userGauges", "outputs": [ { "internalType": "address[]", "name": "values", "type": "address[]" } ], "stateMutability": "view", "type": "function" } ]
610100604090808252346200049f57806200332f8038038091620000248285620004c0565b83396020928391810103126200049f57516001600160a01b03811691908290036200049f578251926200005784620004a4565b6011845270109d5c9b9d12195c9b595cc8109bdbdcdd607a1b828501528051916200008283620004a4565b6009835268312422a926a2a996a160b91b8184015284516001600160401b0395909390868511620004895760009480620000bd8754620004e4565b92601f9384811162000438575b508590848311600114620003d0578892620003c4575b50508160011b916000199060031b1c19161785555b815190878211620003b0578190600193620001118554620004e4565b8281116200035b575b5085918311600114620002f7578792620002eb575b5050600019600383901b1c191690821b1781555b60126080524660a052825184549181866200015e85620004e4565b9283835286830195878282169182600014620002cb5750506001146200028b575b506200018e92500382620004c0565b519020918051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c082019582871090871117620002775785905251902060c05281638b78c6d819557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a33360e052612e0d908162000522823960805181611df7015260a051816123c6015260c051816123ed015260e0518181816102b20152611c9c0152f35b634e487b7160e01b84526041600452602484fd5b8691508880528189209089915b858310620002b25750506200018e9350820101386200017f565b8054838801850152869450889390920191810162000298565b60ff191688526200018e95151560051b85010192503891506200017f9050565b0151905038806200012f565b8488528588208594509190601f198416895b888282106200034457505084116200032a575b505050811b01815562000143565b015160001960f88460031b161c191690553880806200031c565b838501518655889790950194938401930162000309565b909192508488528588208380860160051c820192888710620003a6575b91869588929594930160051c01915b828110620003975750506200011a565b8a815586955087910162000387565b9250819262000378565b634e487b7160e01b86526041600452602486fd5b015190503880620000e0565b8880528689209250601f198416895b888282106200042157505090846001959493921062000407575b505050811b018555620000f5565b015160001960f88460031b161c19169055388080620003f9565b6001859682939686015181550195019301620003df565b9091508780528588208480850160051c8201928886106200047f575b9085949392910160051c01905b818110620004705750620000ca565b89815584935060010162000461565b9250819262000454565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b038211176200048957604052565b601f909101601f19168101906001600160401b038211908210176200048957604052565b90600182811c9216801562000516575b60208310146200050057565b634e487b7160e01b600052602260045260246000fd5b91607f1691620004f456fe608060408181526004918236101561001657600080fd5b600092833560e01c91826306fdde031461210057508163095ea7b31461206557816318160ddd146120285781631c2a2e3114611f9057816323b872dd14611f0557816324b78cbc14611ec15781632569296214611e58578163260fd97014611e1b578163313ce56714611dbf5781633644e51514611d7d5781633a04514514611d3a57816340c10f1914611c46578163481436c214611b0e578163488bec8914611aac57816354d1f13d14611a485781635a1994c41461195e57816364cb685a1461192157816370a08231146118bf578163715018a6146118405781637a0ca1e21461166e5781637ecebe001461160c578163817c3b131461156d578163821bdcf1146114cb57816384e60a1a1461138b5781638da5cb5b146113195781639487a2fa146112c65781639581372b1461126457816395d89b411461114d578163969b12681461109c5781639da882ac14611051578163a9059cbb14610fd1578163aa79979b14610f51578163b233355414610ec1578163cd4973ce14610e19578163ceb6c34314610d71578163d232681e14610c0d578163d505accf14610912578163dd62ed3e1461089e578163e4b79db9146106b4578163e9726524146104db578163eb00529e14610453578163f04e283e1461038a578163f2fde38b146102d657508063fa7e38da146102685763fee81cf41461021457600080fd5b346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645760209161024e6122ed565b9063389a75e1600c525281600c20549051908152f35b5080fd5b503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b839060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645761030a6122ed565b90610313612389565b8160601b1561037f575073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b637448fbae8352601cfd5b8360207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450576103bd6122ed565b6103c5612389565b63389a75e1600c528082526020600c20928354421161044557508173ffffffffffffffffffffffffffffffffffffffff929355167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a35580f35b636f5e88188352601cfd5b80fd5b50503461026457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264576104d26020926104916122ed565b8361049a612315565b9273ffffffffffffffffffffffffffffffffffffffff8093168152600887522091169060019160005201602052604060002054151590565b90519015158152f35b8391503461026457602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b0573591338152600882528381209182549385518281878152018585528184862091865b868a821061069a57505061054792500382612217565b8051845b87811080610691575b1561068d5773ffffffffffffffffffffffffffffffffffffffff6105788285612605565b511633875260068087528a882082895287528a8089208054886fffffffffffffffffffffffffffffffff9384831690600c8d528d205415801590610683575b156106175750505050506105cb828a612a4f565b1561061357906001929133895287528a88208189528752878b812055337ff655d5448541f499e8d15e12be905bce1d45ff3df14aeca2d174cc9eda1664e58980a35b0161054b565b8780fd5b600197969495507fffffffffffffffffffffffffffffffff000000000000000000000000000000009161064991612697565b94610653866128c0565b169116179055337fb6c49cb8119cb7b6dfab8e3d72115a2774a3aa5c515a2c8fba7130492c176b458a80a461060d565b50808210156105b7565b8580f35b50818110610554565b8454835260019485019486945092019101610531565b8280fd5b839150346102645760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264573590602435906044359233825260209060088252858320938651908182858854928381520188885286882092885b888282106108885750505061072b92500383612217565b8151855b8881108061087f575b1561087b5773ffffffffffffffffffffffffffffffffffffffff61076561075f8386612ba8565b86612605565b511633885260068088528b8920828a528852888c81208d898b8354926fffffffffffffffffffffffffffffffff95600c8786169352205415801590610871575b156108055750505050506107b9828b612a4f565b15610801579060019291338a5288528b8920818a528852888c812055337ff655d5448541f499e8d15e12be905bce1d45ff3df14aeca2d174cc9eda1664e58a80a35b0161072f565b8880fd5b600197969495507fffffffffffffffffffffffffffffffff000000000000000000000000000000009161083791612697565b94610841866128c0565b169116179055337fb6c49cb8119cb7b6dfab8e3d72115a2774a3aa5c515a2c8fba7130492c176b458b80a46107fb565b50808210156107a5565b8680f35b50818110610738565b8554845260019586019588955093019201610714565b9050346106b057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b05760209282916108db6122ed565b6108e3612315565b9173ffffffffffffffffffffffffffffffffffffffff8092168452865283832091168252845220549051908152f35b8383346102645760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645761094b6122ed565b90610954612315565b91604435606435926084359260ff8416809403610c0957428510610bac5761097a6123c1565b9573ffffffffffffffffffffffffffffffffffffffff8092169586895260209560058752848a209889549960018b01905585519285898501957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987528b89870152169a8b606086015288608086015260a085015260c084015260c0835260e0830167ffffffffffffffff9484821086831117610b7f57818852845190206101008501927f190100000000000000000000000000000000000000000000000000000000000084526101028601526101228501526042815261016084019481861090861117610b5357848752519020835261018082015260a4356101a082015260c4356101c0909101528780528490889060809060015afa15610b49578651169687151580610b40575b15610ae55786977f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259596975283528087208688528352818188205551908152a380f35b8360649251917f08c379a0000000000000000000000000000000000000000000000000000000008352820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152fd5b50848814610aa2565b81513d88823e3d90fd5b60248c60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5060248c60418f7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60648860208451917f08c379a0000000000000000000000000000000000000000000000000000000008352820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152fd5b8680fd5b50503461026457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645781610c466122ed565b916024353383526020906006825273ffffffffffffffffffffffffffffffffffffffff838520951694858552825282842080546fffffffffffffffffffffffffffffffff92838216600c86528688205415801590610d67575b15610cfb57505050505033835260088152610cbc84838520612a4f565b156106b057338352600681528183209084845252812055337ff655d5448541f499e8d15e12be905bce1d45ff3df14aeca2d174cc9eda1664e58380a380f35b909194507fffffffffffffffffffffffffffffffff0000000000000000000000000000000093979650610d2f929550612697565b94610d39866128c0565b169116179055337fb6c49cb8119cb7b6dfab8e3d72115a2774a3aa5c515a2c8fba7130492c176b458480a480f35b5080821015610c9f565b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264578173ffffffffffffffffffffffffffffffffffffffff610dc06122ed565b16918282526008602052610dd78183203390612a4f565b1561026457828252600660205280822033835260205281205533907ff655d5448541f499e8d15e12be905bce1d45ff3df14aeca2d174cc9eda1664e58380a380f35b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645781610e536122ed565b913382526008602052610e8073ffffffffffffffffffffffffffffffffffffffff82842094168094612a4f565b15610264573382526006602052808220838352602052812055337ff655d5448541f499e8d15e12be905bce1d45ff3df14aeca2d174cc9eda1664e58380a380f35b50503461026457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264578091610efb6122ed565b610f03612315565b9073ffffffffffffffffffffffffffffffffffffffff809116835260066020528383209116825260205220548151906fffffffffffffffffffffffffffffffff8116825260801c6020820152f35b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264579060209173ffffffffffffffffffffffffffffffffffffffff610fa36122ed565b168252600a83528082205415159182610fc0575b50519015158152f35b819250600c84522054159038610fb7565b82843461045057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450575061100a6122ed565b6024359283611018336126d3565b1061102a57506020926104d291612c9a565b82517f10f6e63b000000000000000000000000000000000000000000000000000000008152fd5b83346104505760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104505761109961108c6122ed565b611094612389565b612bb5565b80f35b8284346104505760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450576110d56122ed565b9060243591604435916110e7836125b6565b9373ffffffffffffffffffffffffffffffffffffffff80931682526008602052858220915b848110611124578651806111208882612338565b0390f35b808461113460019385018661267f565b90549060031b1c166111468289612605565b520161110c565b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645780519082600180549161118f836121c4565b8086529282811690811561121e57506001146111c2575b5050506111b882611120940383612217565b5191829182612287565b94508085527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b828610611206575050506111b882602061112095820101946111a6565b805460208787018101919091529095019481016111e9565b6111209750869350602092506111b89491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b820101946111a6565b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264578060209273ffffffffffffffffffffffffffffffffffffffff6112b66122ed565b1681526007845220549051908152f35b505034610264577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450576110996113006122ed565b61109461130b612315565b91611314612389565b612c4f565b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102645760209073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754915191168152f35b50503461026457602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b057906113c76122ed565b908392839173ffffffffffffffffffffffffffffffffffffffff8094169384875260088252828720835190818482549182815201918a52848a20908a5b8181106114b4575050508161141a910382612217565b805191885b83811061145b5750505050600790848752528420557f975923379ae9f0ac1f381324c85b0fea9f067891c4f674a9fe9db214ecfb0a438380a380f35b9091929394955086895260068552858920826114778386612605565b51168a5285526fffffffffffffffffffffffffffffffff868a2054168089106114ab575b506001019291908795949361141f565b9750600161149b565b825484528a98509286019260019283019201611404565b82843461045057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450578151918291600954808552602080950194600983527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af92905b82821061155657611120868661154c828b0383612217565b5191829182612338565b835487529586019560019384019390910190611534565b50503461026457602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b05773ffffffffffffffffffffffffffffffffffffffff6115bd6122ed565b168352600882528083209281518093808654928381520195835280832092905b8282106115f557611120868661154c828b0383612217565b8354875295860195600193840193909101906115dd565b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264578060209273ffffffffffffffffffffffffffffffffffffffff61165e6122ed565b1681526005845220549051908152f35b9050346106b0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261183c576116a86122ed565b338552600a82528385205415801561182c575b6118045773ffffffffffffffffffffffffffffffffffffffff1691828552600882526116e933858720612864565b156117dd575081845260038152611702838520546128c0565b9282855260078252808520936fffffffffffffffffffffffffffffffff8554911694858092106117af575b50506002549182611765575b50505033907f60940192810a6fb3bce3fd3e2e3a13fd6ccc7605e963fb87ee971aba829989bd8480a480f35b7fffffffffffffffffffffffffffffffff000000000000000000000000000000009181600661179f935281882090338952528620926128c0565b60801b1683179055388080611739565b5583837f975923379ae9f0ac1f381324c85b0fea9f067891c4f674a9fe9db214ecfb0a438780a3833861172d565b83517faeccd4da000000000000000000000000000000000000000000000000000000008152fd5b8284517fcbb4b772000000000000000000000000000000000000000000000000000000008152fd5b50600c82528385205415156116bb565b8380fd5b83807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261045057611872612389565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739278181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264578060209273ffffffffffffffffffffffffffffffffffffffff6119116122ed565b1681526003845220549051908152f35b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026457602090600b549051908152f35b919050346106b057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b05781929135916024928335916119a3836125b6565b9481966009938454985b8681106119c1578751806111208b82612338565b8082018a811015611a1d579073ffffffffffffffffffffffffffffffffffffffff6001928888527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af015416611a16828c612605565b52016119ad565b84866032867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b83807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104505763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264578060209273ffffffffffffffffffffffffffffffffffffffff611afe6122ed565b1681526008845220549051908152f35b82843461045057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450573381526020916008835280822090805193849281815496878152019581865282862090865b818110611c3257505050611b7d8486979695960386612217565b845194845b868110611bbf578580866007873384525281205580337f975923379ae9f0ac1f381324c85b0fea9f067891c4f674a9fe9db214ecfb0a438280a380f35b73ffffffffffffffffffffffffffffffffffffffff611bde8284612605565b511690611beb8285612a4f565b15610c09576001913388526006865286882081895286528787812055337ff655d5448541f499e8d15e12be905bce1d45ff3df14aeca2d174cc9eda1664e58980a301611b82565b825489529784019760019283019201611b63565b9050346106b057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b057611c7e6122ed565b906024359173ffffffffffffffffffffffffffffffffffffffff91827f0000000000000000000000000000000000000000000000000000000000000000163303611d135750827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092611cf68896600254612ba8565b60025516948585526003835280852082815401905551908152a380f35b84517f4d316367000000000000000000000000000000000000000000000000000000008152fd5b83346104505760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261045057611099611d756122ed565b611314612389565b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026457602090611db86123c1565b9051908152f35b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264576020906009549051908152f35b83807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104505763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b5050346102645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261026457602090611db8611f006122ed565b6126d3565b8284346104505760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104505750611f3f6122ed565b611f47612315565b906044359384611f56836126d3565b10611f695750926104d291602094612d12565b83517f10f6e63b000000000000000000000000000000000000000000000000000000008152fd5b82843461045057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610450578151918291600b54808552602080950194600b83527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db992905b82821061201157611120868661154c828b0383612217565b835487529586019560019384019390910190611ff9565b50503461026457817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610264576020906002549051908152f35b9050346106b057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b0576020926120a06122ed565b9183602435928392338252875273ffffffffffffffffffffffffffffffffffffffff8282209516948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b849084346106b057827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106b05782805461213d816121c4565b8085529160019180831690811561121e5750600114612168575050506111b882611120940383612217565b80809650527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8286106121ac575050506111b882602061112095820101946111a6565b8054602087870181019190915290950194810161218f565b90600182811c9216801561220d575b60208310146121de57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916121d3565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761225857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60208082528251818301819052939260005b8581106122d9575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b818101830151848201604001528201612299565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361231057565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361231057565b6020908160408183019282815285518094520193019160005b82811061235f575050505090565b835173ffffffffffffffffffffffffffffffffffffffff1685529381019392810192600101612351565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275433036123b357565b6382b429006000526004601cfd5b6000467f00000000000000000000000000000000000000000000000000000000000000000361240f57507f000000000000000000000000000000000000000000000000000000000000000090565b6040518154829161241f826121c4565b8082528160209485820194600190878282169182600014612562575050600114612509575b5061245192500382612217565b51902091604051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f845260408301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c082019082821067ffffffffffffffff8311176124dc575060405251902090565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b87805286915087907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061254a575050612451935082010138612444565b80548388018501528694508893909201918101612533565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016885261245195151560051b85010192503891506124449050565b67ffffffffffffffff81116122585760051b60200190565b906125c08261259e565b6125cd6040519182612217565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06125fb829461259e565b0190602036910137565b80518210156126195760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600b5481101561261957600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90190600090565b80548210156126195760005260206000200190600090565b919082039182116126a457565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff16600052600360205261270b604060002054600760205260406000205490612697565b90565b6000818152600a60205260408120546127d857600954680100000000000000008110156127ab57600181018060095581101561277e5790826040927f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155600954928152600a6020522055600190565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526032600452fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b905090565b6000818152600c60205260408120546127d857600b54680100000000000000008110156127ab57908261285061281b84600160409601600b55612648565b81939154907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060031b92831b921b19161790565b9055600b54928152600c6020522055600190565b60008281526001820160205260409020546128b9578054906801000000000000000082101561225857826128a261281b84600180960185558461267f565b905580549260005201602052604060002055600190565b5050600090565b7001000000000000000000000000000000008110156128ee576fffffffffffffffffffffffffffffffff1690565b6335278d126000526004601cfd5b6000818152600c60205260408120549091908015612a4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818101818111612a1d57600b54908382019182116129f0578082036129bc575b505050600b54801561298f5781019061296e82612648565b909182549160031b1b19169055600b558152600c6020526040812055600190565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526031600452fd5b6129da6129cb61281b93612648565b90549060031b1c928392612648565b90558452600c6020526040842055388080612956565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b505090565b90600182019060009281845282602052604084205490811515600014612ba1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91828101818111612b7457825490848201918211612b4757808203612b12575b50505080548015612ae557820191612ac8838361267f565b909182549160031b1b191690555582526020526040812055600190565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526031600452fd5b612b32612b2261281b938661267f565b90549060031b1c9283928661267f565b90558652846020526040862055388080612ab0565b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6024877f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b5050505090565b919082018092116126a457565b73ffffffffffffffffffffffffffffffffffffffff1680158015612c29575b612bff577f663bc5df9b13d61c4a5b97abcf8e3f327c80b0ee0c0db02c66536fe30399afab600080a2565b60046040517fcbb4b772000000000000000000000000000000000000000000000000000000008152fd5b50612c338161270e565b8015612c40575b15612bd4565b50612c4a816128fc565b612c3a565b73ffffffffffffffffffffffffffffffffffffffff16612c6e816127dd565b15612bff577fd8447e2a6ccc1f3caeea39fdaea6ca5c1c22a9ab79022d1e39a8c24f0736e549600080a2565b73ffffffffffffffffffffffffffffffffffffffff903360005260036020526040600020612cc9848254612697565b9055169081600052600360205260406000208181540190556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203392a3600190565b919073ffffffffffffffffffffffffffffffffffffffff80931691338314612df457907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91600094848652602092600484526040918291828920338a52865282892054857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd1575b505087895260038652828920612db5868254612697565b90551696878152600385522082815401905551908152a3600190565b612dda91612697565b888a5260048752838a20338b528752838a20553885612d9e565b915061270b9250612c9a56fea164736f6c6343000813000a000000000000000000000000c466af7ff16ef0f1a7fa4e23e095e47a4058d791