Files
contract/deployment/alpha/out/TestFullMath.sol/TestFullMath.json
2023-11-16 17:36:43 -04:00

5926 lines
271 KiB
JSON

{
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "log",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "log_address",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256[]",
"name": "val",
"type": "uint256[]"
}
],
"name": "log_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "int256[]",
"name": "val",
"type": "int256[]"
}
],
"name": "log_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address[]",
"name": "val",
"type": "address[]"
}
],
"name": "log_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "log_bytes",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "log_bytes32",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"name": "log_int",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "val",
"type": "address"
}
],
"name": "log_named_address",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "val",
"type": "uint256[]"
}
],
"name": "log_named_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "int256[]",
"name": "val",
"type": "int256[]"
}
],
"name": "log_named_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "address[]",
"name": "val",
"type": "address[]"
}
],
"name": "log_named_array",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "val",
"type": "bytes"
}
],
"name": "log_named_bytes",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "val",
"type": "bytes32"
}
],
"name": "log_named_bytes32",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "int256",
"name": "val",
"type": "int256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
}
],
"name": "log_named_decimal_int",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "val",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "decimals",
"type": "uint256"
}
],
"name": "log_named_decimal_uint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "int256",
"name": "val",
"type": "int256"
}
],
"name": "log_named_int",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "val",
"type": "string"
}
],
"name": "log_named_string",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "key",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "val",
"type": "uint256"
}
],
"name": "log_named_uint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "log_string",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "log_uint",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "logs",
"type": "event"
},
{
"inputs": [],
"name": "IS_TEST",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeArtifacts",
"outputs": [
{
"internalType": "string[]",
"name": "excludedArtifacts_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeContracts",
"outputs": [
{
"internalType": "address[]",
"name": "excludedContracts_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "excludeSenders",
"outputs": [
{
"internalType": "address[]",
"name": "excludedSenders_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "failed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "setUp",
"outputs": [],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "targetArtifactSelectors",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
],
"internalType": "struct StdInvariant.FuzzSelector[]",
"name": "targetedArtifactSelectors_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetArtifacts",
"outputs": [
{
"internalType": "string[]",
"name": "targetedArtifacts_",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetContracts",
"outputs": [
{
"internalType": "address[]",
"name": "targetedContracts_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetSelectors",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
],
"internalType": "struct StdInvariant.FuzzSelector[]",
"name": "targetedSelectors_",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetSenders",
"outputs": [
{
"internalType": "address[]",
"name": "targetedSenders_",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "testFullMath",
"outputs": [],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": {
"object": "0x608060405260008054600160ff19918216811790925560048054909116909117905534801561002d57600080fd5b506117348061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063916a17c611610081578063ba414fa61161005b578063ba414fa614610153578063e20c9f7114610168578063fa7626d41461017057600080fd5b8063916a17c61461013b57806395d28dde14610143578063b5508aa91461014b57600080fd5b80633f7286f4116100b25780633f7286f41461010957806366d9a9a01461011157806385226c811461012657600080fd5b80630a9254e4146100d95780631ed7831c146100e35780633e5e3c2314610101575b600080fd5b6100e161017d565b005b6100eb6101bd565b6040516100f89190610f2a565b60405180910390f35b6100eb61022c565b6100eb610299565b610119610306565b6040516100f89190611046565b61012e610417565b6040516100f8919061112d565b6101196104e7565b6100e16105ef565b61012e610a5e565b61015b610b2e565b6040516100f89190611148565b6100eb610cb0565b60005461015b9060ff1681565b6101bb6040518060400160405280601081526020017f46756c6c4d617468207365747570282900000000000000000000000000000000815250610d1d565b565b6060600d80548060200260200160405190810160405280929190818152602001828054801561022257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156102225760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156102225760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561040e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156103f657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103a35790505b5050505050815250508152602001906001019061032a565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561040e57838290600052602060002001805461045a90611185565b80601f016020809104026020016040519081016040528092919081815260200182805461048690611185565b80156104d35780601f106104a8576101008083540402835291602001916104d3565b820191906000526020600020905b8154815290600101906020018083116104b657829003601f168201915b50505050508152602001906001019061043b565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561040e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156105d757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105845790505b5050505050815250508152602001906001019061050b565b61062d6040518060400160405280601781526020017f46756c6c4d617468207465737446756c6c4d6174682829000000000000000000815250610d1d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f80000000000000000000000000000000000000000000000000000000000000007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61069b8160016111e3565b82146106a657600080fd5b60018301156106b457600080fd5b60006106c1838485610daf565b9050828114610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611237565b60405180910390fd5b610710848586610daf565b905083811461074b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc9061127b565b610756828384610daf565b9050818114610791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc906112bf565b61079c828484610daf565b90508281146107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611303565b6107e2828485610daf565b905081811461081d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611347565b610828828584610daf565b9050838114610863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc9061138b565b61086e838585610daf565b90508381146108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc906113cf565b6108b4828586610daf565b90508181146108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611413565b6108fa838586610daf565b9050828114610935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611457565b733783474e4beb1dda0000000000000000000000006c220276b3db05e66d56a4be13dc6e0f4270ad40df2b08be65608f4517e8717bb9554f7ede43d817a015991491a2ef75e980610987858585610daf565b146109be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc9061149b565b60ff80806109cd8160026115bd565b96506109da8260026115bd565b95506109e78160026115bd565b9450806109f483856111e3565b6109fe91906115eb565b610a099060026115bd565b9350610a16878787610daf565b9750838814610a51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611632565b5050505050505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561040e578382906000526020600020018054610aa190611185565b80601f0160208091040260200160405190810160405280929190818152602001828054610acd90611185565b8015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b820191906000526020600020905b815481529060010190602001808311610afd57829003601f168201915b505050505081526020019060010190610a82565b60008054610100900460ff1615610b4e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cab57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490610bd99083907f6661696c656400000000000000000000000000000000000000000000000000009060200161164a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c159291602001611686565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4d9161169f565b6000604051808303816000865af19150503d8060008114610c8a576040519150601f19603f3d011682016040523d82523d6000602084013e610c8f565b606091505b5091505080806020019051810190610ca791906116cc565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156102225760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575050505050905090565b610dac81604051602401610d3191906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610e80565b50565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003610e065760008411610dfb57600080fd5b508290049050610e79565b808411610e1257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b610dac8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b610ece81610ea5565b82525050565b610ede8282610ec5565b5060200190565b6000610eef825190565b808452602093840193830160005b82811015610f2057610f10868351610ed4565b9550602082019150600101610efd565b5093949350505050565b602081526000610e796020830184610ee5565b7fffffffff000000000000000000000000000000000000000000000000000000008116610ece565b610ede8282610f3d565b6000610f79825190565b808452602093840193830160005b82811015610f2057610f9a868351610f65565b9550602082019150600101610f87565b610fb5828251610ec5565b6000602082015160406020850152610fd06040850182610f6f565b949350505050565b6000610e798383610faa565b6000610fee825190565b808452602084018094508160051b81016110088560200190565b60005b8481101561103a578383038852611023838351610fd8565b92506020820160209890980197915060010161100b565b50909695505050505050565b602081526000610e796020830184610fe4565b60005b8381101561107457818101518382015260200161105c565b50506000910152565b6000611087825190565b8084526020840161109c828260208701611059565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000610e79838361107d565b60006110e1825190565b808452602084018094508160051b81016110fb8560200190565b60005b8481101561103a5783830388526111168383516110cb565b9250602082016020989098019791506001016110fe565b602081526000610e7960208301846110d7565b801515610ece565b60208101610ebf8284611140565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168061119b57607f821692505b6020831081036111ad576111ad611156565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181018181808211156111f8576111f86111b4565b505092915050565b600d81526000602082017f636173652031206661696c65640000000000000000000000000000000000000081525b60200192915050565b602081526000610ebf60208301611200565b600d81526000602082017f636173652032206661696c656400000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611249565b600d81526000602082017f636173652033206661696c656400000000000000000000000000000000000000815261122e565b602081526000610ebf6020830161128d565b600e81526000602082017f63617365203461206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf602083016112d1565b600e81526000602082017f63617365203462206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611315565b600e81526000602082017f63617365203463206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611359565b600e81526000602082017f63617365203464206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf6020830161139d565b600e81526000602082017f63617365203465206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf602083016113e1565b600e81526000602082017f63617365203466206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611425565b600d81526000602082017f436173652035206661696c656400000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611469565b80825b60018511156114ec578086048111156114cb576114cb6111b4565b60018516156114d957908102905b80026114e58560011c90565b94506114b0565b94509492505050565b60008261150457506001610e79565b8161151157506000610e79565b8160018114611527576002811461153157611560565b6001915050610e79565b60ff841115611542576115426111b4565b6001841b80925085811115611559576115596111b4565b5050610e79565b5060208310610133831016604e8410600b8410161715611595575081810a808481111561158f5761158f6111b4565b50610e79565b6115a284848460016114ad565b8086048211156115b4576115b46111b4565b02949350505050565b600081610fd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85836114f5565b8181038181818111156111f8576111f86111b4565b600e81526000602082017f63617365203130206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611600565b80610ece565b604081016116588285610ec5565b610e796020830184611644565b600061166f825190565b8361167e828260208701611059565b019392505050565b6116908184610f3d565b6000610fd06004830184611665565b6000610e798284611665565b8015158114610dac57600080fd5b8051806116c5816116ab565b5092915050565b6000602082840312156116e1576116e1600080fd5b610e7983836116b9565b602081526000610e79602083018461107d56fea26469706673582212204deb5b3f0c68cbd803806e7bb2444265e121f6708f338a042dddfc2af88220a464736f6c63430008160033",
"sourceMap": "411:2531:64:-:0;;;1572:26:0;;;1594:4;-1:-1:-1;;1572:26:0;;;;;;;;3126:44:4;;;;;;;;;;;411:2531:64;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063916a17c611610081578063ba414fa61161005b578063ba414fa614610153578063e20c9f7114610168578063fa7626d41461017057600080fd5b8063916a17c61461013b57806395d28dde14610143578063b5508aa91461014b57600080fd5b80633f7286f4116100b25780633f7286f41461010957806366d9a9a01461011157806385226c811461012657600080fd5b80630a9254e4146100d95780631ed7831c146100e35780633e5e3c2314610101575b600080fd5b6100e161017d565b005b6100eb6101bd565b6040516100f89190610f2a565b60405180910390f35b6100eb61022c565b6100eb610299565b610119610306565b6040516100f89190611046565b61012e610417565b6040516100f8919061112d565b6101196104e7565b6100e16105ef565b61012e610a5e565b61015b610b2e565b6040516100f89190611148565b6100eb610cb0565b60005461015b9060ff1681565b6101bb6040518060400160405280601081526020017f46756c6c4d617468207365747570282900000000000000000000000000000000815250610d1d565b565b6060600d80548060200260200160405190810160405280929190818152602001828054801561022257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575b5050505050905090565b6060600f8054806020026020016040519081016040528092919081815260200182805480156102225760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575050505050905090565b6060600e8054806020026020016040519081016040528092919081815260200182805480156102225760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b8282101561040e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156103f657602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103a35790505b5050505050815250508152602001906001019061032a565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101561040e57838290600052602060002001805461045a90611185565b80601f016020809104026020016040519081016040528092919081815260200182805461048690611185565b80156104d35780601f106104a8576101008083540402835291602001916104d3565b820191906000526020600020905b8154815290600101906020018083116104b657829003601f168201915b50505050508152602001906001019061043b565b60606013805480602002602001604051908101604052809291908181526020016000905b8282101561040e57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156105d757602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105845790505b5050505050815250508152602001906001019061050b565b61062d6040518060400160405280601781526020017f46756c6c4d617468207465737446756c6c4d6174682829000000000000000000815250610d1d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f80000000000000000000000000000000000000000000000000000000000000007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61069b8160016111e3565b82146106a657600080fd5b60018301156106b457600080fd5b60006106c1838485610daf565b9050828114610705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611237565b60405180910390fd5b610710848586610daf565b905083811461074b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc9061127b565b610756828384610daf565b9050818114610791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc906112bf565b61079c828484610daf565b90508281146107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611303565b6107e2828485610daf565b905081811461081d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611347565b610828828584610daf565b9050838114610863576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc9061138b565b61086e838585610daf565b90508381146108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc906113cf565b6108b4828586610daf565b90508181146108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611413565b6108fa838586610daf565b9050828114610935576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611457565b733783474e4beb1dda0000000000000000000000006c220276b3db05e66d56a4be13dc6e0f4270ad40df2b08be65608f4517e8717bb9554f7ede43d817a015991491a2ef75e980610987858585610daf565b146109be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc9061149b565b60ff80806109cd8160026115bd565b96506109da8260026115bd565b95506109e78160026115bd565b9450806109f483856111e3565b6109fe91906115eb565b610a099060026115bd565b9350610a16878787610daf565b9750838814610a51576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fc90611632565b5050505050505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101561040e578382906000526020600020018054610aa190611185565b80601f0160208091040260200160405190810160405280929190818152602001828054610acd90611185565b8015610b1a5780601f10610aef57610100808354040283529160200191610b1a565b820191906000526020600020905b815481529060010190602001808311610afd57829003601f168201915b505050505081526020019060010190610a82565b60008054610100900460ff1615610b4e5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610cab57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490610bd99083907f6661696c656400000000000000000000000000000000000000000000000000009060200161164a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c159291602001611686565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4d9161169f565b6000604051808303816000865af19150503d8060008114610c8a576040519150601f19603f3d011682016040523d82523d6000602084013e610c8f565b606091505b5091505080806020019051810190610ca791906116cc565b9150505b919050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156102225760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101f7575050505050905090565b610dac81604051602401610d3191906116eb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052610e80565b50565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003610e065760008411610dfb57600080fd5b508290049050610e79565b808411610e1257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b610dac8180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b610ece81610ea5565b82525050565b610ede8282610ec5565b5060200190565b6000610eef825190565b808452602093840193830160005b82811015610f2057610f10868351610ed4565b9550602082019150600101610efd565b5093949350505050565b602081526000610e796020830184610ee5565b7fffffffff000000000000000000000000000000000000000000000000000000008116610ece565b610ede8282610f3d565b6000610f79825190565b808452602093840193830160005b82811015610f2057610f9a868351610f65565b9550602082019150600101610f87565b610fb5828251610ec5565b6000602082015160406020850152610fd06040850182610f6f565b949350505050565b6000610e798383610faa565b6000610fee825190565b808452602084018094508160051b81016110088560200190565b60005b8481101561103a578383038852611023838351610fd8565b92506020820160209890980197915060010161100b565b50909695505050505050565b602081526000610e796020830184610fe4565b60005b8381101561107457818101518382015260200161105c565b50506000910152565b6000611087825190565b8084526020840161109c828260208701611059565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6000610e79838361107d565b60006110e1825190565b808452602084018094508160051b81016110fb8560200190565b60005b8481101561103a5783830388526111168383516110cb565b9250602082016020989098019791506001016110fe565b602081526000610e7960208301846110d7565b801515610ece565b60208101610ebf8284611140565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c90819083168061119b57607f821692505b6020831081036111ad576111ad611156565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181018181808211156111f8576111f86111b4565b505092915050565b600d81526000602082017f636173652031206661696c65640000000000000000000000000000000000000081525b60200192915050565b602081526000610ebf60208301611200565b600d81526000602082017f636173652032206661696c656400000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611249565b600d81526000602082017f636173652033206661696c656400000000000000000000000000000000000000815261122e565b602081526000610ebf6020830161128d565b600e81526000602082017f63617365203461206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf602083016112d1565b600e81526000602082017f63617365203462206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611315565b600e81526000602082017f63617365203463206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611359565b600e81526000602082017f63617365203464206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf6020830161139d565b600e81526000602082017f63617365203465206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf602083016113e1565b600e81526000602082017f63617365203466206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611425565b600d81526000602082017f436173652035206661696c656400000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611469565b80825b60018511156114ec578086048111156114cb576114cb6111b4565b60018516156114d957908102905b80026114e58560011c90565b94506114b0565b94509492505050565b60008261150457506001610e79565b8161151157506000610e79565b8160018114611527576002811461153157611560565b6001915050610e79565b60ff841115611542576115426111b4565b6001841b80925085811115611559576115596111b4565b5050610e79565b5060208310610133831016604e8410600b8410161715611595575081810a808481111561158f5761158f6111b4565b50610e79565b6115a284848460016114ad565b8086048211156115b4576115b46111b4565b02949350505050565b600081610fd07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85836114f5565b8181038181818111156111f8576111f86111b4565b600e81526000602082017f63617365203130206661696c6564000000000000000000000000000000000000815261122e565b602081526000610ebf60208301611600565b80610ece565b604081016116588285610ec5565b610e796020830184611644565b600061166f825190565b8361167e828260208701611059565b019392505050565b6116908184610f3d565b6000610fd06004830184611665565b6000610e798284611665565b8015158114610dac57600080fd5b8051806116c5816116ab565b5092915050565b6000602082840312156116e1576116e1600080fd5b610e7983836116b9565b602081526000610e79602083018461107d56fea26469706673582212204deb5b3f0c68cbd803806e7bb2444265e121f6708f338a042dddfc2af88220a464736f6c63430008160033",
"sourceMap": "411:2531:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;448:78;;;:::i;:::-;;2170:134:7;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;2787:146::-;;;:::i;532:2408:64:-;;;:::i;1875:141:7:-;;;:::i;1819:584:0:-;;;:::i;:::-;;;;;;;:::i;2022:142:7:-;;;:::i;1572:26:0:-;;;;;;;;;448:78:64;487:32;;;;;;;;;;;;;;;;;;:12;:32::i;:::-;448:78::o;2170:134:7:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2787:146;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;532:2408:64;579:39;;;;;;;;;;;;;;;;;;:12;:39::i;:::-;685:2;716:6;749:7;852:8;:6;859:1;852:8;:::i;:::-;842:6;:18;834:27;;;;;;911:1;902:10;;:15;894:24;;;;;;981:9;993:39;1009:6;1017;1025;993:15;:39::i;:::-;981:51;;1062:6;1057:1;:11;1049:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;1151:45;1167:8;1177;1187;1151:15;:45::i;:::-;1147:49;;1219:8;1214:1;:13;1206:39;;;;;;;;;;;;:::i;:::-;1311;1327:6;1335;1343;1311:15;:39::i;:::-;1307:43;;1373:6;1368:1;:11;1360:37;;;;;;;;;;;;:::i;:::-;1452:39;1468:6;1476;1484;1452:15;:39::i;:::-;1448:43;;1514:6;1509:1;:11;1501:38;;;;;;;;;;;;:::i;:::-;1553:39;1569:6;1577;1585;1553:15;:39::i;:::-;1549:43;;1615:6;1610:1;:11;1602:38;;;;;;;;;;;;:::i;:::-;1654:41;1670:6;1678:8;1688:6;1654:15;:41::i;:::-;1650:45;;1718:8;1713:1;:13;1705:40;;;;;;;;;;;;:::i;:::-;1759:41;1775:6;1783:8;1793:6;1759:15;:41::i;:::-;1755:45;;1823:8;1818:1;:13;1810:40;;;;;;;;;;;;:::i;:::-;1864:43;1880:6;1888:8;1898;1864:15;:43::i;:::-;1860:47;;1930:6;1925:1;:11;1917:38;;;;;;;;;;;;:::i;:::-;1969:43;1985:6;1993:8;2003;1969:15;:43::i;:::-;1965:47;;2035:6;2030:1;:11;2022:38;;;;;;;;;;;;:::i;:::-;2235:48;2307:31;2362:35;2428:44;;2502:24;2235:48;2307:31;2362:35;2502:15;:24::i;:::-;:36;2493:63;;;;;;;;;;;;:::i;:::-;2682:3;;;2740:7;2682:3;2740:1;:7;:::i;:::-;2736:11;-1:-1:-1;2761:7:64;2764:4;2761:1;:7;:::i;:::-;2757:11;-1:-1:-1;2782:7:64;2785:4;2782:1;:7;:::i;:::-;2778:11;-1:-1:-1;2824:4:64;2814:9;2819:4;2814;:9;:::i;:::-;:14;;;;:::i;:::-;2810:19;;:1;:19;:::i;:::-;2799:30;;2844:22;2860:1;2862;2864;2844:15;:22::i;:::-;2840:26;;2896:8;2891:1;:13;2883:40;;;;;;;;;;;;:::i;:::-;568:2372;;;;;;;;;;;532:2408::o;1875:141:7:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:0;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;2023:20;;1671:64;;2135:34;;2196:43;;1671:64;;2221:17;;2196:43;;;:::i;:::-;;;;;;;;;;;;;;;2086:175;;;2196:43;2086:175;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:0:o;2022:142:7:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;6598:121:16:-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;:::-;6598:121;:::o;834:3804:37:-;946:14;;;1466:6;1463:1;1460;1453:20;1502:1;1499;1495:9;1486:18;;1553:5;1549:2;1546:13;1538:5;1534:2;1530:14;1526:34;1517:43;;;1642:5;1651:1;1642:10;1638:179;;1690:1;1676:11;:15;1668:24;;;;;;-1:-1:-1;1743:23:37;;;;-1:-1:-1;1793:13:37;;1638:179;1944:5;1930:11;:19;1922:28;;;;;;2227:17;2303:11;2300:1;2297;2290:25;2655:12;2678:20;;;2670:43;;2807:22;;;;;3610:1;3591;:15;;3590:21;;3837:17;;;3833:21;;3826:28;3895:17;;;3891:21;;3884:28;3954:17;;;3950:21;;3943:28;4013:17;;;4009:21;;4002:28;4072:17;;;4068:21;;4061:28;4132:17;;;4128:21;;;4121:28;3179:12;;;;3175:23;;;3200:1;3171:31;2432:20;;;2421:32;;;3230:12;;;;2475:21;;;;2935:16;;;;3221:21;;;;4596:11;;;;;-1:-1:-1;;834:3804:37;;;;;;:::o;868:133:16:-;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;495:96:69:-;530:7;441:42;430:54;;563:22;552:33;495:96;-1:-1:-1;;495:96:69:o;596:106::-;673:22;689:5;673:22;:::i;:::-;668:3;661:35;;;596:106::o;707:164::-;786:42;824:3;816:6;786:42;:::i;:::-;-1:-1:-1;860:4:69;851:14;;707:164::o;969:506::-;1022:3;1054:37;1085:5;87:12;;14:87;1054:37;204:19;;;256:4;247:14;;;;341;;1246:1;1256:194;1270:6;1267:1;1264:13;1256:194;;;1326:48;1370:3;1361:6;1355:13;1326:48;:::i;:::-;1319:55;-1:-1:-1;350:4:69;341:14;;1387:53;-1:-1:-1;1292:1:69;1285:9;1256:194;;;-1:-1:-1;1466:3:69;;969:506;-1:-1:-1;;;;969:506:69:o;1480:261::-;1659:2;1648:9;1641:21;1622:4;1679:56;1731:2;1720:9;1716:18;1708:6;1679:56;:::i;2631:93::-;2553:66;2542:78;;2696:21;2475:151;2729;2807:30;2833:3;2825:6;2807:30;:::i;2977:500::-;3029:3;3061:36;3091:5;87:12;;14:87;3061:36;204:19;;;256:4;247:14;;;;341;;3250:1;3260:192;3274:6;3271:1;3268:13;3260:192;;;3330:47;3373:3;3364:6;3358:13;3330:47;:::i;:::-;3323:54;-1:-1:-1;350:4:69;341:14;;3390:52;-1:-1:-1;3296:1:69;3289:9;3260:192;;3482:289;3555:48;3599:3;3591:5;3585:12;3555:48;:::i;:::-;3537:3;3649:4;3642:5;3638:16;3632:23;3687:4;3680;3675:3;3671:14;3664:28;3708:57;3759:4;3754:3;3750:14;3736:12;3708:57;:::i;:::-;3701:64;3482:289;-1:-1:-1;;;;3482:289:69:o;3776:154::-;3842:10;3881:43;3920:3;3912:6;3881:43;:::i;4040:731::-;4105:3;4137:49;4180:5;87:12;;14:87;4137:49;204:19;;;256:4;247:14;;4295:5;4288:12;;4339:6;4336:1;4332:14;4325:5;4321:26;4370:51;4415:5;350:4;341:14;;272:85;4370:51;4439:1;4449:296;4463:6;4460:1;4457:13;4449:296;;;4534:5;4528:4;4524:16;4519:3;4512:29;4562:61;4618:4;4609:6;4603:13;4562:61;:::i;:::-;4554:69;-1:-1:-1;350:4:69;341:14;;4730:4;4721:14;;;;;4636:65;-1:-1:-1;4485:1:69;4478:9;4449:296;;;-1:-1:-1;4761:4:69;;4040:731;-1:-1:-1;;;;;;4040:731:69:o;4776:333::-;5015:2;5004:9;4997:21;4978:4;5035:68;5099:2;5088:9;5084:18;5076:6;5035:68;:::i;5695:250::-;5780:1;5790:113;5804:6;5801:1;5798:13;5790:113;;;5880:11;;;5874:18;5861:11;;;5854:39;5826:2;5819:10;5790:113;;;-1:-1:-1;;5937:1:69;5919:16;;5912:27;5695:250::o;6117:317::-;6170:3;6202:26;6222:5;87:12;;14:87;6202:26;204:19;;;256:4;247:14;;6307:67;6367:6;6360:5;6353:4;6346:5;6342:16;6307:67;:::i;:::-;6039:66;6034:2;6023:14;;6019:87;6390:38;;6117:317;-1:-1:-1;;;;6117:317:69:o;6439:139::-;6492:10;6531:41;6568:3;6560:6;6531:41;:::i;6675:653::-;6727:3;6759:36;6789:5;87:12;;14:87;6759:36;204:19;;;256:4;247:14;;6891:5;6884:12;;6935:6;6932:1;6928:14;6921:5;6917:26;6966:38;6998:5;350:4;341:14;;272:85;6966:38;7022:1;7032:270;7046:6;7043:1;7040:13;7032:270;;;7117:5;7111:4;7107:16;7102:3;7095:29;7145:48;7188:4;7179:6;7173:13;7145:48;:::i;:::-;7137:56;-1:-1:-1;350:4:69;341:14;;7287:4;7278:14;;;;;7206:52;-1:-1:-1;7068:1:69;7061:9;7032:270;;7333:280;7532:2;7521:9;7514:21;7495:4;7552:55;7603:2;7592:9;7588:18;7580:6;7552:55;:::i;7715:89::-;7690:13;;7683:21;7778:19;7618:92;7809:180;7937:2;7922:18;;7949:34;7926:9;7965:6;7949:34;:::i;7994:184::-;8046:77;8043:1;8036:88;8143:4;8140:1;8133:15;8167:4;8164:1;8157:15;8183:318;8268:1;8264:12;;;;;;8338;;;8359:63;;8415:4;8405:8;8401:19;8391:29;;8359:63;8468:2;8460:6;8457:14;8437:18;8434:38;8431:64;;8475:18;;:::i;:::-;8431:64;;8183:318;;;:::o;8578:184::-;8630:77;8627:1;8620:88;8727:4;8724:1;8717:15;8751:4;8748:1;8741:15;8767:213;8876:28;;;8852:1;8876:28;8937:14;;;8934:40;;;8954:18;;:::i;:::-;8934:40;;8767:213;;;;:::o;9312:272::-;9441:2;204:19;;9359:3;256:4;247:14;;9285:15;9270:31;;9453:95;9575:2;9564:14;;9312:272;-1:-1:-1;;9312:272:69:o;9589:277::-;9791:2;9780:9;9773:21;9754:4;9811:49;9856:2;9845:9;9841:18;9811:49;:::i;10033:272::-;10162:2;204:19;;10080:3;256:4;247:14;;10006:15;9991:31;;10174:95;9871:157;10310:277;10512:2;10501:9;10494:21;10475:4;10532:49;10577:2;10566:9;10562:18;10532:49;:::i;10754:272::-;10883:2;204:19;;10801:3;256:4;247:14;;10727:15;10712:31;;10895:95;10592:157;11031:277;11233:2;11222:9;11215:21;11196:4;11253:49;11298:2;11287:9;11283:18;11253:49;:::i;11476:272::-;11605:2;204:19;;11523:3;256:4;247:14;;11448:16;11433:32;;11617:95;11313:158;11753:277;11955:2;11944:9;11937:21;11918:4;11975:49;12020:2;12009:9;12005:18;11975:49;:::i;12198:272::-;12327:2;204:19;;12245:3;256:4;247:14;;12170:16;12155:32;;12339:95;12035:158;12475:277;12677:2;12666:9;12659:21;12640:4;12697:49;12742:2;12731:9;12727:18;12697:49;:::i;12920:272::-;13049:2;204:19;;12967:3;256:4;247:14;;12892:16;12877:32;;13061:95;12757:158;13197:277;13399:2;13388:9;13381:21;13362:4;13419:49;13464:2;13453:9;13449:18;13419:49;:::i;13642:272::-;13771:2;204:19;;13689:3;256:4;247:14;;13614:16;13599:32;;13783:95;13479:158;13919:277;14121:2;14110:9;14103:21;14084:4;14141:49;14186:2;14175:9;14171:18;14141:49;:::i;14364:272::-;14493:2;204:19;;14411:3;256:4;247:14;;14336:16;14321:32;;14505:95;14201:158;14641:277;14843:2;14832:9;14825:21;14806:4;14863:49;14908:2;14897:9;14893:18;14863:49;:::i;15086:267::-;15210:2;204:19;;15128:3;256:4;247:14;;15058:16;15043:32;;15222:95;14923:158;15358:272;15560:2;15549:9;15542:21;15523:4;15580:44;15620:2;15609:9;15605:18;15580:44;:::i;15797:272::-;15926:2;204:19;;15844:3;256:4;247:14;;15770:15;15755:31;;15938:95;15635:157;16074:277;16276:2;16265:9;16258:21;16239:4;16296:49;16341:2;16330:9;16326:18;16296:49;:::i;16443:402::-;16539:6;16562:5;16576:263;16597:1;16587:8;16584:15;16576:263;;;16647:4;16642:3;16638:14;16632:4;16629:24;16626:50;;;16656:18;;:::i;:::-;16706:1;16696:8;16692:16;16689:49;;;16720:16;;;;16689:49;16759:15;;16799:30;16820:8;16427:1;16423:13;;16356:82;16799:30;16787:42;;16576:263;;;16443:402;;;;;;;:::o;16850:996::-;16904:5;16934:8;16924:80;;-1:-1:-1;16975:1:69;16989:5;;16924:80;17023:4;17013:76;;-1:-1:-1;17060:1:69;17074:5;;17013:76;17105:4;17123:1;17118:59;;;;17191:1;17186:220;;;;17098:308;;17118:59;17148:1;17139:10;;17162:5;;;17186:220;17223:3;17213:8;17210:17;17207:43;;;17230:18;;:::i;:::-;17292:1;17282:8;17278:16;17316:7;17307:16;;17351:3;17342:7;17339:16;17336:42;;;17358:18;;:::i;:::-;17336:42;17391:5;;;17098:308;;17490:2;17480:8;17477:16;17471:3;17465:4;17462:13;17458:36;17452:2;17442:8;17439:16;17434:2;17428:4;17425:12;17421:35;17418:77;17415:249;;;-1:-1:-1;17533:19:69;;;;17597:16;;;17594:42;;;17616:18;;:::i;:::-;17594:42;17649:5;;17415:249;17696:42;17734:3;17724:8;17718:4;17715:1;17696:42;:::i;:::-;17771:6;17766:3;17762:16;17753:7;17750:29;17747:55;;;17782:18;;:::i;:::-;17820:20;;16850:996;-1:-1:-1;;;;16850:996:69:o;17851:262::-;17911:5;17961:4;17984:123;18040:66;18029:8;18005:6;17984:123;:::i;18118:218::-;18229:28;;;18204:1;18229:28;18292:15;;;18289:41;;;18310:18;;:::i;18504:272::-;18633:2;204:19;;18551:3;256:4;247:14;;18476:16;18461:32;;18645:95;18341:158;18781:277;18983:2;18972:9;18965:21;18946:4;19003:49;19048:2;19037:9;19033:18;19003:49;:::i;19235:95::-;19317:5;19301:22;8506:67;19335:272;19497:2;19482:18;;19509:37;19486:9;19528:6;19509:37;:::i;:::-;19555:46;19597:2;19586:9;19582:18;19574:6;19555:46;:::i;20030:301::-;20071:3;20103:25;20122:5;87:12;;14:87;20103:25;20203:3;20224:67;20284:6;20277:5;20270:4;20263:5;20259:16;20224:67;:::i;:::-;20307:18;;20030:301;-1:-1:-1;;;20030:301:69:o;20336:290::-;20509:58;20563:3;20555:6;20509:58;:::i;:::-;20491:3;20583:37;20617:1;20612:3;20608:11;20600:6;20583:37;:::i;20631:189::-;20760:3;20785:29;20810:3;20802:6;20785:29;:::i;20939:116::-;7690:13;;7683:21;21004:5;21001:30;20991:58;;21045:1;21042;21035:12;21060:170;21147:13;;;21194:30;21147:13;21194:30;:::i;:::-;;21060:170;;;;:::o;21235:306::-;21302:6;21355:2;21343:9;21334:7;21330:23;21326:32;21323:147;;;21381:79;411:2531:64;;;21381:79:69;21489:46;21527:7;21516:9;21489:46;:::i;21867:220::-;22016:2;22005:9;21998:21;21979:4;22036:45;22077:2;22066:9;22062:18;22054:6;22036:45;:::i",
"linkReferences": {}
},
"methodIdentifiers": {
"IS_TEST()": "fa7626d4",
"excludeArtifacts()": "b5508aa9",
"excludeContracts()": "e20c9f71",
"excludeSenders()": "1ed7831c",
"failed()": "ba414fa6",
"setUp()": "0a9254e4",
"targetArtifactSelectors()": "66d9a9a0",
"targetArtifacts()": "85226c81",
"targetContracts()": "3f7286f4",
"targetSelectors()": "916a17c6",
"targetSenders()": "3e5e3c23",
"testFullMath()": "95d28dde"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testFullMath\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestFullMath.sol\":\"TestFullMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"test/TestFullMath.sol\":{\"keccak256\":\"0xf5c777b70ca6f914c5b409e5d93459f3466e60967603b8d547854cb9452dde2c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d6d29e77450d02fee8e4673a0f3c3ae7867106237a700ca4be67f44c382561dc\",\"dweb:/ipfs/QmfUCkunhHnQCWJNnRq1DXQR7osqrScuHsxBozedT2rW7G\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string",
"indexed": false
}
],
"type": "event",
"name": "log",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address",
"indexed": false
}
],
"type": "event",
"name": "log_address",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "val",
"type": "uint256[]",
"indexed": false
}
],
"type": "event",
"name": "log_array",
"anonymous": false
},
{
"inputs": [
{
"internalType": "int256[]",
"name": "val",
"type": "int256[]",
"indexed": false
}
],
"type": "event",
"name": "log_array",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address[]",
"name": "val",
"type": "address[]",
"indexed": false
}
],
"type": "event",
"name": "log_array",
"anonymous": false
},
{
"inputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes",
"indexed": false
}
],
"type": "event",
"name": "log_bytes",
"anonymous": false
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32",
"indexed": false
}
],
"type": "event",
"name": "log_bytes32",
"anonymous": false
},
{
"inputs": [
{
"internalType": "int256",
"name": "",
"type": "int256",
"indexed": false
}
],
"type": "event",
"name": "log_int",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "address",
"name": "val",
"type": "address",
"indexed": false
}
],
"type": "event",
"name": "log_named_address",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "uint256[]",
"name": "val",
"type": "uint256[]",
"indexed": false
}
],
"type": "event",
"name": "log_named_array",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "int256[]",
"name": "val",
"type": "int256[]",
"indexed": false
}
],
"type": "event",
"name": "log_named_array",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "address[]",
"name": "val",
"type": "address[]",
"indexed": false
}
],
"type": "event",
"name": "log_named_array",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "bytes",
"name": "val",
"type": "bytes",
"indexed": false
}
],
"type": "event",
"name": "log_named_bytes",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "bytes32",
"name": "val",
"type": "bytes32",
"indexed": false
}
],
"type": "event",
"name": "log_named_bytes32",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "int256",
"name": "val",
"type": "int256",
"indexed": false
},
{
"internalType": "uint256",
"name": "decimals",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "log_named_decimal_int",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "uint256",
"name": "val",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "decimals",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "log_named_decimal_uint",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "int256",
"name": "val",
"type": "int256",
"indexed": false
}
],
"type": "event",
"name": "log_named_int",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "string",
"name": "val",
"type": "string",
"indexed": false
}
],
"type": "event",
"name": "log_named_string",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "key",
"type": "string",
"indexed": false
},
{
"internalType": "uint256",
"name": "val",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "log_named_uint",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string",
"indexed": false
}
],
"type": "event",
"name": "log_string",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "log_uint",
"anonymous": false
},
{
"inputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes",
"indexed": false
}
],
"type": "event",
"name": "logs",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "IS_TEST",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "excludeArtifacts",
"outputs": [
{
"internalType": "string[]",
"name": "excludedArtifacts_",
"type": "string[]"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "excludeContracts",
"outputs": [
{
"internalType": "address[]",
"name": "excludedContracts_",
"type": "address[]"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "excludeSenders",
"outputs": [
{
"internalType": "address[]",
"name": "excludedSenders_",
"type": "address[]"
}
]
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "failed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [],
"stateMutability": "pure",
"type": "function",
"name": "setUp"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "targetArtifactSelectors",
"outputs": [
{
"internalType": "struct StdInvariant.FuzzSelector[]",
"name": "targetedArtifactSelectors_",
"type": "tuple[]",
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
]
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "targetArtifacts",
"outputs": [
{
"internalType": "string[]",
"name": "targetedArtifacts_",
"type": "string[]"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "targetContracts",
"outputs": [
{
"internalType": "address[]",
"name": "targetedContracts_",
"type": "address[]"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "targetSelectors",
"outputs": [
{
"internalType": "struct StdInvariant.FuzzSelector[]",
"name": "targetedSelectors_",
"type": "tuple[]",
"components": [
{
"internalType": "address",
"name": "addr",
"type": "address"
},
{
"internalType": "bytes4[]",
"name": "selectors",
"type": "bytes4[]"
}
]
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "targetSenders",
"outputs": [
{
"internalType": "address[]",
"name": "targetedSenders_",
"type": "address[]"
}
]
},
{
"inputs": [],
"stateMutability": "pure",
"type": "function",
"name": "testFullMath"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"@uniswap/v3-core/=lib_uniswap/v3-core/",
"@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"v3-core/=lib_uniswap/v3-core/",
"v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
],
"optimizer": {
"runs": 999999999,
"details": {
"peephole": true,
"inliner": true,
"jumpdestRemover": true,
"orderLiterals": true,
"deduplicate": true,
"cse": true,
"constantOptimizer": true,
"yul": true,
"yulDetails": {
"stackAllocation": true,
"optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
}
}
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"test/TestFullMath.sol": "TestFullMath"
},
"libraries": {}
},
"sources": {
"lib/forge-std/lib/ds-test/src/test.sol": {
"keccak256": "0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b",
"urls": [
"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240",
"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"
],
"license": "GPL-3.0-or-later"
},
"lib/forge-std/src/Base.sol": {
"keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c",
"urls": [
"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224",
"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"
],
"license": "MIT"
},
"lib/forge-std/src/StdAssertions.sol": {
"keccak256": "0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60",
"urls": [
"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b",
"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"
],
"license": "MIT"
},
"lib/forge-std/src/StdChains.sol": {
"keccak256": "0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6",
"urls": [
"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d",
"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"
],
"license": "MIT"
},
"lib/forge-std/src/StdCheats.sol": {
"keccak256": "0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5",
"urls": [
"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a",
"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"
],
"license": "MIT"
},
"lib/forge-std/src/StdError.sol": {
"keccak256": "0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77",
"urls": [
"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6",
"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"
],
"license": "MIT"
},
"lib/forge-std/src/StdInvariant.sol": {
"keccak256": "0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1",
"urls": [
"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c",
"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"
],
"license": "MIT"
},
"lib/forge-std/src/StdJson.sol": {
"keccak256": "0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b",
"urls": [
"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c",
"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"
],
"license": "MIT"
},
"lib/forge-std/src/StdMath.sol": {
"keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2",
"urls": [
"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92",
"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"
],
"license": "MIT"
},
"lib/forge-std/src/StdStorage.sol": {
"keccak256": "0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d",
"urls": [
"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26",
"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"
],
"license": "MIT"
},
"lib/forge-std/src/StdStyle.sol": {
"keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d",
"urls": [
"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8",
"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"
],
"license": "MIT"
},
"lib/forge-std/src/StdUtils.sol": {
"keccak256": "0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1",
"urls": [
"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140",
"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"
],
"license": "MIT"
},
"lib/forge-std/src/Test.sol": {
"keccak256": "0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24",
"urls": [
"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb",
"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"
],
"license": "MIT"
},
"lib/forge-std/src/Vm.sol": {
"keccak256": "0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5",
"urls": [
"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c",
"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"
],
"license": "MIT"
},
"lib/forge-std/src/console.sol": {
"keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba",
"urls": [
"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70",
"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"
],
"license": "MIT"
},
"lib/forge-std/src/console2.sol": {
"keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea",
"urls": [
"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973",
"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"
],
"license": "MIT"
},
"lib/forge-std/src/interfaces/IMulticall3.sol": {
"keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a",
"urls": [
"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0",
"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"
],
"license": "MIT"
},
"lib/forge-std/src/safeconsole.sol": {
"keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381",
"urls": [
"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae",
"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"
],
"license": "MIT"
},
"lib_uniswap/v3-core/contracts/libraries/FullMath.sol": {
"keccak256": "0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be",
"urls": [
"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d",
"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2"
],
"license": "MIT"
},
"test/TestFullMath.sol": {
"keccak256": "0xf5c777b70ca6f914c5b409e5d93459f3466e60967603b8d547854cb9452dde2c",
"urls": [
"bzz-raw://d6d29e77450d02fee8e4673a0f3c3ae7867106237a700ca4be67f44c382561dc",
"dweb:/ipfs/QmfUCkunhHnQCWJNnRq1DXQR7osqrScuHsxBozedT2rW7G"
],
"license": "UNLICENSED"
}
},
"version": 1
},
"ast": {
"absolutePath": "test/TestFullMath.sol",
"id": 50395,
"exportedSymbols": {
"DSTest": [
2291
],
"FullMath": [
44519
],
"StdAssertions": [
3823
],
"StdChains": [
4516
],
"StdCheats": [
7334
],
"StdInvariant": [
7624
],
"StdStorage": [
8374
],
"StdStyle": [
11038
],
"StdUtils": [
11886
],
"Test": [
11937
],
"TestBase": [
2357
],
"TestFullMath": [
50394
],
"Vm": [
13464
],
"console": [
21528
],
"console2": [
29653
],
"safeconsole": [
42891
],
"stdError": [
7400
],
"stdJson": [
8200
],
"stdMath": [
8342
],
"stdStorage": [
9827
]
},
"nodeType": "SourceUnit",
"src": "39:2904:64",
"nodes": [
{
"id": 50071,
"nodeType": "PragmaDirective",
"src": "39:24:64",
"nodes": [],
"literals": [
"solidity",
">=",
"0.8",
".0"
]
},
{
"id": 50072,
"nodeType": "PragmaDirective",
"src": "64:19:64",
"nodes": [],
"literals": [
"abicoder",
"v2"
]
},
{
"id": 50073,
"nodeType": "ImportDirective",
"src": "85:28:64",
"nodes": [],
"absolutePath": "lib/forge-std/src/Test.sol",
"file": "forge-std/Test.sol",
"nameLocation": "-1:-1:-1",
"scope": 50395,
"sourceUnit": 11938,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 50074,
"nodeType": "ImportDirective",
"src": "114:59:64",
"nodes": [],
"absolutePath": "lib_uniswap/v3-core/contracts/libraries/FullMath.sol",
"file": "@uniswap/v3-core/contracts/libraries/FullMath.sol",
"nameLocation": "-1:-1:-1",
"scope": 50395,
"sourceUnit": 44520,
"symbolAliases": [],
"unitAlias": ""
},
{
"id": 50394,
"nodeType": "ContractDefinition",
"src": "411:2531:64",
"nodes": [
{
"id": 50086,
"nodeType": "FunctionDefinition",
"src": "448:78:64",
"nodes": [],
"body": {
"id": 50085,
"nodeType": "Block",
"src": "477:49:64",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "46756c6c4d6174682073657475702829",
"id": 50082,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "500:18:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8afedb989039003b0376cd1dbc850e57e440163d8be8a50c0f75285c48de4817",
"typeString": "literal_string \"FullMath setup()\""
},
"value": "FullMath setup()"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_8afedb989039003b0376cd1dbc850e57e440163d8be8a50c0f75285c48de4817",
"typeString": "literal_string \"FullMath setup()\""
}
],
"expression": {
"id": 50079,
"name": "console2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29653,
"src": "487:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
"typeString": "type(library console2)"
}
},
"id": 50081,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "496:3:64",
"memberName": "log",
"nodeType": "MemberAccess",
"referencedDeclaration": 22167,
"src": "487:12:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 50083,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "487:32:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50084,
"nodeType": "ExpressionStatement",
"src": "487:32:64"
}
]
},
"functionSelector": "0a9254e4",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "setUp",
"nameLocation": "457:5:64",
"parameters": {
"id": 50077,
"nodeType": "ParameterList",
"parameters": [],
"src": "462:2:64"
},
"returnParameters": {
"id": 50078,
"nodeType": "ParameterList",
"parameters": [],
"src": "477:0:64"
},
"scope": 50394,
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
},
{
"id": 50393,
"nodeType": "FunctionDefinition",
"src": "532:2408:64",
"nodes": [],
"body": {
"id": 50392,
"nodeType": "Block",
"src": "568:2372:64",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"hexValue": "46756c6c4d617468207465737446756c6c4d6174682829",
"id": 50092,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "592:25:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_eec2f0dbfaf31ab996b148b23998e3d9fe9dc0948e1b13fb22fe19c2bc75a0d3",
"typeString": "literal_string \"FullMath testFullMath()\""
},
"value": "FullMath testFullMath()"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_eec2f0dbfaf31ab996b148b23998e3d9fe9dc0948e1b13fb22fe19c2bc75a0d3",
"typeString": "literal_string \"FullMath testFullMath()\""
}
],
"expression": {
"id": 50089,
"name": "console2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 29653,
"src": "579:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_console2_$29653_$",
"typeString": "type(library console2)"
}
},
"id": 50091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "588:3:64",
"memberName": "log",
"nodeType": "MemberAccess",
"referencedDeclaration": 22167,
"src": "579:12:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 50093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "579:39:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50094,
"nodeType": "ExpressionStatement",
"src": "579:39:64"
},
{
"assignments": [
50096
],
"declarations": [
{
"constant": false,
"id": 50096,
"mutability": "mutable",
"name": "MinusOne",
"nameLocation": "659:8:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "651:16:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50095,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "651:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50105,
"initialValue": {
"arguments": [
{
"arguments": [
{
"id": 50102,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "-",
"prefix": true,
"src": "685:2:64",
"subExpression": {
"hexValue": "31",
"id": 50101,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "686:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"typeDescriptions": {
"typeIdentifier": "t_rational_minus_1_by_1",
"typeString": "int_const -1"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_minus_1_by_1",
"typeString": "int_const -1"
}
],
"id": 50100,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "678:6:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_int256_$",
"typeString": "type(int256)"
},
"typeName": {
"id": 50099,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "678:6:64",
"typeDescriptions": {}
}
},
"id": 50103,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "678:10:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_int256",
"typeString": "int256"
}
],
"id": 50098,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "670:7:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 50097,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "670:7:64",
"typeDescriptions": {}
}
},
"id": 50104,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "670:19:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "651:38:64"
},
{
"assignments": [
50107
],
"declarations": [
{
"constant": false,
"id": 50107,
"mutability": "mutable",
"name": "MAXneg",
"nameLocation": "707:6:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "699:14:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50106,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "699:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50111,
"initialValue": {
"commonType": {
"typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
"typeString": "int_const 5789...(69 digits omitted)...9968"
},
"id": 50110,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"hexValue": "32",
"id": 50108,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "716:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"hexValue": "323535",
"id": 50109,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "719:3:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_255_by_1",
"typeString": "int_const 255"
},
"value": "255"
},
"src": "716:6:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
"typeString": "int_const 5789...(69 digits omitted)...9968"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "699:23:64"
},
{
"assignments": [
50113
],
"declarations": [
{
"constant": false,
"id": 50113,
"mutability": "mutable",
"name": "MAXpos",
"nameLocation": "740:6:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "732:14:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50112,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "732:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50116,
"initialValue": {
"id": 50115,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "~",
"prefix": true,
"src": "749:7:64",
"subExpression": {
"id": 50114,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "750:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "732:24:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50122,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50118,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "802:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50121,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50119,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "812:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">>",
"rightExpression": {
"hexValue": "31",
"id": 50120,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "822:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "812:11:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "802:21:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 50117,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "794:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 50123,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "794:30:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50124,
"nodeType": "ExpressionStatement",
"src": "794:30:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50130,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50126,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "842:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50127,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "852:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "31",
"id": 50128,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "859:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "852:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "842:18:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 50125,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "834:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 50131,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "834:27:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50132,
"nodeType": "ExpressionStatement",
"src": "834:27:64"
},
{
"id": 50141,
"nodeType": "UncheckedBlock",
"src": "871:58:64",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50134,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "902:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "31",
"id": 50135,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "911:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "902:10:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 50137,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "916:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "902:15:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 50133,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "894:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 50139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "894:24:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50140,
"nodeType": "ExpressionStatement",
"src": "894:24:64"
}
]
},
{
"assignments": [
50143
],
"declarations": [
{
"constant": false,
"id": 50143,
"mutability": "mutable",
"name": "q",
"nameLocation": "989:1:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "981:9:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50142,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "981:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50150,
"initialValue": {
"arguments": [
{
"id": 50146,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1009:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50147,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1017:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50148,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1025:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50144,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "993:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1002:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "993:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50149,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "993:39:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "981:51:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50152,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1057:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50153,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1062:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1057:11:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "636173652031206661696c6564",
"id": 50155,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1070:15:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_3ddcea50fc5ef33e45642ded380c51f36ea1621e33b4388bd460701893300640",
"typeString": "literal_string \"case 1 failed\""
},
"value": "case 1 failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_3ddcea50fc5ef33e45642ded380c51f36ea1621e33b4388bd460701893300640",
"typeString": "literal_string \"case 1 failed\""
}
],
"id": 50151,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1049:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50156,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1049:37:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50157,
"nodeType": "ExpressionStatement",
"src": "1049:37:64"
},
{
"expression": {
"id": 50165,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50158,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1147:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50161,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1167:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50162,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1177:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50163,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1187:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50159,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1151:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1160:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1151:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50164,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1151:45:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1147:49:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50166,
"nodeType": "ExpressionStatement",
"src": "1147:49:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50168,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1214:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50169,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1219:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1214:13:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "636173652032206661696c6564",
"id": 50171,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1229:15:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d5216c154e245ea5c181bcf7b7f7e626d9a8419a6725359dd4e53d6fb08cf0ba",
"typeString": "literal_string \"case 2 failed\""
},
"value": "case 2 failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_d5216c154e245ea5c181bcf7b7f7e626d9a8419a6725359dd4e53d6fb08cf0ba",
"typeString": "literal_string \"case 2 failed\""
}
],
"id": 50167,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1206:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1206:39:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50173,
"nodeType": "ExpressionStatement",
"src": "1206:39:64"
},
{
"expression": {
"id": 50181,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50174,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1307:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50177,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1327:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50178,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1335:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50179,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1343:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50175,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1311:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1320:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1311:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1311:39:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1307:43:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50182,
"nodeType": "ExpressionStatement",
"src": "1307:43:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50184,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1368:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50185,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1373:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1368:11:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "636173652033206661696c6564",
"id": 50187,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1381:15:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_fc9505b9d94b88cf27b7445eb7b862caf485fdca567e161c7a91789fdf432953",
"typeString": "literal_string \"case 3 failed\""
},
"value": "case 3 failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_fc9505b9d94b88cf27b7445eb7b862caf485fdca567e161c7a91789fdf432953",
"typeString": "literal_string \"case 3 failed\""
}
],
"id": 50183,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1360:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50188,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1360:37:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50189,
"nodeType": "ExpressionStatement",
"src": "1360:37:64"
},
{
"expression": {
"id": 50197,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50190,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1448:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50193,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1468:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50194,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1476:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50195,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1484:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50191,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1452:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50192,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1461:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1452:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1452:39:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1448:43:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50198,
"nodeType": "ExpressionStatement",
"src": "1448:43:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50202,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50200,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1509:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50201,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1514:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1509:11:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203461206661696c6564",
"id": 50203,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1522:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_bcc74364cfcf9b6bc59e07bac2579d86a2ec48c31ebc343f15bfe16d64026937",
"typeString": "literal_string \"case 4a failed\""
},
"value": "case 4a failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_bcc74364cfcf9b6bc59e07bac2579d86a2ec48c31ebc343f15bfe16d64026937",
"typeString": "literal_string \"case 4a failed\""
}
],
"id": 50199,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1501:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1501:38:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50205,
"nodeType": "ExpressionStatement",
"src": "1501:38:64"
},
{
"expression": {
"id": 50213,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50206,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1549:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50209,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1569:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50210,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1577:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50211,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1585:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50207,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1553:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1562:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1553:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50212,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1553:39:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1549:43:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50214,
"nodeType": "ExpressionStatement",
"src": "1549:43:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50218,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50216,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1610:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50217,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1615:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1610:11:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203462206661696c6564",
"id": 50219,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1623:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_697e122b09d93ae3a6bef89775cdc3e8ffb6167d75aa91de6d73ab631f0d565a",
"typeString": "literal_string \"case 4b failed\""
},
"value": "case 4b failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_697e122b09d93ae3a6bef89775cdc3e8ffb6167d75aa91de6d73ab631f0d565a",
"typeString": "literal_string \"case 4b failed\""
}
],
"id": 50215,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1602:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50220,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1602:38:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50221,
"nodeType": "ExpressionStatement",
"src": "1602:38:64"
},
{
"expression": {
"id": 50229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50222,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1650:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50225,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1670:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50226,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1678:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50227,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1688:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50223,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1654:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50224,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1663:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1654:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1654:41:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1650:45:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50230,
"nodeType": "ExpressionStatement",
"src": "1650:45:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50234,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50232,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1713:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50233,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1718:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1713:13:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203463206661696c6564",
"id": 50235,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1728:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_84b646916d2b2e04274c4975403f09d9b74eeaccf973461ffe7bdcfb0ce2f6e4",
"typeString": "literal_string \"case 4c failed\""
},
"value": "case 4c failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_84b646916d2b2e04274c4975403f09d9b74eeaccf973461ffe7bdcfb0ce2f6e4",
"typeString": "literal_string \"case 4c failed\""
}
],
"id": 50231,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1705:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50236,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1705:40:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50237,
"nodeType": "ExpressionStatement",
"src": "1705:40:64"
},
{
"expression": {
"id": 50245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50238,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1755:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50241,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1775:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50242,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1783:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50243,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1793:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50239,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1759:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1768:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1759:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1759:41:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1755:45:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50246,
"nodeType": "ExpressionStatement",
"src": "1755:45:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50248,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1818:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50249,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1823:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1818:13:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203464206661696c6564",
"id": 50251,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1833:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_79b9954a1dd2e68f7e6082e9885fb8a02b8302fd9f586c5ad6bf7ebc3195bbc6",
"typeString": "literal_string \"case 4d failed\""
},
"value": "case 4d failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_79b9954a1dd2e68f7e6082e9885fb8a02b8302fd9f586c5ad6bf7ebc3195bbc6",
"typeString": "literal_string \"case 4d failed\""
}
],
"id": 50247,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1810:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50252,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1810:40:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50253,
"nodeType": "ExpressionStatement",
"src": "1810:40:64"
},
{
"expression": {
"id": 50261,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50254,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1860:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50257,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1880:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50258,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1888:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50259,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1898:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50255,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1864:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50256,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1873:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1864:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1864:43:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1860:47:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50262,
"nodeType": "ExpressionStatement",
"src": "1860:47:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50264,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1925:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50265,
"name": "MAXpos",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50113,
"src": "1930:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1925:11:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203465206661696c6564",
"id": 50267,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1938:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e8772dac87c4cb3f3d254026d952404dea24e51dc5e874825b96ff3eb8e8a936",
"typeString": "literal_string \"case 4e failed\""
},
"value": "case 4e failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e8772dac87c4cb3f3d254026d952404dea24e51dc5e874825b96ff3eb8e8a936",
"typeString": "literal_string \"case 4e failed\""
}
],
"id": 50263,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1917:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1917:38:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50269,
"nodeType": "ExpressionStatement",
"src": "1917:38:64"
},
{
"expression": {
"id": 50277,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50270,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "1965:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50273,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "1985:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50274,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "1993:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50275,
"name": "MinusOne",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50096,
"src": "2003:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50271,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "1969:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1978:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "1969:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1969:43:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1965:47:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50278,
"nodeType": "ExpressionStatement",
"src": "1965:47:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50280,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "2030:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50281,
"name": "MAXneg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50107,
"src": "2035:6:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2030:11:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203466206661696c6564",
"id": 50283,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2043:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_940276a936d3d17ab9e35739f4e5e11a964ab258548eaff0bfa6376ea8fa656c",
"typeString": "literal_string \"case 4f failed\""
},
"value": "case 4f failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_940276a936d3d17ab9e35739f4e5e11a964ab258548eaff0bfa6376ea8fa656c",
"typeString": "literal_string \"case 4f failed\""
}
],
"id": 50279,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2022:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50284,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2022:38:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50285,
"nodeType": "ExpressionStatement",
"src": "2022:38:64"
},
{
"assignments": [
50287
],
"declarations": [
{
"constant": false,
"id": 50287,
"mutability": "mutable",
"name": "a",
"nameLocation": "2155:1:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2147:9:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50286,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2147:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50288,
"nodeType": "VariableDeclarationStatement",
"src": "2147:9:64"
},
{
"assignments": [
50290
],
"declarations": [
{
"constant": false,
"id": 50290,
"mutability": "mutable",
"name": "b",
"nameLocation": "2174:1:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2166:9:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50289,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2166:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50291,
"nodeType": "VariableDeclarationStatement",
"src": "2166:9:64"
},
{
"assignments": [
50293
],
"declarations": [
{
"constant": false,
"id": 50293,
"mutability": "mutable",
"name": "d",
"nameLocation": "2193:1:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2185:9:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50292,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2185:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50294,
"nodeType": "VariableDeclarationStatement",
"src": "2185:9:64"
},
{
"assignments": [
50296
],
"declarations": [
{
"constant": false,
"id": 50296,
"mutability": "mutable",
"name": "expected",
"nameLocation": "2212:8:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2204:16:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50295,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2204:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50297,
"nodeType": "VariableDeclarationStatement",
"src": "2204:16:64"
},
{
"expression": {
"id": 50300,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50298,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50287,
"src": "2231:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "333136393232313031363331353537333535313832333138343631373831323438303130383739363830363433303732",
"id": 50299,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2235:48:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_316922101631557355182318461781248010879680643072_by_1",
"typeString": "int_const 3169...(40 digits omitted)...3072"
},
"value": "316922101631557355182318461781248010879680643072"
},
"src": "2231:52:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50301,
"nodeType": "ExpressionStatement",
"src": "2231:52:64"
},
{
"expression": {
"id": 50304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50302,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50290,
"src": "2303:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "32363934353139393938303935323037323237383033313735383833373430",
"id": 50303,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2307:31:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_2694519998095207227803175883740_by_1",
"typeString": "int_const 2694519998095207227803175883740"
},
"value": "2694519998095207227803175883740"
},
"src": "2303:35:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50305,
"nodeType": "ExpressionStatement",
"src": "2303:35:64"
},
{
"expression": {
"id": 50308,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50306,
"name": "d",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50293,
"src": "2358:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "3739323332303139303835333936383535333935353039313630363830363931363838",
"id": 50307,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2362:35:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_79232019085396855395509160680691688_by_1",
"typeString": "int_const 7923...(27 digits omitted)...1688"
},
"value": "79232019085396855395509160680691688"
},
"src": "2358:39:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50309,
"nodeType": "ExpressionStatement",
"src": "2358:39:64"
},
{
"expression": {
"id": 50312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50310,
"name": "expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50296,
"src": "2417:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "3130373737383736383034363331313730373534323439353233313036333933393132343532383036313231",
"id": 50311,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2428:44:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_10777876804631170754249523106393912452806121_by_1",
"typeString": "int_const 1077...(36 digits omitted)...6121"
},
"value": "10777876804631170754249523106393912452806121"
},
"src": "2417:55:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50313,
"nodeType": "ExpressionStatement",
"src": "2417:55:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"id": 50317,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50287,
"src": "2518:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50318,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50290,
"src": "2521:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50319,
"name": "d",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50293,
"src": "2524:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50315,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "2502:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50316,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2511:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "2502:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50320,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2502:24:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50321,
"name": "expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50296,
"src": "2530:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2502:36:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "436173652035206661696c6564",
"id": 50323,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2540:15:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4eb7719bdac677452ce23a381b5138b31aa57999011d66f682d39ae4354761a1",
"typeString": "literal_string \"Case 5 failed\""
},
"value": "Case 5 failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4eb7719bdac677452ce23a381b5138b31aa57999011d66f682d39ae4354761a1",
"typeString": "literal_string \"Case 5 failed\""
}
],
"id": 50314,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2493:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2493:63:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50325,
"nodeType": "ExpressionStatement",
"src": "2493:63:64"
},
{
"assignments": [
50327
],
"declarations": [
{
"constant": false,
"id": 50327,
"mutability": "mutable",
"name": "aExp",
"nameLocation": "2616:4:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2608:12:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50326,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2608:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50328,
"nodeType": "VariableDeclarationStatement",
"src": "2608:12:64"
},
{
"assignments": [
50330
],
"declarations": [
{
"constant": false,
"id": 50330,
"mutability": "mutable",
"name": "bExp",
"nameLocation": "2638:4:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2630:12:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50329,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2630:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50331,
"nodeType": "VariableDeclarationStatement",
"src": "2630:12:64"
},
{
"assignments": [
50333
],
"declarations": [
{
"constant": false,
"id": 50333,
"mutability": "mutable",
"name": "dExp",
"nameLocation": "2660:4:64",
"nodeType": "VariableDeclaration",
"scope": 50392,
"src": "2652:12:64",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 50332,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2652:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 50334,
"nodeType": "VariableDeclarationStatement",
"src": "2652:12:64"
},
{
"expression": {
"id": 50337,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50335,
"name": "aExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50327,
"src": "2675:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "323535",
"id": 50336,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2682:3:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_255_by_1",
"typeString": "int_const 255"
},
"value": "255"
},
"src": "2675:10:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50338,
"nodeType": "ExpressionStatement",
"src": "2675:10:64"
},
{
"expression": {
"id": 50341,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50339,
"name": "bExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50330,
"src": "2695:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "323535",
"id": 50340,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2702:3:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_255_by_1",
"typeString": "int_const 255"
},
"value": "255"
},
"src": "2695:10:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50342,
"nodeType": "ExpressionStatement",
"src": "2695:10:64"
},
{
"expression": {
"id": 50345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50343,
"name": "dExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50333,
"src": "2715:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "323535",
"id": 50344,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2722:3:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_255_by_1",
"typeString": "int_const 255"
},
"value": "255"
},
"src": "2715:10:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50346,
"nodeType": "ExpressionStatement",
"src": "2715:10:64"
},
{
"expression": {
"id": 50351,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50347,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50287,
"src": "2736:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50350,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "32",
"id": 50348,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2740:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"id": 50349,
"name": "aExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50327,
"src": "2743:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2740:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2736:11:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50352,
"nodeType": "ExpressionStatement",
"src": "2736:11:64"
},
{
"expression": {
"id": 50357,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50353,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50290,
"src": "2757:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50356,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "32",
"id": 50354,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2761:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"id": 50355,
"name": "bExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50330,
"src": "2764:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2761:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2757:11:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50358,
"nodeType": "ExpressionStatement",
"src": "2757:11:64"
},
{
"expression": {
"id": 50363,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50359,
"name": "d",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50293,
"src": "2778:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "32",
"id": 50360,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2782:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"id": 50361,
"name": "dExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50333,
"src": "2785:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2782:7:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2778:11:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50364,
"nodeType": "ExpressionStatement",
"src": "2778:11:64"
},
{
"expression": {
"id": 50374,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50365,
"name": "expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50296,
"src": "2799:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50373,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"hexValue": "32",
"id": 50366,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2810:1:64",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50371,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50369,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50367,
"name": "aExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50327,
"src": "2814:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 50368,
"name": "bExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50330,
"src": "2819:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2814:9:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 50370,
"name": "dExp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50333,
"src": "2824:4:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2814:14:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 50372,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "2813:16:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2810:19:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2799:30:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50375,
"nodeType": "ExpressionStatement",
"src": "2799:30:64"
},
{
"expression": {
"id": 50383,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 50376,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "2840:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 50379,
"name": "a",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50287,
"src": "2860:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50380,
"name": "b",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50290,
"src": "2862:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 50381,
"name": "d",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50293,
"src": "2864:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 50377,
"name": "FullMath",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44519,
"src": "2844:8:64",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
"typeString": "type(library FullMath)"
}
},
"id": 50378,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2853:6:64",
"memberName": "mulDiv",
"nodeType": "MemberAccess",
"referencedDeclaration": 44474,
"src": "2844:15:64",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
}
},
"id": 50382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2844:22:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2840:26:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 50384,
"nodeType": "ExpressionStatement",
"src": "2840:26:64"
},
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 50388,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 50386,
"name": "q",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50143,
"src": "2891:1:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"id": 50387,
"name": "expected",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 50296,
"src": "2896:8:64",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2891:13:64",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "63617365203130206661696c6564",
"id": 50389,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2906:16:64",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c42564ac746edea2615e8a1eca6d242d8d7d1f4ad6aa44eafc8c3dfa2923ea3c",
"typeString": "literal_string \"case 10 failed\""
},
"value": "case 10 failed"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_c42564ac746edea2615e8a1eca6d242d8d7d1f4ad6aa44eafc8c3dfa2923ea3c",
"typeString": "literal_string \"case 10 failed\""
}
],
"id": 50385,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2883:7:64",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 50390,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2883:40:64",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 50391,
"nodeType": "ExpressionStatement",
"src": "2883:40:64"
}
]
},
"functionSelector": "95d28dde",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "testFullMath",
"nameLocation": "541:12:64",
"parameters": {
"id": 50087,
"nodeType": "ParameterList",
"parameters": [],
"src": "553:2:64"
},
"returnParameters": {
"id": 50088,
"nodeType": "ParameterList",
"parameters": [],
"src": "568:0:64"
},
"scope": 50394,
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 50075,
"name": "Test",
"nameLocations": [
"436:4:64"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 11937,
"src": "436:4:64"
},
"id": 50076,
"nodeType": "InheritanceSpecifier",
"src": "436:4:64"
}
],
"canonicalName": "TestFullMath",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"internalFunctionIDs": {
"21582": 1
},
"linearizedBaseContracts": [
50394,
11937,
2357,
2354,
11886,
7624,
7334,
6570,
4516,
3823,
2291
],
"name": "TestFullMath",
"nameLocation": "420:12:64",
"scope": 50395,
"usedErrors": [],
"usedEvents": [
5,
9,
13,
17,
21,
25,
29,
33,
39,
45,
53,
61,
67,
73,
79,
85,
2418,
2423,
2428,
2435,
2442,
2449
]
}
],
"license": "UNLICENSED"
},
"id": 64
}