{"_format":"hh3-sol-build-info-output-1","id":"solc-0_8_35-3c6720e352a8805a57f3d5d8111ba91dcd52bec9","output":{"contracts":{"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC1363.sol":{"IERC1363":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}}}},"npm/@openzeppelin/contracts@5.5.0/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}}},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}}}},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"SafeERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"}],"evm":{"bytecode":{"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122009648e35cc47f4f0dbb99a38b65133d4340759404d3a0c18d9af1976cec11f2564736f6c63430008230033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD PUSH5 0x8E35CC47F4 CREATE 0xDB 0xB9 SWAP11 CODESIZE 0xB6 MLOAD CALLER 0xD4 CALLVALUE SMOD MSIZE BLOCKHASH 0x4D GASPRICE 0xC XOR 0xD9 0xAF NOT PUSH23 0xCEC11F2564736F6C634300082300330000000000000000 ","sourceMap":"698:12615:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;698:12615:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122009648e35cc47f4f0dbb99a38b65133d4340759404d3a0c18d9af1976cec11f2564736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD PUSH5 0x8E35CC47F4 CREATE 0xDB 0xB9 SWAP11 CODESIZE 0xB6 MLOAD CALLER 0xD4 CALLVALUE SMOD MSIZE BLOCKHASH 0x4D GASPRICE 0xC XOR 0xD9 0xAF NOT PUSH23 0xCEC11F2564736F6C634300082300330000000000000000 ","sourceMap":"698:12615:7:-:0;;;;;;;;"},"methodIdentifiers":{}}}},"npm/@openzeppelin/contracts@5.5.0/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}}}},"npm/@openzeppelin/contracts@5.5.0/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220178740ec846d829c53dc81931229ed7e78a814c1b2996314b73dd84b5df6962e64736f6c63430008230033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR DUP8 BLOCKHASH EOFCREATE 0x84 PUSH14 0x829C53DC81931229ED7E78A814C1 0xB2 SWAP10 PUSH4 0x14B73DD8 0x4B TSTORE 0xF6 SWAP7 0x2E PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"657:1315:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220178740ec846d829c53dc81931229ed7e78a814c1b2996314b73dd84b5df6962e64736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR DUP8 BLOCKHASH EOFCREATE 0x84 PUSH14 0x829C53DC81931229ED7E78A814C1 0xB2 SWAP10 PUSH4 0x14B73DD8 0x4B TSTORE 0xF6 SWAP7 0x2E PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"657:1315:9:-:0;;;;;;;;"},"methodIdentifiers":{}}}},"npm/@openzeppelin/contracts@5.5.0/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}}}},"npm/@openzeppelin/contracts@5.5.0/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206e5a7fe9b525c570d99db3bb22df948abb9581dbf6b5cffe9e73222aee6652d264736f6c63430008230033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x5A7FE9B525C570D99DB3BB22DF948A 0xBB SWAP6 DUP2 0xDB 0xF6 0xB5 0xCF INVALID SWAP15 PUSH20 0x222AEE6652D264736F6C63430008230033000000 ","sourceMap":"281:32081:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:32081:11;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212206e5a7fe9b525c570d99db3bb22df948abb9581dbf6b5cffe9e73222aee6652d264736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x5A7FE9B525C570D99DB3BB22DF948A 0xBB SWAP6 DUP2 0xDB 0xF6 0xB5 0xCF INVALID SWAP15 PUSH20 0x222AEE6652D264736F6C63430008230033000000 ","sourceMap":"281:32081:11:-:0;;;;;;;;"},"methodIdentifiers":{}}}},"npm/@openzeppelin/contracts@5.5.0/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"evm":{"bytecode":{"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212209147120ed83732c64c7caeae42c4bf712d1f162f8608926554d5d36bd1e2a39064736f6c63430008230033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 SELFBALANCE SLT 0xE 0xD8 CALLDATACOPY ORIGIN 0xC6 0x4C PUSH29 0xAEAE42C4BF712D1F162F8608926554D5D36BD1E2A39064736F6C634300 ADDMOD 0x23 STOP CALLER ","sourceMap":"769:34173:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:12;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212209147120ed83732c64c7caeae42c4bf712d1f162f8608926554d5d36bd1e2a39064736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 SELFBALANCE SLT 0xE 0xD8 CALLDATACOPY ORIGIN 0xC6 0x4C PUSH29 0xAEAE42C4BF712D1F162F8608926554D5D36BD1E2A39064736F6C634300 ADDMOD 0x23 STOP CALLER ","sourceMap":"769:34173:12:-:0;;;;;;;;"},"methodIdentifiers":{}}}},"npm/@uniswap/v3-core@1.0.1/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"IUniswapV3SwapCallback":{"abi":[{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}}}},"npm/@uniswap/v3-periphery@1.4.4/contracts/interfaces/ISwapRouter.sol":{"ISwapRouter":{"abi":[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}}}},"npm/solidity-bytes-utils@0.8.4/contracts/BytesLib.sol":{"BytesLib":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122091f620385ccaba44776eadc989fa7158c47843fb703583f10b6e1441cc0eaeac64736f6c63430008230033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xF6 KECCAK256 CODESIZE TLOAD 0xCA 0xBA PREVRANDAO PUSH24 0x6EADC989FA7158C47843FB703583F10B6E1441CC0EAEAC64 PUSH20 0x6F6C634300082300330000000000000000000000 ","sourceMap":"370:19069:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;370:19069:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122091f620385ccaba44776eadc989fa7158c47843fb703583f10b6e1441cc0eaeac64736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xF6 KECCAK256 CODESIZE TLOAD 0xCA 0xBA PREVRANDAO PUSH24 0x6EADC989FA7158C47843FB703583F10B6E1441CC0EAEAC64 PUSH20 0x6F6C634300082300330000000000000000000000 ","sourceMap":"370:19069:15:-:0;;;;;;;;"},"methodIdentifiers":{}}}},"project/contracts/CurveRoutes.sol":{"CurveRoutes":{"abi":[{"inputs":[],"name":"AtLeastOneRoute","type":"error"},{"inputs":[],"name":"CurveRouterCantBeZero","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"name":"InvalidRoute","type":"error"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"RouteNotFound","type":"error"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"TooManySwaps","type":"error"}],"evm":{"bytecode":{"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b769a51117827d89715cdd25c1709f6e7ad04585d58fbd3eeef2c0a227f200f664736f6c63430008230033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 PUSH10 0xA51117827D89715CDD25 0xC1 PUSH17 0x9F6E7AD04585D58FBD3EEEF2C0A227F200 0xF6 PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"839:4055:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;839:4055:16;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b769a51117827d89715cdd25c1709f6e7ad04585d58fbd3eeef2c0a227f200f664736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 PUSH10 0xA51117827D89715CDD25 0xC1 PUSH17 0x9F6E7AD04585D58FBD3EEEF2C0A227F200 0xF6 PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"839:4055:16:-:0;;;;;;;;"},"methodIdentifiers":{}}}},"project/contracts/P2PSwapRouter.sol":{"P2PSwapRouter":{"abi":[{"inputs":[{"internalType":"address","name":"onBehalfOf_","type":"address"},{"internalType":"address","name":"swapper_","type":"address"},{"internalType":"address","name":"pricer_","type":"address"},{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"internalType":"struct P2PSwapRouter.Price[]","name":"initialPrices","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AmountCannotBeZero","type":"error"},{"inputs":[],"name":"DeadlineInThePast","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"name":"InputAmountExceedsSlippage","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"OnlyPricerCanChangePrice","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"OnlySwapperCanSwap","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"name":"OutputAmountLessThanSlippage","type":"error"},{"inputs":[],"name":"RecipientCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"TokenCannotBeZero","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"PriceUpdated","type":"event"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"onBehalfOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setCurrentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561000f575f5ffd5b5060405161104738038061104783398101604081905261002e916101d1565b6001600160a01b0380841660a05282811660c05284166080525f5b8151811015610094575f828281518110610065576100656102ec565b6020026020010151905061008b815f01518260200151836040015161009e60201b60201c565b50600101610049565b5050505050610300565b6001600160a01b0383166100c55760405163165a825360e21b815260040160405180910390fd5b6001600160a01b0382166100ec5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10910160405180910390a3505050565b80516001600160a01b0381168114610160575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561019b5761019b610165565b60405290565b604051601f8201601f191681016001600160401b03811182821017156101c9576101c9610165565b604052919050565b5f5f5f5f608085870312156101e4575f5ffd5b6101ed8561014a565b93506101fb6020860161014a565b92506102096040860161014a565b60608601519092506001600160401b03811115610224575f5ffd5b8501601f81018713610234575f5ffd5b80516001600160401b0381111561024d5761024d610165565b61025c60208260051b016101a1565b8082825260208201915060206060840285010192508983111561027d575f5ffd5b6020840193505b828410156102de576060848b03121561029b575f5ffd5b6102a3610179565b6102ac8561014a565b81526102ba6020860161014a565b60208201526040850151604082015280835250602082019150606084019350610284565b969995985093965050505050565b634e487b7160e01b5f52603260045260245ffd5b60805160a05160c051610cf56103525f395f8181610169015261081601525f818160f4015261065901525f818160a40152818161036e015281816103b5015281816105bf01526105f10152610cf55ff3fe60806040526004361061008f575f3560e01c8063c04b8d5911610057578063c04b8d591461018b578063db16a5551461019e578063db3e2198146101bd578063f28c04981461018b578063fa461e33146101d0575f5ffd5b80631dc3af35146100935780632b3297f9146100e3578063414bf389146101165780634562e01514610137578063a6138ed914610158575b5f5ffd5b34801561009e575f5ffd5b506100c67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100ee575f5ffd5b506100c67f000000000000000000000000000000000000000000000000000000000000000081565b6101296101243660046109b8565b6101ef565b6040519081526020016100da565b348015610142575f5ffd5b506101566101513660046109ee565b6103fb565b005b348015610163575f5ffd5b506100c67f000000000000000000000000000000000000000000000000000000000000000081565b610129610199366004610a37565b610413565b3480156101a9575f5ffd5b506101296101b8366004610a71565b61042d565b6101296101cb3660046109b8565b610457565b3480156101db575f5ffd5b506101566101ea366004610aa2565b610635565b5f6101f861064e565b5f6102096080840160608501610b1e565b6001600160a01b03160361022f5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610257576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a001351161027b5760405163d11b25af60e01b815260040160405180910390fd5b5f61030f670de0b6b3a764000082806102976020880188610b1e565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906102ca9190610b1e565b6001600160a01b031681526020808201929092526040015f2054906102fa906102f590880188610b1e565b6106a7565b6103089060a0880135610b4b565b919061071e565b90506103246102f56040850160208601610b1e565b61032e9082610b76565b91508160c0840135808210156103655760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506103b09050337f000000000000000000000000000000000000000000000000000000000000000060a086013561039f6020880188610b1e565b6001600160a01b03169291906107cf565b6103f57f00000000000000000000000000000000000000000000000000000000000000006103e46080860160608701610b1e565b8461039f6040880160208901610b1e565b50919050565b61040361080b565b61040e838383610861565b505050565b5f60405163d623472560e01b815260040160405180910390fd5b6001600160a01b038083165f90815260208181526040808320938516835292905220545b92915050565b5f61046061064e565b5f6104716080840160608501610b1e565b6001600160a01b0316036104975760405162e18e7f60e71b815260040160405180910390fd5b42826080013510156104bf576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104e35760405163d11b25af60e01b815260040160405180910390fd5b5f61056881806104f66020870187610b1e565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8560200160208101906105299190610b1e565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a76400006102fa8660200160208101906102f59190610b1e565b905061057a6102f56020850185610b1e565b6105849082610b76565b91508160c0840135808211156105b657604051639a06025d60e01b81526004810192909252602482015260440161035c565b506105ec9050337f00000000000000000000000000000000000000000000000000000000000000008461039f6020880188610b1e565b6103f57f00000000000000000000000000000000000000000000000000000000000000006106206080860160608701610b1e565b60a086013561039f6040880160208901610b1e565b60405163d623472560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146106a45760405163275b1d0960e21b81526001600160a01b03909116600482015260240161035c565b50565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107089190610b95565b610713906012610bb5565b61045190600a610cb1565b5f5f5f61072b868661090d565b91509150815f0361074f5783818161074557610745610b62565b04925050506107c8565b818411610766576107666003851502601118610929565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b6107dd84848484600161093a565b61080557604051635274afe760e01b81526001600160a01b038516600482015260240161035c565b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146106a45760405163f30e2dd160e01b81526001600160a01b03909116600482015260240161035c565b6001600160a01b0383166108885760405163165a825360e21b815260040160405180910390fd5b6001600160a01b0382166108af5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10910160405180910390a3505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661099657838315161561098a573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f61010082840312156103f5575f5ffd5b5f61010082840312156109c9575f5ffd5b6107c883836109a7565b80356001600160a01b03811681146109e9575f5ffd5b919050565b5f5f5f60608486031215610a00575f5ffd5b610a09846109d3565b9250610a17602085016109d3565b9150604084013590509250925092565b5f60a082840312156103f5575f5ffd5b5f60208284031215610a47575f5ffd5b813567ffffffffffffffff811115610a5d575f5ffd5b610a6984828501610a27565b949350505050565b5f5f60408385031215610a82575f5ffd5b610a8b836109d3565b9150610a99602084016109d3565b90509250929050565b5f5f5f5f60608587031215610ab5575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610ad9575f5ffd5b8501601f81018713610ae9575f5ffd5b803567ffffffffffffffff811115610aff575f5ffd5b876020828401011115610b10575f5ffd5b949793965060200194505050565b5f60208284031215610b2e575f5ffd5b6107c8826109d3565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761045157610451610b37565b634e487b7160e01b5f52601260045260245ffd5b5f82610b9057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610ba5575f5ffd5b815160ff811681146107c8575f5ffd5b60ff828116828216039081111561045157610451610b37565b6001815b6001841115610c0957808504811115610bed57610bed610b37565b6001841615610bfb57908102905b60019390931c928002610bd2565b935093915050565b5f82610c1f57506001610451565b81610c2b57505f610451565b8160018114610c415760028114610c4b57610c67565b6001915050610451565b60ff841115610c5c57610c5c610b37565b50506001821b610451565b5060208310610133831016604e8410600b8410161715610c8a575081810a610451565b610c965f198484610bce565b805f1904821115610ca957610ca9610b37565b029392505050565b5f6107c860ff841683610c1156fea264697066735822122097a97471a893b688c2faa3e4b8cc1af2fad37d0aeae2a2d250b91d9b0f5afd3d64736f6c63430008230033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1047 CODESIZE SUB DUP1 PUSH2 0x1047 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x1D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0xA0 MSTORE DUP3 DUP2 AND PUSH1 0xC0 MSTORE DUP5 AND PUSH1 0x80 MSTORE PUSH0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x94 JUMPI PUSH0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x65 JUMPI PUSH2 0x65 PUSH2 0x2EC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x8B DUP2 PUSH0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP4 PUSH1 0x40 ADD MLOAD PUSH2 0x9E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x49 JUMP JUMPDEST POP POP POP POP POP PUSH2 0x300 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xC5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xEC JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x160 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x19B JUMPI PUSH2 0x19B PUSH2 0x165 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1C9 JUMPI PUSH2 0x1C9 PUSH2 0x165 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1ED DUP6 PUSH2 0x14A JUMP JUMPDEST SWAP4 POP PUSH2 0x1FB PUSH1 0x20 DUP7 ADD PUSH2 0x14A JUMP JUMPDEST SWAP3 POP PUSH2 0x209 PUSH1 0x40 DUP7 ADD PUSH2 0x14A JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x224 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x234 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24D JUMPI PUSH2 0x24D PUSH2 0x165 JUMP JUMPDEST PUSH2 0x25C PUSH1 0x20 DUP3 PUSH1 0x5 SHL ADD PUSH2 0x1A1 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 PUSH1 0x60 DUP5 MUL DUP6 ADD ADD SWAP3 POP DUP10 DUP4 GT ISZERO PUSH2 0x27D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x2DE JUMPI PUSH1 0x60 DUP5 DUP12 SUB SLT ISZERO PUSH2 0x29B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2A3 PUSH2 0x179 JUMP JUMPDEST PUSH2 0x2AC DUP6 PUSH2 0x14A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2BA PUSH1 0x20 DUP7 ADD PUSH2 0x14A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD SWAP4 POP PUSH2 0x284 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0xCF5 PUSH2 0x352 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x169 ADD MSTORE PUSH2 0x816 ADD MSTORE PUSH0 DUP2 DUP2 PUSH1 0xF4 ADD MSTORE PUSH2 0x659 ADD MSTORE PUSH0 DUP2 DUP2 PUSH1 0xA4 ADD MSTORE DUP2 DUP2 PUSH2 0x36E ADD MSTORE DUP2 DUP2 PUSH2 0x3B5 ADD MSTORE DUP2 DUP2 PUSH2 0x5BF ADD MSTORE PUSH2 0x5F1 ADD MSTORE PUSH2 0xCF5 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC04B8D59 GT PUSH2 0x57 JUMPI DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xDB16A555 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xFA461E33 EQ PUSH2 0x1D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1DC3AF35 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x2B3297F9 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0x4562E015 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xA6138ED9 EQ PUSH2 0x158 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x124 CALLDATASIZE PUSH1 0x4 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9EE JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x163 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x199 CALLDATASIZE PUSH1 0x4 PUSH2 0xA37 JUMP JUMPDEST PUSH2 0x413 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x129 PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA71 JUMP JUMPDEST PUSH2 0x42D JUMP JUMPDEST PUSH2 0x129 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x457 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x1EA CALLDATASIZE PUSH1 0x4 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x635 JUMP JUMPDEST PUSH0 PUSH2 0x1F8 PUSH2 0x64E JUMP JUMPDEST PUSH0 PUSH2 0x209 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x27B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x30F PUSH8 0xDE0B6B3A7640000 DUP3 DUP1 PUSH2 0x297 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2CA SWAP2 SWAP1 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x2FA SWAP1 PUSH2 0x2F5 SWAP1 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH2 0x308 SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xB4B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x71E JUMP JUMPDEST SWAP1 POP PUSH2 0x324 PUSH2 0x2F5 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x32E SWAP1 DUP3 PUSH2 0xB76 JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x365 JUMPI PUSH1 0x40 MLOAD PUSH4 0x296BA6E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x3B0 SWAP1 POP CALLER PUSH32 0x0 PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x39F PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x3F5 PUSH32 0x0 PUSH2 0x3E4 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xB1E JUMP JUMPDEST DUP5 PUSH2 0x39F PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xB1E JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x403 PUSH2 0x80B JUMP JUMPDEST PUSH2 0x40E DUP4 DUP4 DUP4 PUSH2 0x861 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x460 PUSH2 0x64E JUMP JUMPDEST PUSH0 PUSH2 0x471 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x497 JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x4BF JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x4E3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x568 DUP2 DUP1 PUSH2 0x4F6 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x529 SWAP2 SWAP1 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x2FA DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 POP PUSH2 0x57A PUSH2 0x2F5 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x584 SWAP1 DUP3 PUSH2 0xB76 JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 GT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9A06025D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x35C JUMP JUMPDEST POP PUSH2 0x5EC SWAP1 POP CALLER PUSH32 0x0 DUP5 PUSH2 0x39F PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x3F5 PUSH32 0x0 PUSH2 0x620 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x39F PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ PUSH2 0x6A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x275B1D09 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35C JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x708 SWAP2 SWAP1 PUSH2 0xB95 JUMP JUMPDEST PUSH2 0x713 SWAP1 PUSH1 0x12 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x451 SWAP1 PUSH1 0xA PUSH2 0xCB1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x72B DUP7 DUP7 PUSH2 0x90D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x74F JUMPI DUP4 DUP2 DUP2 PUSH2 0x745 JUMPI PUSH2 0x745 PUSH2 0xB62 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7C8 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x766 JUMPI PUSH2 0x766 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x929 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7DD DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ PUSH2 0x6A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF30E2DD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x996 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x98A JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C8 DUP4 DUP4 PUSH2 0x9A7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA00 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA09 DUP5 PUSH2 0x9D3 JUMP JUMPDEST SWAP3 POP PUSH2 0xA17 PUSH1 0x20 DUP6 ADD PUSH2 0x9D3 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA47 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA69 DUP5 DUP3 DUP6 ADD PUSH2 0xA27 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA82 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA8B DUP4 PUSH2 0x9D3 JUMP JUMPDEST SWAP2 POP PUSH2 0xA99 PUSH1 0x20 DUP5 ADD PUSH2 0x9D3 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xAB5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xAE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAFF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xB10 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C8 DUP3 PUSH2 0x9D3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xB37 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xB90 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBA5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xC09 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xBED JUMPI PUSH2 0xBED PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xBFB JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xBD2 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xC1F JUMPI POP PUSH1 0x1 PUSH2 0x451 JUMP JUMPDEST DUP2 PUSH2 0xC2B JUMPI POP PUSH0 PUSH2 0x451 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xC41 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xC4B JUMPI PUSH2 0xC67 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x451 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xC5C JUMPI PUSH2 0xC5C PUSH2 0xB37 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x451 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xC8A JUMPI POP DUP2 DUP2 EXP PUSH2 0x451 JUMP JUMPDEST PUSH2 0xC96 PUSH0 NOT DUP5 DUP5 PUSH2 0xBCE JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xCA9 JUMPI PUSH2 0xCA9 PUSH2 0xB37 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7C8 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xC11 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xA9 PUSH21 0x71A893B688C2FAA3E4B8CC1AF2FAD37D0AEAE2A2D2 POP 0xB9 SAR SWAP12 0xF GAS REVERT RETURNDATASIZE PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"657:4133:17:-:0;;;1310:335;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1414:18:17;;;;;1438:16;;;;;1460:24;;;;1495:9;1490:151;1510:13;:20;1506:1;:24;1490:151;;;1545:14;1562:13;1576:1;1562:16;;;;;;;;:::i;:::-;;;;;;;1545:33;;1586:48;1603:1;:9;;;1614:1;:10;;;1626:1;:7;;;1586:16;;;:48;;:::i;:::-;-1:-1:-1;1532:3:17;;1490:151;;;;1310:335;;;;657:4133;;3936:297;-1:-1:-1;;;;;4036:21:17;;4028:51;;;;-1:-1:-1;;;4028:51:17;;;;;;;;;;;;-1:-1:-1;;;;;4093:22:17;;4085:52;;;;-1:-1:-1;;;4085:52:17;;;;;;;;;;;;-1:-1:-1;;;;;4143:16:17;;;:7;:16;;;;;;;;;;;:26;;;;;;;;;;;;;:35;;;4189:39;;2642:25:25;;;4189:39:17;;2615:18:25;4189:39:17;;;;;;;3936:297;;;:::o;14:177:25:-;93:13;;-1:-1:-1;;;;;135:31:25;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:250;399:2;393:9;441:2;429:15;;-1:-1:-1;;;;;459:34:25;;495:22;;;456:62;453:88;;;521:18;;:::i;:::-;557:2;550:22;328:250;:::o;583:275::-;654:2;648:9;719:2;700:13;;-1:-1:-1;;696:27:25;684:40;;-1:-1:-1;;;;;739:34:25;;775:22;;;736:62;733:88;;;801:18;;:::i;:::-;837:2;830:22;583:275;;-1:-1:-1;583:275:25:o;863:1496::-;1008:6;1016;1024;1032;1085:3;1073:9;1064:7;1060:23;1056:33;1053:53;;;1102:1;1099;1092:12;1053:53;1125:40;1155:9;1125:40;:::i;:::-;1115:50;;1184:49;1229:2;1218:9;1214:18;1184:49;:::i;:::-;1174:59;;1252:49;1297:2;1286:9;1282:18;1252:49;:::i;:::-;1345:2;1330:18;;1324:25;1242:59;;-1:-1:-1;;;;;;1361:30:25;;1358:50;;;1404:1;1401;1394:12;1358:50;1427:22;;1480:4;1472:13;;1468:27;-1:-1:-1;1458:55:25;;1509:1;1506;1499:12;1458:55;1536:9;;-1:-1:-1;;;;;1557:30:25;;1554:56;;;1590:18;;:::i;:::-;1630:40;1666:2;1657:6;1654:1;1650:14;1646:23;1630:40;:::i;:::-;1692:3;1716:6;1711:3;1704:19;1748:2;1743:3;1739:12;1732:19;;1804:2;1798;1790:6;1786:15;1782:2;1778:24;1774:33;1760:47;;1830:7;1822:6;1819:19;1816:39;;;1851:1;1848;1841:12;1816:39;1883:2;1879;1875:11;1864:22;;1895:434;1911:6;1906:3;1903:15;1895:434;;;1991:2;1985:3;1976:7;1972:17;1968:26;1965:46;;;2007:1;2004;1997:12;1965:46;2037:21;;:::i;:::-;2085:34;2115:3;2085:34;:::i;:::-;2078:5;2071:49;2156:43;2195:2;2190:3;2186:12;2156:43;:::i;:::-;2151:2;2144:5;2140:14;2133:67;2251:2;2246:3;2242:12;2236:19;2231:2;2224:5;2220:14;2213:43;2281:5;2276:3;2269:18;;2316:2;2311:3;2307:12;2300:19;;1937:2;1932:3;1928:12;1921:19;;1895:434;;;863:1496;;;;-1:-1:-1;863:1496:25;;-1:-1:-1;;;;;863:1496:25:o;2364:127::-;2425:10;2420:3;2416:20;2413:1;2406:31;2456:4;2453:1;2446:15;2480:4;2477:1;2470:15;2496:177;657:4133:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5882":[{"length":32,"start":164},{"length":32,"start":878},{"length":32,"start":949},{"length":32,"start":1471},{"length":32,"start":1521}],"5884":[{"length":32,"start":244},{"length":32,"start":1625}],"5886":[{"length":32,"start":361},{"length":32,"start":2070}]},"linkReferences":{},"object":"60806040526004361061008f575f3560e01c8063c04b8d5911610057578063c04b8d591461018b578063db16a5551461019e578063db3e2198146101bd578063f28c04981461018b578063fa461e33146101d0575f5ffd5b80631dc3af35146100935780632b3297f9146100e3578063414bf389146101165780634562e01514610137578063a6138ed914610158575b5f5ffd5b34801561009e575f5ffd5b506100c67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100ee575f5ffd5b506100c67f000000000000000000000000000000000000000000000000000000000000000081565b6101296101243660046109b8565b6101ef565b6040519081526020016100da565b348015610142575f5ffd5b506101566101513660046109ee565b6103fb565b005b348015610163575f5ffd5b506100c67f000000000000000000000000000000000000000000000000000000000000000081565b610129610199366004610a37565b610413565b3480156101a9575f5ffd5b506101296101b8366004610a71565b61042d565b6101296101cb3660046109b8565b610457565b3480156101db575f5ffd5b506101566101ea366004610aa2565b610635565b5f6101f861064e565b5f6102096080840160608501610b1e565b6001600160a01b03160361022f5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610257576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a001351161027b5760405163d11b25af60e01b815260040160405180910390fd5b5f61030f670de0b6b3a764000082806102976020880188610b1e565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906102ca9190610b1e565b6001600160a01b031681526020808201929092526040015f2054906102fa906102f590880188610b1e565b6106a7565b6103089060a0880135610b4b565b919061071e565b90506103246102f56040850160208601610b1e565b61032e9082610b76565b91508160c0840135808210156103655760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506103b09050337f000000000000000000000000000000000000000000000000000000000000000060a086013561039f6020880188610b1e565b6001600160a01b03169291906107cf565b6103f57f00000000000000000000000000000000000000000000000000000000000000006103e46080860160608701610b1e565b8461039f6040880160208901610b1e565b50919050565b61040361080b565b61040e838383610861565b505050565b5f60405163d623472560e01b815260040160405180910390fd5b6001600160a01b038083165f90815260208181526040808320938516835292905220545b92915050565b5f61046061064e565b5f6104716080840160608501610b1e565b6001600160a01b0316036104975760405162e18e7f60e71b815260040160405180910390fd5b42826080013510156104bf576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104e35760405163d11b25af60e01b815260040160405180910390fd5b5f61056881806104f66020870187610b1e565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8560200160208101906105299190610b1e565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a76400006102fa8660200160208101906102f59190610b1e565b905061057a6102f56020850185610b1e565b6105849082610b76565b91508160c0840135808211156105b657604051639a06025d60e01b81526004810192909252602482015260440161035c565b506105ec9050337f00000000000000000000000000000000000000000000000000000000000000008461039f6020880188610b1e565b6103f57f00000000000000000000000000000000000000000000000000000000000000006106206080860160608701610b1e565b60a086013561039f6040880160208901610b1e565b60405163d623472560e01b815260040160405180910390fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146106a45760405163275b1d0960e21b81526001600160a01b03909116600482015260240161035c565b50565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107089190610b95565b610713906012610bb5565b61045190600a610cb1565b5f5f5f61072b868661090d565b91509150815f0361074f5783818161074557610745610b62565b04925050506107c8565b818411610766576107666003851502601118610929565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b6107dd84848484600161093a565b61080557604051635274afe760e01b81526001600160a01b038516600482015260240161035c565b50505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146106a45760405163f30e2dd160e01b81526001600160a01b03909116600482015260240161035c565b6001600160a01b0383166108885760405163165a825360e21b815260040160405180910390fd5b6001600160a01b0382166108af5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10910160405180910390a3505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f5114831661099657838315161561098a573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b5f61010082840312156103f5575f5ffd5b5f61010082840312156109c9575f5ffd5b6107c883836109a7565b80356001600160a01b03811681146109e9575f5ffd5b919050565b5f5f5f60608486031215610a00575f5ffd5b610a09846109d3565b9250610a17602085016109d3565b9150604084013590509250925092565b5f60a082840312156103f5575f5ffd5b5f60208284031215610a47575f5ffd5b813567ffffffffffffffff811115610a5d575f5ffd5b610a6984828501610a27565b949350505050565b5f5f60408385031215610a82575f5ffd5b610a8b836109d3565b9150610a99602084016109d3565b90509250929050565b5f5f5f5f60608587031215610ab5575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610ad9575f5ffd5b8501601f81018713610ae9575f5ffd5b803567ffffffffffffffff811115610aff575f5ffd5b876020828401011115610b10575f5ffd5b949793965060200194505050565b5f60208284031215610b2e575f5ffd5b6107c8826109d3565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761045157610451610b37565b634e487b7160e01b5f52601260045260245ffd5b5f82610b9057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610ba5575f5ffd5b815160ff811681146107c8575f5ffd5b60ff828116828216039081111561045157610451610b37565b6001815b6001841115610c0957808504811115610bed57610bed610b37565b6001841615610bfb57908102905b60019390931c928002610bd2565b935093915050565b5f82610c1f57506001610451565b81610c2b57505f610451565b8160018114610c415760028114610c4b57610c67565b6001915050610451565b60ff841115610c5c57610c5c610b37565b50506001821b610451565b5060208310610133831016604e8410600b8410161715610c8a575081810a610451565b610c965f198484610bce565b805f1904821115610ca957610ca9610b37565b029392505050565b5f6107c860ff841683610c1156fea264697066735822122097a97471a893b688c2faa3e4b8cc1af2fad37d0aeae2a2d250b91d9b0f5afd3d64736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x8F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC04B8D59 GT PUSH2 0x57 JUMPI DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xDB16A555 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0x18B JUMPI DUP1 PUSH4 0xFA461E33 EQ PUSH2 0x1D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1DC3AF35 EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0x2B3297F9 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x414BF389 EQ PUSH2 0x116 JUMPI DUP1 PUSH4 0x4562E015 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xA6138ED9 EQ PUSH2 0x158 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x124 CALLDATASIZE PUSH1 0x4 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x142 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9EE JUMP JUMPDEST PUSH2 0x3FB JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x163 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xC6 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x129 PUSH2 0x199 CALLDATASIZE PUSH1 0x4 PUSH2 0xA37 JUMP JUMPDEST PUSH2 0x413 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x129 PUSH2 0x1B8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA71 JUMP JUMPDEST PUSH2 0x42D JUMP JUMPDEST PUSH2 0x129 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0x9B8 JUMP JUMPDEST PUSH2 0x457 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x1EA CALLDATASIZE PUSH1 0x4 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x635 JUMP JUMPDEST PUSH0 PUSH2 0x1F8 PUSH2 0x64E JUMP JUMPDEST PUSH0 PUSH2 0x209 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x22F JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x27B JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x30F PUSH8 0xDE0B6B3A7640000 DUP3 DUP1 PUSH2 0x297 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2CA SWAP2 SWAP1 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x2FA SWAP1 PUSH2 0x2F5 SWAP1 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x6A7 JUMP JUMPDEST PUSH2 0x308 SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xB4B JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x71E JUMP JUMPDEST SWAP1 POP PUSH2 0x324 PUSH2 0x2F5 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x32E SWAP1 DUP3 PUSH2 0xB76 JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x365 JUMPI PUSH1 0x40 MLOAD PUSH4 0x296BA6E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x3B0 SWAP1 POP CALLER PUSH32 0x0 PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x39F PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7CF JUMP JUMPDEST PUSH2 0x3F5 PUSH32 0x0 PUSH2 0x3E4 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xB1E JUMP JUMPDEST DUP5 PUSH2 0x39F PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xB1E JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x403 PUSH2 0x80B JUMP JUMPDEST PUSH2 0x40E DUP4 DUP4 DUP4 PUSH2 0x861 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x460 PUSH2 0x64E JUMP JUMPDEST PUSH0 PUSH2 0x471 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x497 JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x4BF JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x4E3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x568 DUP2 DUP1 PUSH2 0x4F6 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP6 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x529 SWAP2 SWAP1 PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x2FA DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2F5 SWAP2 SWAP1 PUSH2 0xB1E JUMP JUMPDEST SWAP1 POP PUSH2 0x57A PUSH2 0x2F5 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x584 SWAP1 DUP3 PUSH2 0xB76 JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 GT ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9A06025D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x35C JUMP JUMPDEST POP PUSH2 0x5EC SWAP1 POP CALLER PUSH32 0x0 DUP5 PUSH2 0x39F PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x3F5 PUSH32 0x0 PUSH2 0x620 PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x39F PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xB1E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ PUSH2 0x6A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x275B1D09 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35C JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x708 SWAP2 SWAP1 PUSH2 0xB95 JUMP JUMPDEST PUSH2 0x713 SWAP1 PUSH1 0x12 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x451 SWAP1 PUSH1 0xA PUSH2 0xCB1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x72B DUP7 DUP7 PUSH2 0x90D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x74F JUMPI DUP4 DUP2 DUP2 PUSH2 0x745 JUMPI PUSH2 0x745 PUSH2 0xB62 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7C8 JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x766 JUMPI PUSH2 0x766 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x929 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7DD DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x93A JUMP JUMPDEST PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP2 EQ PUSH2 0x6A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF30E2DD1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x35C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x888 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x8AF JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x996 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x98A JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C8 DUP4 DUP4 PUSH2 0x9A7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA00 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA09 DUP5 PUSH2 0x9D3 JUMP JUMPDEST SWAP3 POP PUSH2 0xA17 PUSH1 0x20 DUP6 ADD PUSH2 0x9D3 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA47 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA69 DUP5 DUP3 DUP6 ADD PUSH2 0xA27 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA82 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA8B DUP4 PUSH2 0x9D3 JUMP JUMPDEST SWAP2 POP PUSH2 0xA99 PUSH1 0x20 DUP5 ADD PUSH2 0x9D3 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xAB5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xAE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAFF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xB10 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB2E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C8 DUP3 PUSH2 0x9D3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xB37 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xB90 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBA5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x451 JUMPI PUSH2 0x451 PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xC09 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xBED JUMPI PUSH2 0xBED PUSH2 0xB37 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xBFB JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xBD2 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xC1F JUMPI POP PUSH1 0x1 PUSH2 0x451 JUMP JUMPDEST DUP2 PUSH2 0xC2B JUMPI POP PUSH0 PUSH2 0x451 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xC41 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xC4B JUMPI PUSH2 0xC67 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x451 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xC5C JUMPI PUSH2 0xC5C PUSH2 0xB37 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x451 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xC8A JUMPI POP DUP2 DUP2 EXP PUSH2 0x451 JUMP JUMPDEST PUSH2 0xC96 PUSH0 NOT DUP5 DUP5 PUSH2 0xBCE JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xCA9 JUMPI PUSH2 0xCA9 PUSH2 0xB37 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7C8 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xC11 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0xA9 PUSH21 0x71A893B688C2FAA3E4B8CC1AF2FAD37D0AEAE2A2D2 POP 0xB9 SAR SWAP12 0xF GAS REVERT RETURNDATASIZE PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"657:4133:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1016:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:25;;;160:51;;148:2;133:18;1016:35:17;;;;;;;;1055:32;;;;;;;;;;;;;;;2039:864;;;;;;:::i;:::-;;:::i;:::-;;;818:25:25;;;806:2;791:18;2039:864:17;672:177:25;3765:167:17;;;;;;;;;;-1:-1:-1;3765:167:17;;;;;:::i;:::-;;:::i;:::-;;1091:31;;;;;;;;;;;;;;;4499:116;;;;;;:::i;:::-;;:::i;4237:136::-;;;;;;;;;;-1:-1:-1;4237:136:17;;;;;:::i;:::-;;:::i;2907:854::-;;;;;;:::i;:::-;;:::i;4677:111::-;;;;;;;;;;-1:-1:-1;4677:111:17;;;;;:::i;:::-;;:::i;2039:864::-;2131:17;2156:23;:21;:23::i;:::-;2221:1;2193:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2193:30:17;;2185:64;;;;-1:-1:-1;;;2185:64:17;;;;;;;;;;;;2282:15;2263:6;:15;;;:34;;2255:64;;;;-1:-1:-1;;;;;;2255:64:17;;;;;;;;;;;;2351:1;2333:6;:15;;;:19;2325:50;;;;-1:-1:-1;;;2325:50:17;;;;;;;;;;;;2382:22;2407:120;832:4;2382:22;;2489:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;2481:23:17;-1:-1:-1;;;;;2481:23:17;;;;;;;;;;;;:40;2505:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2481:40:17;;;;;;;;;;;;;-1:-1:-1;2481:40:17;;;2426:28;;2439:14;;;;:6;:14;:::i;:::-;2426:12;:28::i;:::-;2408:46;;:15;;;;:46;:::i;:::-;2407:55;:120;:55;:120::i;:::-;2382:145;-1:-1:-1;2562:29:17;2575:15;;;;;;;;:::i;2562:29::-;2545:46;;:14;:46;:::i;:::-;2533:58;-1:-1:-1;2533:58:17;2618:23;;;;2605:36;;;;2597:111;;;;-1:-1:-1;;;2597:111:17;;;;;4681:25:25;;;;4722:18;;;4715:34;4654:18;;2597:111:17;;;;;;;;;-1:-1:-1;2715:88:17;;-1:-1:-1;2763:10:17;2775;2787:15;;;;2730:14;;;;2787:6;2730:14;:::i;:::-;-1:-1:-1;;;;;2715:47:17;;:88;;:47;:88::i;:::-;2809:89;2858:10;2870:16;;;;;;;;:::i;:::-;2888:9;2824:15;;;;;;;;:::i;2809:89::-;2150:753;2039:864;;;:::o;3765:167::-;3856:22;:20;:22::i;:::-;3884:43;3901:7;3910:8;3920:6;3884:16;:43::i;:::-;3765:167;;;:::o;4499:116::-;4572:7;4594:16;;-1:-1:-1;;;4594:16:17;;;;;;;;;;;4237:136;-1:-1:-1;;;;;4342:16:17;;;4320:7;4342:16;;;;;;;;;;;:26;;;;;;;;;;4237:136;;;;;:::o;2907:854::-;3001:16;3025:23;:21;:23::i;:::-;3090:1;3062:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3062:30:17;;3054:64;;;;-1:-1:-1;;;3054:64:17;;;;;;;;;;;;3151:15;3132:6;:15;;;:34;;3124:64;;;;-1:-1:-1;;;;;;3124:64:17;;;;;;;;;;;;3221:1;3202:6;:16;;;:20;3194:51;;;;-1:-1:-1;;;3194:51:17;;;;;;;;;;;;3252:19;3274:122;3252:19;;3347:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;3339:23:17;-1:-1:-1;;;;;3339:23:17;;;;;;;;;;;;:40;3363:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3339:40:17;-1:-1:-1;;;;;3339:40:17;;;;;;;;;;;;;832:4;3294:29;3307:6;:15;;;;;;;;;;:::i;3274:122::-;3252:144;-1:-1:-1;3427:28:17;3440:14;;;;:6;:14;:::i;3427:28::-;3413:42;;:11;:42;:::i;:::-;3402:53;-1:-1:-1;3402:53:17;3481:22;;;;3469:34;;;;3461:105;;;;-1:-1:-1;;;3461:105:17;;;;;4681:25:25;;;;4722:18;;;4715:34;4654:18;;3461:105:17;4507:248:25;3461:105:17;-1:-1:-1;3573:81:17;;-1:-1:-1;3621:10:17;3633;3645:8;3588:14;;;;:6;:14;:::i;3573:81::-;3660:96;3709:10;3721:16;;;;;;;;:::i;:::-;3739;;;;3675:15;;;;;;;;:::i;4677:111::-;4767:16;;-1:-1:-1;;;4767:16:17;;;;;;;;;;;1787:120;1848:10;-1:-1:-1;;;;;1862:7:17;1848:21;;;1840:62;;;;-1:-1:-1;;;1840:62:17;;-1:-1:-1;;;;;178:32:25;;;1840:62:17;;;160:51:25;133:18;;1840:62:17;14:203:25;1840:62:17;;1787:120::o;1649:134::-;1709:7;1759:5;-1:-1:-1;;;;;1744:30:17;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1739:37;;:2;:37;:::i;:::-;1732:45;;:2;:45;:::i;7258:3683:11:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:9;5322:42:11;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:11;;;;;;:::o;1662:232:7:-;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:7;;-1:-1:-1;;;;;178:32:25;;1837:40:7;;;160:51:25;133:18;;1837:40:7;14:203:25;1762:126:7;1662:232;;;;:::o;1911:124:17:-;1971:10;-1:-1:-1;;;;;1985:6:17;1971:20;;;1963:67;;;;-1:-1:-1;;;1963:67:17;;-1:-1:-1;;;;;178:32:25;;;1963:67:17;;;160:51:25;133:18;;1963:67:17;14:203:25;3936:297:17;-1:-1:-1;;;;;4036:21:17;;4028:51;;;;-1:-1:-1;;;4028:51:17;;;;;;;;;;;;-1:-1:-1;;;;;4093:22:17;;4085:52;;;;-1:-1:-1;;;4085:52:17;;;;;;;;;;;;-1:-1:-1;;;;;4143:16:17;;;:7;:16;;;;;;;;;;;:26;;;;;;;;;;;;;:35;;;4189:39;;818:25:25;;;4189:39:17;;791:18:25;4189:39:17;;;;;;;3936:297;;;:::o;1027:550:11:-;1088:12;;-1:-1:-1;;1471:1:11;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:11:o;1776:194:9:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;10165:1393:7;10460:4;10454:11;-1:-1:-1;;;10323:12:7;10478:22;;;-1:-1:-1;;;;;10526:26:7;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:7;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:7:o;222:171:25:-;297:5;342:3;333:6;328:3;324:16;320:26;317:46;;;359:1;356;349:12;398:269;499:6;552:3;540:9;531:7;527:23;523:33;520:53;;;569:1;566;559:12;520:53;592:69;653:7;642:9;592:69;:::i;854:173::-;922:20;;-1:-1:-1;;;;;971:31:25;;961:42;;951:70;;1017:1;1014;1007:12;951:70;854:173;;;:::o;1032:328::-;1109:6;1117;1125;1178:2;1166:9;1157:7;1153:23;1149:32;1146:52;;;1194:1;1191;1184:12;1146:52;1217:29;1236:9;1217:29;:::i;:::-;1207:39;;1265:38;1299:2;1288:9;1284:18;1265:38;:::i;:::-;1255:48;;1350:2;1339:9;1335:18;1322:32;1312:42;;1032:328;;;;;:::o;1365:165::-;1434:5;1479:3;1470:6;1465:3;1461:16;1457:26;1454:46;;;1496:1;1493;1486:12;1535:374;1630:6;1683:2;1671:9;1662:7;1658:23;1654:32;1651:52;;;1699:1;1696;1689:12;1651:52;1739:9;1726:23;1772:18;1764:6;1761:30;1758:50;;;1804:1;1801;1794:12;1758:50;1827:76;1895:7;1886:6;1875:9;1871:22;1827:76;:::i;:::-;1817:86;1535:374;-1:-1:-1;;;;1535:374:25:o;1914:260::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;;2130:38;2164:2;2153:9;2149:18;2130:38;:::i;:::-;2120:48;;1914:260;;;;;:::o;2834:818::-;2920:6;2928;2936;2944;2997:2;2985:9;2976:7;2972:23;2968:32;2965:52;;;3013:1;3010;3003:12;2965:52;3058:23;;;-1:-1:-1;3178:2:25;3163:18;;3150:32;;-1:-1:-1;3259:2:25;3244:18;;3231:32;3286:18;3275:30;;3272:50;;;3318:1;3315;3308:12;3272:50;3341:22;;3394:4;3386:13;;3382:27;-1:-1:-1;3372:55:25;;3423:1;3420;3413:12;3372:55;3463:2;3450:16;3489:18;3481:6;3478:30;3475:50;;;3521:1;3518;3511:12;3475:50;3566:7;3561:2;3552:6;3548:2;3544:15;3540:24;3537:37;3534:57;;;3587:1;3584;3577:12;3534:57;2834:818;;;;-1:-1:-1;3618:2:25;3610:11;;-1:-1:-1;;;2834:818:25:o;3657:186::-;3716:6;3769:2;3757:9;3748:7;3744:23;3740:32;3737:52;;;3785:1;3782;3775:12;3737:52;3808:29;3827:9;3808:29;:::i;3848:127::-;3909:10;3904:3;3900:20;3897:1;3890:31;3940:4;3937:1;3930:15;3964:4;3961:1;3954:15;3980:168;4053:9;;;4084;;4101:15;;;4095:22;;4081:37;4071:71;;4122:18;;:::i;4153:127::-;4214:10;4209:3;4205:20;4202:1;4195:31;4245:4;4242:1;4235:15;4269:4;4266:1;4259:15;4285:217;4325:1;4351;4341:132;;4395:10;4390:3;4386:20;4383:1;4376:31;4430:4;4427:1;4420:15;4458:4;4455:1;4448:15;4341:132;-1:-1:-1;4487:9:25;;4285:217::o;4760:273::-;4828:6;4881:2;4869:9;4860:7;4856:23;4852:32;4849:52;;;4897:1;4894;4887:12;4849:52;4929:9;4923:16;4979:4;4972:5;4968:16;4961:5;4958:27;4948:55;;4999:1;4996;4989:12;5038:151;5128:4;5121:12;;;5107;;;5103:31;;5146:14;;5143:40;;;5163:18;;:::i;5194:375::-;5282:1;5300:5;5314:249;5335:1;5325:8;5322:15;5314:249;;;5385:4;5380:3;5376:14;5370:4;5367:24;5364:50;;;5394:18;;:::i;:::-;5444:1;5434:8;5430:16;5427:49;;;5458:16;;;;5427:49;5541:1;5537:16;;;;;5497:15;;5314:249;;;5194:375;;;;;;:::o;5574:902::-;5623:5;5653:8;5643:80;;-1:-1:-1;5694:1:25;5708:5;;5643:80;5742:4;5732:76;;-1:-1:-1;5779:1:25;5793:5;;5732:76;5824:4;5842:1;5837:59;;;;5910:1;5905:174;;;;5817:262;;5837:59;5867:1;5858:10;;5881:5;;;5905:174;5942:3;5932:8;5929:17;5926:43;;;5949:18;;:::i;:::-;-1:-1:-1;;6005:1:25;5991:16;;6064:5;;5817:262;;6163:2;6153:8;6150:16;6144:3;6138:4;6135:13;6131:36;6125:2;6115:8;6112:16;6107:2;6101:4;6098:12;6094:35;6091:77;6088:203;;;-1:-1:-1;6200:19:25;;;6276:5;;6088:203;6323:42;-1:-1:-1;;6348:8:25;6342:4;6323:42;:::i;:::-;6401:6;6397:1;6393:6;6389:19;6380:7;6377:32;6374:58;;;6412:18;;:::i;:::-;6450:20;;5574:902;-1:-1:-1;;;5574:902:25:o;6481:140::-;6539:5;6568:47;6609:4;6599:8;6595:19;6589:4;6568:47;:::i"},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","getCurrentPrice(address,address)":"db16a555","onBehalfOf()":"1dc3af35","pricer()":"a6138ed9","setCurrentPrice(address,address,uint256)":"4562e015","swapper()":"2b3297f9","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}}}},"project/contracts/SwapLibrary.sol":{"SwapLibrary":{"abi":[{"inputs":[],"name":"AllowanceShouldGoBackToZero","type":"error"},{"inputs":[],"name":"AtLeastOneRoute","type":"error"},{"inputs":[],"name":"CurveRouterCantBeZero","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[],"name":"InvalidProtocol","type":"error"},{"inputs":[{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"name":"InvalidRoute","type":"error"},{"inputs":[],"name":"MaxSlippageCannotBeZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"received","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"ReceivedLessThanAcceptable","type":"error"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"RouteNotFound","type":"error"},{"inputs":[{"internalType":"uint256","name":"spent","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"}],"name":"SpentMoreThanAcceptable","type":"error"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"TooManySwaps","type":"error"},{"inputs":[],"name":"UniswapFeeTierCannotBeZero","type":"error"},{"inputs":[],"name":"UniswapRouterCannotBeZero","type":"error"},{"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"SwapLibrary.SwapProtocol"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"swapConfig","type":"tuple"}],"name":"validate","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"611c93610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611678565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611678565b61012b565b6100b16100ac3660046116e7565b610190565b005b5f60016100c36020880188611735565b60028111156100d4576100d4611721565b036100ed576100e686868686866102d6565b9050610122565b60026100fc6020880188611735565b600281111561010d5761010d611721565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b6020880188611735565b600281111561014c5761014c611721565b0361015e576100e686868686866106c6565b600261016d6020880188611735565b600281111561017e5761017e611721565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c36020830183611735565b60028111156101d4576101d4611721565b0361024c575f6101e76040830183611753565b8101906101f4919061179d565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b6020830183611735565b600281111561026c5761026c611721565b036102bd576102ba6102816040830183611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e56040880188611753565b8101906102f2919061179d565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b815260040161041991906118a3565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906118b2565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061180f565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e8919061180f565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118dd565b995061063181856118f0565b93505050808061064090611903565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b8919061180f565b509998505050505050505050565b5f806106d56040880188611753565b8101906106e2919061179d565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b815260040161080991906118a3565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084991906118b2565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906118b2565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a611753565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061180f565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119bc565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2791906118b2565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9991906118b2565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118f0565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118f0565b610b7591906118f0565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb0836002611a12565b600b8110610bc057610bc0611a29565b60200201516001600160a01b03161480610c0f575081515f90610be4836002611a12565b610bef9060016118f0565b600b8110610bff57610bff611a29565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a3d565b600101610b96565b5080515f90610c47846002611aa1565b60ff16600b8110610c5a57610c5a611a29565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a3d565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a29565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a3d565b610cee82611400565b610cf890856118f0565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118f0565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e611a12565b91906114d4565b610d859190611ad1565b9695505050505050565b5f610d986115b2565b610da2855f611026565b91505f610dba610db36014836118f0565b879061108a565b90505f6001610dca6014836118f0565b610dd491906118f0565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118f0565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff84166014611a12565b610e46906002611a12565b610e516001876118f0565b610e0891906118f0565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118f0565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611af0565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5291906118b2565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119bc565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd591906118b2565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118dd565b8461101c8861145d565b610d74908b611a12565b5f6110328260146118f0565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118f0565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee6115b2565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e57611160611144601483611a12565b61114f6001876118f0565b61115991906118f0565b8690611026565b825182600b811061117357611173611a29565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a49190611a12565b6111af9060016118f0565b6111b990846118f0565b92505f5b8260ff1681101561135c576111f26111d6600183611a12565b6111e1906005611a12565b6111eb90866118f0565b869061108a565b60ff168260200151826005811061120b5761120b611a29565b60200201515261123f61121f600183611a12565b61122a906005611a12565b61123490866118f0565b6111eb9060016118f0565b60ff168260200151826005811061125857611258611a29565b602002015160016020020152611292611272600183611a12565b61127d906005611a12565b61128790866118f0565b6111eb9060026118f0565b60ff16826020015182600581106112ab576112ab611a29565b6020020151604001526112e26112c2600183611a12565b6112cd906005611a12565b6112d790866118f0565b6111eb9060036118f0565b60ff16826020015182600581106112fb576112fb611a29565b602002015160600152611332611312600183611a12565b61131d906005611a12565b61132790866118f0565b6111eb9060046118f0565b60ff168260200151826005811061134b5761134b611a29565b6020020151608001526001016111bd565b5061136b600160ff8416611a12565b611376906005611a12565b61138090846118f0565b92505f5b8260ff168110156113d8576113a761139d601483611a12565b61115990866118f0565b826040015182600581106113bd576113bd611a29565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611aa1565b6113f7906001611b22565b60ff1692915050565b5f61140f601460ff8416611a12565b600161141c846005611aa1565b60ff166114299190611a12565b6014611434856113e0565b61143e9190611a12565b6114499060016118f0565b61145391906118f0565b610fed91906118f0565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b3b565b6114c9906012611b5b565b610fed90600a611c4f565b5f5f5f6114e18686611585565b91509150815f03611505578381816114fb576114fb611abd565b049250505061157e565b81841161151c5761151c60038515026011186115a1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60405180606001604052806115c56115e4565b81526020016115d2611603565b81526020016115df611630565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61161a611630565b8152602001906001900390816116125790505090565b6040518060a001604052806005906020820280368337509192915050565b5f6060828403121561165e575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a0868803121561168c575f5ffd5b853567ffffffffffffffff8111156116a2575f5ffd5b6116ae8882890161164e565b95505060208601356116bf81611664565b935060408601356116cf81611664565b94979396509394606081013594506080013592915050565b5f602082840312156116f7575f5ffd5b813567ffffffffffffffff81111561170d575f5ffd5b6117198482850161164e565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611745575f5ffd5b81356003811061157e575f5ffd5b5f5f8335601e19843603018112611768575f5ffd5b83018035915067ffffffffffffffff821115611782575f5ffd5b602001915036819003821315611796575f5ffd5b9250929050565b5f60408284031280156117ae575f5ffd5b506040805190810167ffffffffffffffff811182821017156117de57634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117f3575f5ffd5b8152602083013561180381611664565b60208201529392505050565b5f6020828403121561181f575f5ffd5b8151801515811461157e575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161189e60e08401826001600160a01b03169052565b505050565b6101008101610fed828461182e565b5f602082840312156118c2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118c9565b80820180821115610fed57610fed6118c9565b5f60018201611914576119146118c9565b5060010190565b805f5b600b811015610d265781516001600160a01b031684526020938401939091019060010161191e565b805f5b6005811015610d265781515f85815b6005811015611977578351825260209384019390910190600101611958565b50505060a094909401935060209190910190600101611949565b805f5b6005811015610d265781516001600160a01b0316845260209384019390910190600101611994565b61058081016119cb828961191b565b6119d9610160830188611946565b85610480830152846104a08301526119f56104c0830185611991565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118c9565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a705782516001600160a01b0316825260209283019290910190600101611a48565b5050506020830151611a86610160840182611946565b506040830151611a9a610480840182611991565b5092915050565b60ff8181168382160290811690818114611a9a57611a9a6118c9565b634e487b7160e01b5f52601260045260245ffd5b5f82611aeb57634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611aff828761191b565b611b0d610160830186611946565b836104808301526101226104a0830184611991565b60ff8181168382160190811115610fed57610fed6118c9565b5f60208284031215611b4b575f5ffd5b815160ff8116811461157e575f5ffd5b60ff8281168282160390811115610fed57610fed6118c9565b6001815b6001841115610ecd57808504811115611b9357611b936118c9565b6001841615611ba157908102905b60019390931c928002611b78565b5f82611bbd57506001610fed565b81611bc957505f610fed565b8160018114611bdf5760028114611be957611c05565b6001915050610fed565b60ff841115611bfa57611bfa6118c9565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c28575081810a610fed565b611c345f198484611b74565b805f1904821115611c4757611c476118c9565b029392505050565b5f610fea60ff841683611baf56fea2646970667358221220a229fce48c6180290b69722601e285d058e1b9965492ba5f706c142aaa26966064736f6c63430008230033","opcodes":"PUSH2 0x1C93 PUSH2 0x34 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x28 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x581E517D EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x77566915 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xB2FCA32C EQ PUSH2 0x9E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x59 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x68 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x16E7 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xC3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0xED JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x122 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xFC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x10D JUMPI PUSH2 0x10D PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x50E JUMP JUMPDEST POP PUSH0 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x13B PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x15E JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x16D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH2 0x17E PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x908 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD CALLDATALOAD PUSH0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3B3A5B47 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x1C3 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x24C JUMPI PUSH0 PUSH2 0x1E7 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE35D3F93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF AND PUSH0 SUB PUSH2 0x248 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC087296D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x25B PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26C JUMPI PUSH2 0x26C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x2BD JUMPI PUSH2 0x2BA PUSH2 0x281 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xAEE SWAP3 POP POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FC71F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x2E5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x306 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 NOT PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDB3E2198 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x435 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x459 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP3 DUP2 GT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4641F9E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x55E PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP11 SWAP2 POP PUSH2 0xD8F SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x574 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5E8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 DUP1 JUMPDEST DUP8 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5FB JUMPI POP PUSH1 0x2 DUP2 LT JUMPDEST ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 PUSH2 0x60D DUP8 DUP8 DUP13 PUSH2 0xED5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x61B DUP11 DUP4 PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x625 SWAP1 DUP12 PUSH2 0x18DD JUMP JUMPDEST SWAP10 POP PUSH2 0x631 DUP2 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP DUP1 DUP1 PUSH2 0x640 SWAP1 PUSH2 0x1903 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5EC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 PUSH1 0x24 DUP4 ADD MSTORE DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6D5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x6F6 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x74A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x76E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x414BF389 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x825 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x849 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8BF SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0x8DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x91B PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x931 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x981 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A5 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0x9E7 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP13 SWAP2 DUP9 SWAP2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA03 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA27 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP6 POP SWAP1 DUP10 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA99 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAF9 DUP3 DUP3 PUSH2 0x1026 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB22 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE3683637 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xB38 PUSH2 0xB31 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH0 SUB PUSH2 0xB5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1EC987F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xB6B PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xB75 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xD04 JUMPI PUSH0 PUSH0 PUSH2 0xB90 DUP8 DUP6 PUSH2 0x10E5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xC37 JUMPI DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBB0 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBC0 JUMPI PUSH2 0xBC0 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC0F JUMPI POP DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBE4 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xBEF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBFF JUMPI PUSH2 0xBFF PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xC2F JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB96 JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xC47 DUP5 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0xC5A JUMPI PUSH2 0xC5A PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC88 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x5 DUP3 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xCA4 DUP5 PUSH2 0x13E0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xCB4 JUMPI PUSH2 0xCB4 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xCE5 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH2 0xCEE DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xCF8 SWAP1 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0xB79 JUMP JUMPDEST POP DUP1 DUP5 MLOAD EQ PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x251F56A1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD36 DUP5 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0xD4B DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18F0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD74 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6A DUP11 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP15 PUSH2 0x1A12 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1AD1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD98 PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0xDA2 DUP6 PUSH0 PUSH2 0x1026 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0xDBA PUSH2 0xDB3 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0xDCA PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xEA0 JUMPI PUSH0 PUSH2 0xDEE DUP10 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xE0F PUSH2 0xE08 PUSH1 0x1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xE66 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0xE5B PUSH2 0xE3B PUSH1 0xFF DUP5 AND PUSH1 0x14 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE46 SWAP1 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE51 PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xE08 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xE82 JUMPI PUSH2 0xE75 DUP10 DUP5 PUSH2 0x10E5 JUMP JUMPDEST SWAP6 POP PUSH2 0xECD SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE8B DUP2 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xE95 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0xDD8 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8C9AEC7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC07B5353 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC07B5353 SWAP4 PUSH2 0xF13 SWAP4 SWAP3 SWAP2 DUP10 SWAP2 PUSH1 0x4 ADD PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0xF95 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP8 SWAP2 PUSH0 SWAP2 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFD5 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFD DUP4 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0x1012 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18DD JUMP JUMPDEST DUP5 PUSH2 0x101C DUP9 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP12 PUSH2 0x1A12 JUMP JUMPDEST PUSH0 PUSH2 0x1032 DUP3 PUSH1 0x14 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x107A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x746F416464726573735F6F75744F66426F756E6473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1096 DUP3 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x10DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F55696E74385F6F75744F66426F756E6473 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x1 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x10EE PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0x10F8 DUP5 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x1124 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B030B59 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 JUMPDEST PUSH2 0x112F DUP4 PUSH2 0x13E0 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x118E JUMPI PUSH2 0x1160 PUSH2 0x1144 PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x114F PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x1173 JUMPI PUSH2 0x1173 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1126 JUMP JUMPDEST POP PUSH1 0x14 PUSH2 0x119A DUP4 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x11A4 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11AF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11B9 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x135C JUMPI PUSH2 0x11F2 PUSH2 0x11D6 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11E1 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11EB SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x108A JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x120B JUMPI PUSH2 0x120B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x123F PUSH2 0x121F PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x122A SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1234 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x1258 JUMPI PUSH2 0x1258 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x1292 PUSH2 0x1272 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x127D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1287 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x2 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12AB JUMPI PUSH2 0x12AB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x12E2 PUSH2 0x12C2 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12CD SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12D7 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x3 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12FB JUMPI PUSH2 0x12FB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x1332 PUSH2 0x1312 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x131D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1327 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x4 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x134B JUMPI PUSH2 0x134B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11BD JUMP JUMPDEST POP PUSH2 0x136B PUSH1 0x1 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1376 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1380 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x13D8 JUMPI PUSH2 0x13A7 PUSH2 0x139D PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1159 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x13BD JUMPI PUSH2 0x13BD PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1384 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13EC DUP3 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH2 0x13F7 SWAP1 PUSH1 0x1 PUSH2 0x1B22 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x140F PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x141C DUP5 PUSH1 0x5 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1434 DUP6 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1449 SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1453 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x149A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14BE SWAP2 SWAP1 PUSH2 0x1B3B JUMP JUMPDEST PUSH2 0x14C9 SWAP1 PUSH1 0x12 PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0xFED SWAP1 PUSH1 0xA PUSH2 0x1C4F JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x14E1 DUP7 DUP7 PUSH2 0x1585 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1505 JUMPI DUP4 DUP2 DUP2 PUSH2 0x14FB JUMPI PUSH2 0x14FB PUSH2 0x1ABD JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x157E JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x151C JUMPI PUSH2 0x151C PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x15A1 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x15C5 PUSH2 0x15E4 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D2 PUSH2 0x1603 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15DF PUSH2 0x1630 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 JUMPDEST PUSH2 0x161A PUSH2 0x1630 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1612 JUMPI SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x165E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x168C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16AE DUP9 DUP3 DUP10 ADD PUSH2 0x164E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x16BF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x16CF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x170D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1719 DUP5 DUP3 DUP6 ADD PUSH2 0x164E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1745 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1768 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1782 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1796 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x17AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17DE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x17F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1803 DUP2 PUSH2 0x1664 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x181F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP2 DUP3 AND SWAP1 DUP5 ADD MSTORE POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x189E PUSH1 0xE0 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0xFED DUP3 DUP5 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x1914 JUMPI PUSH2 0x1914 PUSH2 0x18C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x191E JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH0 DUP6 DUP2 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x1977 JUMPI DUP4 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1958 JUMP JUMPDEST POP POP POP PUSH1 0xA0 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1949 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1994 JUMP JUMPDEST PUSH2 0x580 DUP2 ADD PUSH2 0x19CB DUP3 DUP10 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x19D9 PUSH2 0x160 DUP4 ADD DUP9 PUSH2 0x1946 JUMP JUMPDEST DUP6 PUSH2 0x480 DUP4 ADD MSTORE DUP5 PUSH2 0x4A0 DUP4 ADD MSTORE PUSH2 0x19F5 PUSH2 0x4C0 DUP4 ADD DUP6 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x560 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x520 DUP3 ADD SWAP1 DUP3 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0x1A70 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A48 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1A86 PUSH2 0x160 DUP5 ADD DUP3 PUSH2 0x1946 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1A9A PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0x1991 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND MUL SWAP1 DUP2 AND SWAP1 DUP2 DUP2 EQ PUSH2 0x1A9A JUMPI PUSH2 0x1A9A PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1AEB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH2 0x540 DUP2 ADD PUSH2 0x1AFF DUP3 DUP8 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x1B0D PUSH2 0x160 DUP4 ADD DUP7 PUSH2 0x1946 JUMP JUMPDEST DUP4 PUSH2 0x480 DUP4 ADD MSTORE PUSH2 0x122 PUSH2 0x4A0 DUP4 ADD DUP5 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xECD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1B93 JUMPI PUSH2 0x1B93 PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1BA1 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1B78 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1BBD JUMPI POP PUSH1 0x1 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH2 0x1BC9 JUMPI POP PUSH0 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1BDF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1BE9 JUMPI PUSH2 0x1C05 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xFED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1BFA JUMPI PUSH2 0x1BFA PUSH2 0x18C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0xFED JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1C28 JUMPI POP DUP2 DUP2 EXP PUSH2 0xFED JUMP JUMPDEST PUSH2 0x1C34 PUSH0 NOT DUP5 DUP5 PUSH2 0x1B74 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x18C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFEA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1BAF JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 0x29 0xFC RETF DUP13 PUSH2 0x8029 SIGNEXTEND PUSH10 0x722601E285D058E1B996 SLOAD SWAP3 0xBA PUSH0 PUSH17 0x6C142AAA26966064736F6C634300082300 CALLER ","sourceMap":"522:9839:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;522:9839:18;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611678565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611678565b61012b565b6100b16100ac3660046116e7565b610190565b005b5f60016100c36020880188611735565b60028111156100d4576100d4611721565b036100ed576100e686868686866102d6565b9050610122565b60026100fc6020880188611735565b600281111561010d5761010d611721565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b6020880188611735565b600281111561014c5761014c611721565b0361015e576100e686868686866106c6565b600261016d6020880188611735565b600281111561017e5761017e611721565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c36020830183611735565b60028111156101d4576101d4611721565b0361024c575f6101e76040830183611753565b8101906101f4919061179d565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b6020830183611735565b600281111561026c5761026c611721565b036102bd576102ba6102816040830183611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e56040880188611753565b8101906102f2919061179d565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b815260040161041991906118a3565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045991906118b2565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d0919061180f565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a611753565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e8919061180f565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118dd565b995061063181856118f0565b93505050808061064090611903565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b8919061180f565b509998505050505050505050565b5f806106d56040880188611753565b8101906106e2919061179d565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e919061180f565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b815260040161080991906118a3565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084991906118b2565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf91906118b2565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a611753565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a5919061180f565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119bc565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2791906118b2565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9991906118b2565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118f0565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118f0565b610b7591906118f0565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb0836002611a12565b600b8110610bc057610bc0611a29565b60200201516001600160a01b03161480610c0f575081515f90610be4836002611a12565b610bef9060016118f0565b600b8110610bff57610bff611a29565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a3d565b600101610b96565b5080515f90610c47846002611aa1565b60ff16600b8110610c5a57610c5a611a29565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a3d565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a29565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a3d565b610cee82611400565b610cf890856118f0565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118f0565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e611a12565b91906114d4565b610d859190611ad1565b9695505050505050565b5f610d986115b2565b610da2855f611026565b91505f610dba610db36014836118f0565b879061108a565b90505f6001610dca6014836118f0565b610dd491906118f0565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118f0565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff84166014611a12565b610e46906002611a12565b610e516001876118f0565b610e0891906118f0565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118f0565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611af0565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5291906118b2565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119bc565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd591906118b2565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118dd565b8461101c8861145d565b610d74908b611a12565b5f6110328260146118f0565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118f0565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee6115b2565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e57611160611144601483611a12565b61114f6001876118f0565b61115991906118f0565b8690611026565b825182600b811061117357611173611a29565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a49190611a12565b6111af9060016118f0565b6111b990846118f0565b92505f5b8260ff1681101561135c576111f26111d6600183611a12565b6111e1906005611a12565b6111eb90866118f0565b869061108a565b60ff168260200151826005811061120b5761120b611a29565b60200201515261123f61121f600183611a12565b61122a906005611a12565b61123490866118f0565b6111eb9060016118f0565b60ff168260200151826005811061125857611258611a29565b602002015160016020020152611292611272600183611a12565b61127d906005611a12565b61128790866118f0565b6111eb9060026118f0565b60ff16826020015182600581106112ab576112ab611a29565b6020020151604001526112e26112c2600183611a12565b6112cd906005611a12565b6112d790866118f0565b6111eb9060036118f0565b60ff16826020015182600581106112fb576112fb611a29565b602002015160600152611332611312600183611a12565b61131d906005611a12565b61132790866118f0565b6111eb9060046118f0565b60ff168260200151826005811061134b5761134b611a29565b6020020151608001526001016111bd565b5061136b600160ff8416611a12565b611376906005611a12565b61138090846118f0565b92505f5b8260ff168110156113d8576113a761139d601483611a12565b61115990866118f0565b826040015182600581106113bd576113bd611a29565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611aa1565b6113f7906001611b22565b60ff1692915050565b5f61140f601460ff8416611a12565b600161141c846005611aa1565b60ff166114299190611a12565b6014611434856113e0565b61143e9190611a12565b6114499060016118f0565b61145391906118f0565b610fed91906118f0565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b3b565b6114c9906012611b5b565b610fed90600a611c4f565b5f5f5f6114e18686611585565b91509150815f03611505578381816114fb576114fb611abd565b049250505061157e565b81841161151c5761151c60038515026011186115a1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b60405180606001604052806115c56115e4565b81526020016115d2611603565b81526020016115df611630565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61161a611630565b8152602001906001900390816116125790505090565b6040518060a001604052806005906020820280368337509192915050565b5f6060828403121561165e575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a0868803121561168c575f5ffd5b853567ffffffffffffffff8111156116a2575f5ffd5b6116ae8882890161164e565b95505060208601356116bf81611664565b935060408601356116cf81611664565b94979396509394606081013594506080013592915050565b5f602082840312156116f7575f5ffd5b813567ffffffffffffffff81111561170d575f5ffd5b6117198482850161164e565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215611745575f5ffd5b81356003811061157e575f5ffd5b5f5f8335601e19843603018112611768575f5ffd5b83018035915067ffffffffffffffff821115611782575f5ffd5b602001915036819003821315611796575f5ffd5b9250929050565b5f60408284031280156117ae575f5ffd5b506040805190810167ffffffffffffffff811182821017156117de57634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117f3575f5ffd5b8152602083013561180381611664565b60208201529392505050565b5f6020828403121561181f575f5ffd5b8151801515811461157e575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161189e60e08401826001600160a01b03169052565b505050565b6101008101610fed828461182e565b5f602082840312156118c2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118c9565b80820180821115610fed57610fed6118c9565b5f60018201611914576119146118c9565b5060010190565b805f5b600b811015610d265781516001600160a01b031684526020938401939091019060010161191e565b805f5b6005811015610d265781515f85815b6005811015611977578351825260209384019390910190600101611958565b50505060a094909401935060209190910190600101611949565b805f5b6005811015610d265781516001600160a01b0316845260209384019390910190600101611994565b61058081016119cb828961191b565b6119d9610160830188611946565b85610480830152846104a08301526119f56104c0830185611991565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118c9565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a705782516001600160a01b0316825260209283019290910190600101611a48565b5050506020830151611a86610160840182611946565b506040830151611a9a610480840182611991565b5092915050565b60ff8181168382160290811690818114611a9a57611a9a6118c9565b634e487b7160e01b5f52601260045260245ffd5b5f82611aeb57634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611aff828761191b565b611b0d610160830186611946565b836104808301526101226104a0830184611991565b60ff8181168382160190811115610fed57610fed6118c9565b5f60208284031215611b4b575f5ffd5b815160ff8116811461157e575f5ffd5b60ff8281168282160390811115610fed57610fed6118c9565b6001815b6001841115610ecd57808504811115611b9357611b936118c9565b6001841615611ba157908102905b60019390931c928002611b78565b5f82611bbd57506001610fed565b81611bc957505f610fed565b8160018114611bdf5760028114611be957611c05565b6001915050610fed565b60ff841115611bfa57611bfa6118c9565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c28575081810a610fed565b611c345f198484611b74565b805f1904821115611c4757611c476118c9565b029392505050565b5f610fea60ff841683611baf56fea2646970667358221220a229fce48c6180290b69722601e285d058e1b9965492ba5f706c142aaa26966064736f6c63430008230033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x581E517D EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x77566915 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0xB2FCA32C EQ PUSH2 0x9E JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x59 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x68 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0xB3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6D PUSH2 0x99 CALLDATASIZE PUSH1 0x4 PUSH2 0x1678 JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x16E7 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xC3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0xED JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x2D6 JUMP JUMPDEST SWAP1 POP PUSH2 0x122 JUMP JUMPDEST PUSH1 0x2 PUSH2 0xFC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x10D JUMPI PUSH2 0x10D PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x50E JUMP JUMPDEST POP PUSH0 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x13B PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x15E JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x6C6 JUMP JUMPDEST PUSH1 0x2 PUSH2 0x16D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH2 0x17E PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x11F JUMPI PUSH2 0xE6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x908 JUMP JUMPDEST DUP1 PUSH1 0x20 ADD CALLDATALOAD PUSH0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3B3A5B47 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH2 0x1C3 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x24C JUMPI PUSH0 PUSH2 0x1E7 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE35D3F93 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF AND PUSH0 SUB PUSH2 0x248 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC087296D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x25B PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26C JUMPI PUSH2 0x26C PUSH2 0x1721 JUMP JUMPDEST SUB PUSH2 0x2BD JUMPI PUSH2 0x2BA PUSH2 0x281 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x1753 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xAEE SWAP3 POP POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1FC71F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x2E5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x306 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 NOT PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDB3E2198 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x435 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x459 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4AC JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4D0 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP3 DUP2 GT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4641F9E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x55E PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP12 SWAP3 POP DUP11 SWAP2 POP PUSH2 0xD8F SWAP1 POP JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x574 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP4 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C4 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5E8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 DUP1 JUMPDEST DUP8 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5FB JUMPI POP PUSH1 0x2 DUP2 LT JUMPDEST ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 PUSH2 0x60D DUP8 DUP8 DUP13 PUSH2 0xED5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x61B DUP11 DUP4 PUSH2 0xFDF JUMP JUMPDEST PUSH2 0x625 SWAP1 DUP12 PUSH2 0x18DD JUMP JUMPDEST SWAP10 POP PUSH2 0x631 DUP2 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP DUP1 DUP1 PUSH2 0x640 SWAP1 PUSH2 0x1903 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5EC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH0 PUSH1 0x24 DUP4 ADD MSTORE DUP11 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x694 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6B8 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x6D5 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x1753 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0x179D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x6F6 DUP6 DUP10 PUSH1 0x20 ADD CALLDATALOAD DUP10 DUP10 DUP9 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE SWAP2 SWAP3 POP DUP9 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x74A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x76E SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP PUSH0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x100 ADD PUSH1 0x40 MSTORE DUP1 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH0 ADD MLOAD PUSH3 0xFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP SWAP1 POP PUSH0 DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x414BF389 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x18A3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x825 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x849 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP3 POP DUP11 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x89B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8BF SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0x8DD JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x501 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x91B PUSH2 0x521 PUSH1 0x40 DUP11 ADD DUP11 PUSH2 0x1753 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 PUSH2 0x931 DUP7 DUP11 PUSH1 0x20 ADD CALLDATALOAD DUP11 DUP11 DUP10 PUSH2 0xFF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP10 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x981 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A5 SWAP2 SWAP1 PUSH2 0x180F JUMP JUMPDEST POP DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0x9E7 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP13 SWAP2 DUP9 SWAP2 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA03 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA27 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP6 POP SWAP1 DUP10 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA75 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA99 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x511D53D PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 LT ISZERO PUSH2 0xAE2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4209AA31 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAF9 DUP3 DUP3 PUSH2 0x1026 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB22 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE3683637 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xB38 PUSH2 0xB31 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH0 SUB PUSH2 0xB5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1EC987F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xB6B PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xB75 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xD04 JUMPI PUSH0 PUSH0 PUSH2 0xB90 DUP8 DUP6 PUSH2 0x10E5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xC37 JUMPI DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBB0 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBC0 JUMPI PUSH2 0xBC0 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC0F JUMPI POP DUP2 MLOAD PUSH0 SWAP1 PUSH2 0xBE4 DUP4 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xBEF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBFF JUMPI PUSH2 0xBFF PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xC2F JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB96 JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xC47 DUP5 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0xC5A JUMPI PUSH2 0xC5A PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC88 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH1 0x5 DUP3 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xCC5 JUMPI POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xCA4 DUP5 PUSH2 0x13E0 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xCB4 JUMPI PUSH2 0xCB4 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xCE5 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F8 SWAP2 SWAP1 PUSH2 0x1A3D JUMP JUMPDEST PUSH2 0xCEE DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xCF8 SWAP1 DUP6 PUSH2 0x18F0 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0xB79 JUMP JUMPDEST POP DUP1 DUP5 MLOAD EQ PUSH2 0xD26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x251F56A1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD36 DUP5 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0xD4B DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18F0 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD74 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6A DUP11 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP15 PUSH2 0x1A12 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1AD1 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD98 PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0xDA2 DUP6 PUSH0 PUSH2 0x1026 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0xDBA PUSH2 0xDB3 PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0xDCA PUSH1 0x14 DUP4 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0xEA0 JUMPI PUSH0 PUSH2 0xDEE DUP10 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xE0F PUSH2 0xE08 PUSH1 0x1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x1026 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xE66 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0xE5B PUSH2 0xE3B PUSH1 0xFF DUP5 AND PUSH1 0x14 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE46 SWAP1 PUSH1 0x2 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0xE51 PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xE08 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0xE82 JUMPI PUSH2 0xE75 DUP10 DUP5 PUSH2 0x10E5 JUMP JUMPDEST SWAP6 POP PUSH2 0xECD SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE8B DUP2 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xE95 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0xDD8 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8C9AEC7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x4F8 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD MLOAD SWAP1 MLOAD PUSH4 0xC07B5353 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC07B5353 SWAP4 PUSH2 0xF13 SWAP4 SWAP3 SWAP2 DUP10 SWAP2 PUSH1 0x4 ADD PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF52 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD SWAP1 MLOAD PUSH4 0xC872A3C5 PUSH1 0xE0 SHL DUP2 MSTORE SWAP4 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP4 PUSH4 0xC872A3C5 SWAP4 PUSH2 0xF95 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP8 SWAP2 PUSH0 SWAP2 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x19BC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFD5 SWAP2 SWAP1 PUSH2 0x18B2 JUMP JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFFD DUP4 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD7B PUSH2 0x1012 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x18DD JUMP JUMPDEST DUP5 PUSH2 0x101C DUP9 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP12 PUSH2 0x1A12 JUMP JUMPDEST PUSH0 PUSH2 0x1032 DUP3 PUSH1 0x14 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x107A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x746F416464726573735F6F75744F66426F756E6473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x1096 DUP3 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x10DC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F55696E74385F6F75744F66426F756E6473 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x4F8 JUMP JUMPDEST POP ADD PUSH1 0x1 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x10EE PUSH2 0x15B2 JUMP JUMPDEST PUSH2 0x10F8 DUP5 DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x1124 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B030B59 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x4F8 JUMP JUMPDEST PUSH0 JUMPDEST PUSH2 0x112F DUP4 PUSH2 0x13E0 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x118E JUMPI PUSH2 0x1160 PUSH2 0x1144 PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x114F PUSH1 0x1 DUP8 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x1173 JUMPI PUSH2 0x1173 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1126 JUMP JUMPDEST POP PUSH1 0x14 PUSH2 0x119A DUP4 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x11A4 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11AF SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11B9 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x135C JUMPI PUSH2 0x11F2 PUSH2 0x11D6 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11E1 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x11EB SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x108A JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x120B JUMPI PUSH2 0x120B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x123F PUSH2 0x121F PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x122A SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1234 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x1258 JUMPI PUSH2 0x1258 PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x1292 PUSH2 0x1272 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x127D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1287 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x2 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12AB JUMPI PUSH2 0x12AB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x12E2 PUSH2 0x12C2 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12CD SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x12D7 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x3 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12FB JUMPI PUSH2 0x12FB PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x1332 PUSH2 0x1312 PUSH1 0x1 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x131D SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1327 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x4 PUSH2 0x18F0 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x134B JUMPI PUSH2 0x134B PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x11BD JUMP JUMPDEST POP PUSH2 0x136B PUSH1 0x1 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1376 SWAP1 PUSH1 0x5 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1380 SWAP1 DUP5 PUSH2 0x18F0 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x13D8 JUMPI PUSH2 0x13A7 PUSH2 0x139D PUSH1 0x14 DUP4 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1159 SWAP1 DUP7 PUSH2 0x18F0 JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x13BD JUMPI PUSH2 0x13BD PUSH2 0x1A29 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1384 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13EC DUP3 PUSH1 0x2 PUSH2 0x1AA1 JUMP JUMPDEST PUSH2 0x13F7 SWAP1 PUSH1 0x1 PUSH2 0x1B22 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x140F PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x141C DUP5 PUSH1 0x5 PUSH2 0x1AA1 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1434 DUP6 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x1A12 JUMP JUMPDEST PUSH2 0x1449 SWAP1 PUSH1 0x1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0x1453 SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x18F0 JUMP JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x149A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14BE SWAP2 SWAP1 PUSH2 0x1B3B JUMP JUMPDEST PUSH2 0x14C9 SWAP1 PUSH1 0x12 PUSH2 0x1B5B JUMP JUMPDEST PUSH2 0xFED SWAP1 PUSH1 0xA PUSH2 0x1C4F JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x14E1 DUP7 DUP7 PUSH2 0x1585 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x1505 JUMPI DUP4 DUP2 DUP2 PUSH2 0x14FB JUMPI PUSH2 0x14FB PUSH2 0x1ABD JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x157E JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x151C JUMPI PUSH2 0x151C PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x15A1 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x15C5 PUSH2 0x15E4 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15D2 PUSH2 0x1603 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15DF PUSH2 0x1630 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 JUMPDEST PUSH2 0x161A PUSH2 0x1630 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1612 JUMPI SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x165E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x168C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x16AE DUP9 DUP3 DUP10 ADD PUSH2 0x164E JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x16BF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x16CF DUP2 PUSH2 0x1664 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x170D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1719 DUP5 DUP3 DUP6 ADD PUSH2 0x164E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1745 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1768 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1782 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1796 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x17AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17DE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x17F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1803 DUP2 PUSH2 0x1664 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x181F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD DUP3 AND SWAP1 DUP5 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD PUSH3 0xFFFFFF AND SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP2 DUP3 AND SWAP1 DUP5 ADD MSTORE POP PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP2 ADD MLOAD PUSH2 0x189E PUSH1 0xE0 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0xFED DUP3 DUP5 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x1914 JUMPI PUSH2 0x1914 PUSH2 0x18C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x191E JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH0 DUP6 DUP2 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x1977 JUMPI DUP4 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1958 JUMP JUMPDEST POP POP POP PUSH1 0xA0 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1949 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xD26 JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1994 JUMP JUMPDEST PUSH2 0x580 DUP2 ADD PUSH2 0x19CB DUP3 DUP10 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x19D9 PUSH2 0x160 DUP4 ADD DUP9 PUSH2 0x1946 JUMP JUMPDEST DUP6 PUSH2 0x480 DUP4 ADD MSTORE DUP5 PUSH2 0x4A0 DUP4 ADD MSTORE PUSH2 0x19F5 PUSH2 0x4C0 DUP4 ADD DUP6 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x560 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x520 DUP3 ADD SWAP1 DUP3 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0x1A70 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A48 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1A86 PUSH2 0x160 DUP5 ADD DUP3 PUSH2 0x1946 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1A9A PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0x1991 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND MUL SWAP1 DUP2 AND SWAP1 DUP2 DUP2 EQ PUSH2 0x1A9A JUMPI PUSH2 0x1A9A PUSH2 0x18C9 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1AEB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH2 0x540 DUP2 ADD PUSH2 0x1AFF DUP3 DUP8 PUSH2 0x191B JUMP JUMPDEST PUSH2 0x1B0D PUSH2 0x160 DUP4 ADD DUP7 PUSH2 0x1946 JUMP JUMPDEST DUP4 PUSH2 0x480 DUP4 ADD MSTORE PUSH2 0x122 PUSH2 0x4A0 DUP4 ADD DUP5 PUSH2 0x1991 JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x157E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xECD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1B93 JUMPI PUSH2 0x1B93 PUSH2 0x18C9 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1BA1 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1B78 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1BBD JUMPI POP PUSH1 0x1 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH2 0x1BC9 JUMPI POP PUSH0 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1BDF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1BE9 JUMPI PUSH2 0x1C05 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xFED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1BFA JUMPI PUSH2 0x1BFA PUSH2 0x18C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0xFED JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1C28 JUMPI POP DUP2 DUP2 EXP PUSH2 0xFED JUMP JUMPDEST PUSH2 0x1C34 PUSH0 NOT DUP5 DUP5 PUSH2 0x1B74 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1C47 JUMPI PUSH2 0x1C47 PUSH2 0x18C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFEA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1BAF JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG2 0x29 0xFC RETF DUP13 PUSH2 0x8029 SIGNEXTEND PUSH10 0x722601E285D058E1B996 SLOAD SWAP3 0xBA PUSH0 PUSH17 0x6C142AAA26966064736F6C634300082300 CALLER ","sourceMap":"522:9839:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4594:474;;;;;;;;;;-1:-1:-1;4594:474:18;;;;;:::i;:::-;;:::i;:::-;;;1352:25:25;;;1340:2;1325:18;4594:474:18;;;;;;;3071:471;;;;;;;;;;-1:-1:-1;3071:471:18;;;;;:::i;:::-;;:::i;1371:593::-;;;;;;:::i;:::-;;:::i;:::-;;4594:474;4755:7;4797:20;4774:19;;;;:10;:19;:::i;:::-;:43;;;;;;;;:::i;:::-;;4770:280;;4834:65;4854:10;4866:7;4875:8;4885:6;4893:5;4834:19;:65::i;:::-;4827:72;;;;4770:280;4939:24;4916:19;;;;:10;:19;:::i;:::-;:47;;;;;;;;:::i;:::-;;4912:138;;4980:63;4998:10;5010:7;5019:8;5029:6;5037:5;4980:17;:63::i;4912:138::-;-1:-1:-1;5062:1:18;4594:474;;;;;;;;:::o;3071:471::-;3231:7;3273:20;3250:19;;;;:10;:19;:::i;:::-;:43;;;;;;;;:::i;:::-;;3246:278;;3310:64;3329:10;3341:7;3350:8;3360:6;3368:5;3310:18;:64::i;3246:278::-;3414:24;3391:19;;;;:10;:19;:::i;:::-;:47;;;;;;;;:::i;:::-;;3387:137;;3455:62;3472:10;3484:7;3493:8;3503:6;3511:5;3455:16;:62::i;1371:593::-;1445:10;:22;;;1471:1;1445:27;1441:65;;1481:25;;-1:-1:-1;;;1481:25:18;;;;;;;;;;;1441:65;1539:20;1516:19;;;;:10;:19;:::i;:::-;:43;;;;;;;;:::i;:::-;;1512:447;;1569:29;1612:23;;;;:10;:23;:::i;:::-;1601:58;;;;;;;:::i;:::-;1679:9;;;;1569:90;;-1:-1:-1;;;;;;1671:32:18;1667:72;;1712:27;;-1:-1:-1;;;1712:27:18;;;;;;;;;;;1667:72;1751:10;;:15;;:10;:15;1747:56;;1775:28;;-1:-1:-1;;;1775:28:18;;;;;;;;;;;1747:56;1561:249;1371:593;:::o;1512:447::-;1843:24;1820:19;;;;:10;:19;:::i;:::-;:47;;;;;;;;:::i;:::-;;1816:143;;1877:45;1898:23;;;;:10;:23;:::i;:::-;1877:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1877:20:18;;-1:-1:-1;;;1877:45:18:i;:::-;1371:593;:::o;1816:143::-;1942:17;;-1:-1:-1;;;1942:17:18;;;;;;;;;;;6847:1160;7016:7;;7074:23;;;;:10;:23;:::i;:::-;7063:58;;;;;;;:::i;:::-;7031:90;;7128:19;7150:72;7165:6;7173:10;:22;;;7197:7;7206:8;7216:5;7150:14;:72::i;:::-;7269:9;;;;7229:70;;-1:-1:-1;;;7229:70:18;;-1:-1:-1;;;;;3815:32:25;;;7229:70:18;;;3797:51:25;-1:-1:-1;;3864:18:25;;;3857:34;7128:94:18;;-1:-1:-1;7229:31:18;;;;;3770:18:25;;7229:70:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7305:49;7357:380;;;;;;;;7410:7;-1:-1:-1;;;;;7357:380:18;;;;;7435:8;-1:-1:-1;;;;;7357:380:18;;;;;7456:2;:10;;;7357:380;;;;;;7493:4;-1:-1:-1;;;;;7357:380:18;;;;;7516:15;7357:380;;;;7550:6;7357:380;;;;7581:11;7357:380;;;;7619:1;-1:-1:-1;;;;;7357:380:18;;;;7305:432;;7743:20;7766:2;:9;;;-1:-1:-1;;;;;7766:27:18;;7794:6;7766:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7848:9;;;;7808:54;;-1:-1:-1;;;7808:54:18;;-1:-1:-1;;;;;3815:32:25;;;7808:54:18;;;3797:51:25;7860:1:18;3864:18:25;;;3857:34;7743:58:18;;-1:-1:-1;7808:31:18;;;;;3770:18:25;;7808:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7907:11;7892:12;:26;7888:89;;;7927:50;;-1:-1:-1;;;7927:50:18;;;;;5816:25:25;;;5857:18;;;5850:34;;;5789:18;;7927:50:18;;;;;;;;7888:89;7990:12;6847:1160;-1:-1:-1;;;;;;;;;6847:1160:18:o;9384:975::-;9551:7;;;9627:89;9656:23;;;;:10;:23;:::i;:::-;9627:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9687:7:18;;-1:-1:-1;9702:8:18;;-1:-1:-1;9627:21:18;;-1:-1:-1;9627:89:18:i;:::-;9566:150;;;;9722:19;9744:72;9759:6;9767:10;:22;;;9791:7;9800:8;9810:5;9744:14;:72::i;:::-;9822:61;;-1:-1:-1;;;9822:61:18;;-1:-1:-1;;;;;3815:32:25;;;9822:61:18;;;3797:51:25;3864:18;;;3857:34;;;9722:94:18;;-1:-1:-1;9822:31:18;;;;;;3770:18:25;;9822:61:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9889:24:18;;10032:237;10048:11;;;;;:31;;;733:1;10063;:16;10048:31;10032:237;;;10095:16;10113:22;10139:37;10154:6;10162:5;10169:6;10139:14;:37::i;:::-;10094:82;;;;10194:26;10203:6;10211:8;10194;:26::i;:::-;10184:36;;;;:::i;:::-;;-1:-1:-1;10228:34:18;10248:14;10228:34;;:::i;:::-;;;10086:183;;10081:3;;;;;:::i;:::-;;;;10032:237;;;-1:-1:-1;10274:51:18;;-1:-1:-1;;;10274:51:18;;-1:-1:-1;;;;;3815:32:25;;;10274:51:18;;;3797::25;10323:1:18;3864:18:25;;;3857:34;10274:31:18;;;;;3770:18:25;;10274:51:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10338:16:18;9384:975;-1:-1:-1;;;;;;;;;9384:975:18:o;5647:1196::-;5815:7;;5873:23;;;;:10;:23;:::i;:::-;5862:58;;;;;;;:::i;:::-;5830:90;;5926:20;5949:72;5964:6;5972:10;:22;;;5996:7;6005:8;6015:5;5949:14;:72::i;:::-;6068:9;;;;6028:59;;-1:-1:-1;;;6028:59:18;;-1:-1:-1;;;;;3815:32:25;;;6028:59:18;;;3797:51:25;3864:18;;;3857:34;;;5926:95:18;;-1:-1:-1;6028:31:18;;;;;3770:18:25;;6028:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6093:48;6144:380;;;;;;;;6196:7;-1:-1:-1;;;;;6144:380:18;;;;;6221:8;-1:-1:-1;;;;;6144:380:18;;;;;6242:2;:10;;;6144:380;;;;;;6279:4;-1:-1:-1;;;;;6144:380:18;;;;;6302:15;6144:380;;;;6335:6;6144:380;;;;6367:12;6144:380;;;;6406:1;-1:-1:-1;;;;;6144:380:18;;;;6093:431;;6531:16;6550:2;:9;;;-1:-1:-1;;;;;6550:26:18;;6577:6;6550:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6651:9;;;;6594:68;;-1:-1:-1;;;6594:68:18;;6636:4;6594:68;;;6902:51:25;-1:-1:-1;;;;;6989:32:25;;;6969:18;;;6962:60;6531:53:18;;-1:-1:-1;6594:33:18;;;;;6875:18:25;;6594:68:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;6590:115;;6676:29;;-1:-1:-1;;;6676:29:18;;;;;;;;;;;6590:115;6746:12;6735:8;:23;6731:86;;;6767:50;;-1:-1:-1;;;6767:50:18;;;;;5816:25:25;;;5857:18;;;5850:34;;;5789:18;;6767:50:18;5642:248:25;8011:874:18;8177:16;;;8262:89;8291:23;;;;:10;:23;:::i;8262:89::-;8201:150;;;;8357:20;8380:72;8395:6;8403:10;:22;;;8427:7;8436:8;8446:5;8380:14;:72::i;:::-;8459:56;;-1:-1:-1;;;8459:56:18;;-1:-1:-1;;;;;3815:32:25;;;8459:56:18;;;3797:51:25;3864:18;;;3857:34;;;8357:95:18;;-1:-1:-1;8459:31:18;;;;;;3770:18:25;;8459:56:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8548:11:18;;8561:16;;;;8601:11;;;;;8532:96;;-1:-1:-1;;;8532:96:18;;-1:-1:-1;;;;;8532:15:18;;;;;:96;;8548:11;;8561:16;;8579:6;;8587:12;;8601:11;8622:4;;8532:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8639:65;;-1:-1:-1;;;8639:65:18;;8681:4;8639:65;;;6902:51:25;-1:-1:-1;;;;;6989:32:25;;;6969:18;;;6962:60;8521:107:18;;-1:-1:-1;8639:33:18;;;;;;6875:18:25;;8639:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;8635:112;;8718:29;;-1:-1:-1;;;8718:29:18;;;;;;;;;;;8635:112;8788:12;8777:8;:23;8773:86;;;8809:50;;-1:-1:-1;;;8809:50:18;;;;;5816:25:25;;;5857:18;;;5850:34;;;5789:18;;8809:50:18;5642:248:25;8773:86:18;8865:15;;;8011:874;;;;;;;:::o;1751:929:16:-;1815:19;1850:36;:11;1815:19;1850:21;:36::i;:::-;1815:72;-1:-1:-1;;;;;;1897:29:16;;1893:65;;1935:23;;-1:-1:-1;;;1935:23:16;;;;;;;;;;;1893:65;1964:13;1980:36;1116:28;932:2;1964:13;1116:28;:::i;:::-;1980:11;;:19;:36::i;:::-;1964:52;;2026:7;:12;;2037:1;2026:12;2022:42;;2047:17;;-1:-1:-1;;;2047:17:16;;;;;;;;;;;2022:42;2070:14;977:1;1116:28;932:2;2070:14;1116:28;:::i;:::-;1195;;;;:::i;:::-;2070:35;;2116:9;2111:503;2131:7;2127:11;;:1;:11;2111:503;;;2154:12;2168:23;2195:30;2205:11;2218:6;2195:9;:30::i;:::-;2153:72;;;;2238:9;2233:156;2253:6;2249:10;;:1;:10;2233:156;;;2280:11;;2310:1;;2292:5;:1;2296;2292:5;:::i;:::-;2280:18;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2280:32:16;;:72;;;-1:-1:-1;2316:11:16;;2350:1;;2328:5;:1;2332;2328:5;:::i;:::-;:9;;2336:1;2328:9;:::i;:::-;2316:22;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2316:36:16;;2280:72;2276:104;;;2374:5;2361:19;;-1:-1:-1;;;2361:19:16;;;;;;;;:::i;2276:104::-;2261:3;;2233:156;;;-1:-1:-1;2400:11:16;;2435:1;;2412:10;:6;2421:1;2412:10;:::i;:::-;2400:23;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2400:37:16;;2396:69;;2459:5;2446:19;;-1:-1:-1;;;2446:19:16;;;;;;;;:::i;2396:69::-;1020:1;2477:6;:19;;;;:67;;;;-1:-1:-1;2500:11:16;;2542:1;;2512:17;2522:6;2512:9;:17::i;:::-;2500:30;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2500:44:16;;;2477:67;2473:99;;;2566:5;2553:19;;-1:-1:-1;;;2553:19:16;;;;;;;;:::i;2473:99::-;2590:17;2600:6;2590:9;:17::i;:::-;2580:27;;;;:::i;:::-;;-1:-1:-1;;;2140:3:16;;2111:503;;;;2645:6;2623:11;:18;:28;2619:56;;2660:15;;-1:-1:-1;;;2660:15:16;;;;;;;;;;;2619:56;1809:871;;;1751:929;:::o;5351:292:18:-;5509:7;5617:21;5630:7;5617:12;:21::i;:::-;5531:83;5591:17;5597:11;605:4;5591:17;:::i;:::-;605:4;5531:52;5572:5;605:4;5541:22;5554:8;5541:12;:22::i;:::-;5532:31;;:6;:31;:::i;:::-;5531:40;:52;:40;:52::i;:83::-;:107;;;;:::i;:::-;5524:114;5351:292;-1:-1:-1;;;;;;5351:292:18:o;4113:779:16:-;4232:19;4253:23;;:::i;:::-;4306:36;:11;1067:1;4306:21;:36::i;:::-;4284:59;-1:-1:-1;4349:13:16;4365:36;1116:28;932:2;4349:13;1116:28;:::i;:::-;4365:11;;:19;:36::i;:::-;4349:52;-1:-1:-1;4407:14:16;977:1;1116:28;932:2;4407:14;1116:28;:::i;:::-;1195;;;;:::i;:::-;4407:35;;4453:9;4448:395;4468:7;4464:11;;:1;:11;4448:395;;;4490:12;4505:27;:11;4525:6;4505:19;:27::i;:::-;4490:42;-1:-1:-1;;;;;;4553:53:16;;:42;4575:19;977:1;4575:6;:19;:::i;:::-;4553:11;;:21;:42::i;:::-;-1:-1:-1;;;;;4553:53:16;;:147;;;;-1:-1:-1;;;;;;4618:82:16;;:70;4662:21;;;;932:2;4662:21;:::i;:::-;:25;;4686:1;4662:25;:::i;:::-;4640:19;977:1;4640:6;:19;:::i;:::-;:47;;;;:::i;4618:70::-;-1:-1:-1;;;;;4618:82:16;;4553:147;4540:262;;;4731:30;4741:11;4754:6;4731:9;:30::i;:::-;4719:42;-1:-1:-1;4771:22:16;;-1:-1:-1;;;;;4771:22:16;4540:262;4819:17;4829:6;4819:9;:17::i;:::-;4809:27;;;;:::i;:::-;;-1:-1:-1;;4477:3:16;;4448:395;;;-1:-1:-1;4855:32:16;;-1:-1:-1;;;4855:32:16;;-1:-1:-1;;;;;6920:32:25;;;4855::16;;;6902:51:25;6989:32;;6969:18;;;6962:60;6875:18;;4855:32:16;6728:300:25;4113:779:16;;;;;;;:::o;8889:491:18:-;9100:11;;9113:16;;;;9139:11;;;;;9086:65;;-1:-1:-1;;;9086:65:18;;9021:16;;;;-1:-1:-1;;;;;9086:13:18;;;;;:65;;9100:11;9113:16;9131:6;;9086:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9191:11;;9210:16;;;;9337:11;;;;;9168:207;;-1:-1:-1;;;9168:207:18;;9069:82;;-1:-1:-1;;;;;;9168:15:18;;;;;:207;;9191:11;;9210:16;;9069:82;;9191:11;;9364:4;;9168:207;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9157:218;;8889:491;;;;;;:::o;5633:111:11:-;5691:7;5328:5;;;5725;;;5327:36;5322:42;;5717:20;5710:27;;5633:111;;;;;:::o;5072:275:18:-;5230:7;5320:22;5333:8;5320:12;:22::i;:::-;5252:65;5292:17;5298:11;605:4;5292:17;:::i;:::-;5311:5;5262:21;5275:7;5262:12;:21::i;:::-;5253:30;;:6;:30;:::i;12432:354:15:-;12511:7;12555:11;:6;12564:2;12555:11;:::i;:::-;12538:6;:13;:28;;12530:62;;;;-1:-1:-1;;;12530:62:15;;12655:2:25;12530:62:15;;;12637:21:25;12694:2;12674:18;;;12667:30;-1:-1:-1;;;12713:18:25;;;12706:51;12774:18;;12530:62:15;12453:345:25;12530:62:15;-1:-1:-1;12680:30:15;12696:4;12680:30;12674:37;-1:-1:-1;;;12670:71:15;;;12432:354::o;12792:302::-;12869:5;12911:10;:6;12920:1;12911:10;:::i;:::-;12894:6;:13;:27;;12886:60;;;;-1:-1:-1;;;12886:60:15;;13005:2:25;12886:60:15;;;12987:21:25;13044:2;13024:18;;;13017:30;-1:-1:-1;;;13063:18:25;;;13056:49;13122:18;;12886:60:15;12803:343:25;12886:60:15;-1:-1:-1;13022:29:15;13038:3;13022:29;13016:36;;12792:302::o;2684:1065:16:-;2780:12;2794:23;;:::i;:::-;2834:27;:11;2854:6;2834:19;:27::i;:::-;2825:36;;1020:1;2871:6;:18;;;2867:51;;;2898:20;;-1:-1:-1;;;2898:20:16;;13323:4:25;13311:17;;2898:20:16;;;13293:36:25;13266:18;;2898:20:16;13151:184:25;2867:51:16;2929:9;2924:137;2944:17;2954:6;2944:9;:17::i;:::-;2940:1;:21;2924:137;;;2993:61;3037:16;932:2;3037:1;:16;:::i;:::-;3015:19;977:1;3015:6;:19;:::i;:::-;:38;;;;:::i;:::-;2993:11;;:21;:61::i;:::-;2976:11;;2988:1;2976:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;2976:78:16;;;:14;;;;;;:78;2963:3;;2924:137;;;;932:2;3089:17;3099:6;3089:9;:17::i;:::-;:32;;;;:::i;:::-;3076:45;;977:1;3076:45;:::i;:::-;3066:55;;;;:::i;:::-;;;3132:9;3127:461;3147:6;3143:10;;:1;:10;3127:461;;;3193:48;3222:14;977:1;3222;:14;:::i;:::-;:18;;3239:1;3222:18;:::i;:::-;3213:27;;:6;:27;:::i;:::-;3193:11;;:19;:48::i;:::-;3168:73;;:5;:16;;;3185:1;3168:19;;;;;;;:::i;:::-;;;;;:73;3274:52;3303:14;977:1;3303;:14;:::i;:::-;:18;;3320:1;3303:18;:::i;:::-;3294:27;;:6;:27;:::i;:::-;:31;;3324:1;3294:31;:::i;3274:52::-;3249:77;;:5;:16;;;3266:1;3249:19;;;;;;;:::i;:::-;;;;;3269:1;3249:22;;;:77;3359:52;3388:14;977:1;3388;:14;:::i;:::-;:18;;3405:1;3388:18;:::i;:::-;3379:27;;:6;:27;:::i;:::-;:31;;3409:1;3379:31;:::i;3359:52::-;3334:77;;:5;:16;;;3351:1;3334:19;;;;;;;:::i;:::-;;;;;:22;;:77;3444:52;3473:14;977:1;3473;:14;:::i;:::-;:18;;3490:1;3473:18;:::i;:::-;3464:27;;:6;:27;:::i;:::-;:31;;3494:1;3464:31;:::i;3444:52::-;3419:77;;:5;:16;;;3436:1;3419:19;;;;;;;:::i;:::-;;;;;:22;;:77;3529:52;3558:14;977:1;3558;:14;:::i;:::-;:18;;3575:1;3558:18;:::i;:::-;3549:27;;:6;:27;:::i;:::-;:31;;3579:1;3549:31;:::i;3529:52::-;3504:77;;:5;:16;;;3521:1;3504:19;;;;;;;:::i;:::-;;;;;:22;;:77;3155:3;;3127:461;;;-1:-1:-1;3603:19:16;977:1;3603:19;;;;:::i;:::-;:23;;3625:1;3603:23;:::i;:::-;3593:33;;;;:::i;:::-;;;3637:9;3632:113;3652:6;3648:10;;:1;:10;3632:113;;;3690:48;3721:16;932:2;3721:1;:16;:::i;:::-;3712:25;;:6;:25;:::i;3690:48::-;3673:5;:11;;;3685:1;3673:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;3673:65:16;;;:14;;;;;;:65;3660:3;;3632:113;;;;2684:1065;;;;;:::o;4011:98::-;4066:7;4089:10;:6;4098:1;4089:10;:::i;:::-;:14;;4102:1;4089:14;:::i;:::-;4081:23;;;4011:98;-1:-1:-1;;4011:98:16:o;3753:254::-;3809:7;3971:21;932:2;3971:21;;;;:::i;:::-;977:1;3923:10;:6;3932:1;3923:10;:::i;:::-;:23;;;;;;:::i;:::-;932:2;3866:17;3876:6;3866:9;:17::i;:::-;:38;;;;:::i;:::-;3837:67;;977:1;3837:67;:::i;:::-;:110;;;;:::i;:::-;:156;;;;:::i;1968:134:18:-;2028:7;2078:5;-1:-1:-1;;;;;2063:30:18;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2058:37;;:2;:37;:::i;:::-;2051:45;;:2;:45;:::i;7258:3683:11:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:9;5322:42:11;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:11;;;;;;:::o;1027:550::-;1088:12;;-1:-1:-1;;1471:1:11;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:11:o;1776:194:9:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;-1:-1:-1;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:158:25:-;77:5;122:2;113:6;108:3;104:16;100:25;97:45;;;138:1;135;128:12;97:45;-1:-1:-1;160:6:25;14:158;-1:-1:-1;14:158:25:o;177:131::-;-1:-1:-1;;;;;252:31:25;;242:42;;232:70;;298:1;295;288:12;313:880;438:6;446;454;462;470;523:3;511:9;502:7;498:23;494:33;491:53;;;540:1;537;530:12;491:53;580:9;567:23;613:18;605:6;602:30;599:50;;;645:1;642;635:12;599:50;668:70;730:7;721:6;710:9;706:22;668:70;:::i;:::-;658:80;;;788:2;777:9;773:18;760:32;801:31;826:5;801:31;:::i;:::-;851:5;-1:-1:-1;908:2:25;893:18;;880:32;921:33;880:32;921:33;:::i;:::-;313:880;;;;-1:-1:-1;973:7:25;;1053:2;1038:18;;1025:32;;-1:-1:-1;1156:3:25;1141:19;1128:33;;313:880;-1:-1:-1;;313:880:25:o;1388:362::-;1477:6;1530:2;1518:9;1509:7;1505:23;1501:32;1498:52;;;1546:1;1543;1536:12;1498:52;1586:9;1573:23;1619:18;1611:6;1608:30;1605:50;;;1651:1;1648;1641:12;1605:50;1674:70;1736:7;1727:6;1716:9;1712:22;1674:70;:::i;:::-;1664:80;1388:362;-1:-1:-1;;;;1388:362:25:o;1755:127::-;1816:10;1811:3;1807:20;1804:1;1797:31;1847:4;1844:1;1837:15;1871:4;1868:1;1861:15;1887:273;1963:6;2016:2;2004:9;1995:7;1991:23;1987:32;1984:52;;;2032:1;2029;2022:12;1984:52;2071:9;2058:23;2110:1;2103:5;2100:12;2090:40;;2126:1;2123;2116:12;2165:521;2242:4;2248:6;2308:11;2295:25;2402:2;2398:7;2387:8;2371:14;2367:29;2363:43;2343:18;2339:68;2329:96;;2421:1;2418;2411:12;2329:96;2448:33;;2500:20;;;-1:-1:-1;2543:18:25;2532:30;;2529:50;;;2575:1;2572;2565:12;2529:50;2608:4;2596:17;;-1:-1:-1;2639:14:25;2635:27;;;2625:38;;2622:58;;;2676:1;2673;2666:12;2622:58;2165:521;;;;;:::o;2691:818::-;2787:6;2847:2;2835:9;2826:7;2822:23;2818:32;2862:2;2859:22;;;2877:1;2874;2867:12;2859:22;-1:-1:-1;2926:2:25;2920:9;;;2956:15;;3001:18;2986:34;;3022:22;;;2983:62;2980:185;;;3087:10;3082:3;3078:20;3075:1;3068:31;3122:4;3119:1;3112:15;3150:4;3147:1;3140:15;2980:185;3181:2;3174:22;3218:23;;3281:8;3270:20;;3260:31;;3250:59;;3305:1;3302;3295:12;3250:59;3318:21;;3391:2;3376:18;;3363:32;3404:33;3363:32;3404:33;:::i;:::-;3465:2;3453:15;;3446:32;3457:6;2691:818;-1:-1:-1;;;2691:818:25:o;3902:277::-;3969:6;4022:2;4010:9;4001:7;3997:23;3993:32;3990:52;;;4038:1;4035;4028:12;3990:52;4070:9;4064:16;4123:5;4116:13;4109:21;4102:5;4099:32;4089:60;;4145:1;4142;4135:12;4184:677;4277:12;;-1:-1:-1;;;;;4273:38:25;;;4261:51;;4365:4;4354:16;;;4348:23;4344:49;;4328:14;;;4321:73;4447:4;4436:16;;;4430:23;4455:8;4426:38;4410:14;;;4403:62;4511:4;4500:16;;;4494:23;3580:31;;;4559:14;;;3568:44;4526:48;4623:4;4616:5;4612:16;4606:23;4599:4;4594:3;4590:14;4583:47;4679:4;4672:5;4668:16;4662:23;4655:4;4650:3;4646:14;4639:47;4735:4;4728:5;4724:16;4718:23;4711:4;4706:3;4702:14;4695:47;4790:4;4783:5;4779:16;4773:23;4805:50;4849:4;4844:3;4840:14;4824;-1:-1:-1;;;;;3580:31:25;3568:44;;3514:104;4805:50;;4184:677;;:::o;4866:295::-;5082:3;5067:19;;5095:60;5071:9;5137:6;5095:60;:::i;5166:184::-;5236:6;5289:2;5277:9;5268:7;5264:23;5260:32;5257:52;;;5305:1;5302;5295:12;5257:52;-1:-1:-1;5328:16:25;;5166:184;-1:-1:-1;5166:184:25:o;5895:127::-;5956:10;5951:3;5947:20;5944:1;5937:31;5987:4;5984:1;5977:15;6011:4;6008:1;6001:15;6027:128;6094:9;;;6115:11;;;6112:37;;;6129:18;;:::i;6160:125::-;6225:9;;;6246:10;;;6243:36;;;6259:18;;:::i;6290:135::-;6329:3;6350:17;;;6347:43;;6370:18;;:::i;:::-;-1:-1:-1;6417:1:25;6406:13;;6290:135::o;7033:329::-;7126:5;7149:1;7159:197;7173:4;7170:1;7167:11;7159:197;;;7236:13;;-1:-1:-1;;;;;7232:39:25;7220:52;;7301:4;7292:14;;;;7329:17;;;;7268:1;7186:9;7159:197;;7367:707;7466:5;7489:1;7499:569;7513:4;7510:1;7507:11;7499:569;;;7570:13;;7614:1;7641:3;7614:1;7738:209;7754:4;7749:3;7746:13;7738:209;;;7827:15;;7813:30;;7880:4;7914:19;;;;7869:16;;;;7778:1;7769:11;7738:209;;;-1:-1:-1;;;7983:4:25;7974:14;;;;;-1:-1:-1;8053:4:25;8041:17;;;;;7533:1;7526:9;7499:569;;8079:340;8183:5;8206:1;8216:197;8230:4;8227:1;8224:11;8216:197;;;8293:13;;-1:-1:-1;;;;;8289:39:25;8277:52;;8358:4;8349:14;;;;8386:17;;;;8325:1;8243:9;8216:197;;8424:826;8884:4;8869:20;;8898:43;8873:9;8923:6;8898:43;:::i;:::-;8950:59;9004:3;8993:9;8989:19;8981:6;8950:59;:::i;:::-;9047:6;9040:4;9029:9;9025:20;9018:36;9092:6;9085:4;9074:9;9070:20;9063:36;9108:65;9167:4;9156:9;9152:20;9144:6;9108:65;:::i;:::-;-1:-1:-1;;;;;9211:32:25;;;;9204:4;9189:20;;;;9182:62;8424:826;;-1:-1:-1;;;;;8424:826:25:o;9255:168::-;9328:9;;;9359;;9376:15;;;9370:22;;9356:37;9346:71;;9397:18;;:::i;9428:127::-;9489:10;9484:3;9480:20;9477:1;9470:31;9520:4;9517:1;9510:15;9544:4;9541:1;9534:15;9560:806;9774:13;;9750:4;9735:20;;;9739:9;9708:4;9894:197;9908:4;9905:1;9902:11;9894:197;;;9971:13;;-1:-1:-1;;;;;9967:39:25;9955:52;;10036:4;10064:17;;;;10027:14;;;;10003:1;9921:9;9894:197;;;9898:3;;;10138:4;10130:6;10126:17;10120:24;10153:68;10213:6;10202:9;10198:22;10184:12;10153:68;:::i;:::-;;10270:4;10262:6;10258:17;10252:24;10285:75;10352:6;10341:9;10337:22;10321:14;10285:75;:::i;:::-;;9560:806;;;;:::o;10371:225::-;10475:4;10454:12;;;10468;;;10450:31;10501:22;;;;10542:24;;;10532:58;;10570:18;;:::i;10601:127::-;10662:10;10657:3;10653:20;10650:1;10643:31;10693:4;10690:1;10683:15;10717:4;10714:1;10707:15;10733:217;10773:1;10799;10789:132;;10843:10;10838:3;10834:20;10831:1;10824:31;10878:4;10875:1;10868:15;10906:4;10903:1;10896:15;10789:132;-1:-1:-1;10935:9:25;;10733:217::o;10955:654::-;11359:4;11344:20;;11373:43;11348:9;11398:6;11373:43;:::i;:::-;11425:59;11479:3;11468:9;11464:19;11456:6;11425:59;:::i;:::-;11522:6;11515:4;11504:9;11500:20;11493:36;11538:65;11597:4;11586:9;11582:20;11574:6;11538:65;:::i;13340:148::-;13428:4;13407:12;;;13421;;;13403:31;;13446:13;;13443:39;;;13462:18;;:::i;13493:273::-;13561:6;13614:2;13602:9;13593:7;13589:23;13585:32;13582:52;;;13630:1;13627;13620:12;13582:52;13662:9;13656:16;13712:4;13705:5;13701:16;13694:5;13691:27;13681:55;;13732:1;13729;13722:12;13771:151;13861:4;13854:12;;;13840;;;13836:31;;13879:14;;13876:40;;;13896:18;;:::i;13927:375::-;14015:1;14033:5;14047:249;14068:1;14058:8;14055:15;14047:249;;;14118:4;14113:3;14109:14;14103:4;14100:24;14097:50;;;14127:18;;:::i;:::-;14177:1;14167:8;14163:16;14160:49;;;14191:16;;;;14160:49;14274:1;14270:16;;;;;14230:15;;14047:249;;14307:902;14356:5;14386:8;14376:80;;-1:-1:-1;14427:1:25;14441:5;;14376:80;14475:4;14465:76;;-1:-1:-1;14512:1:25;14526:5;;14465:76;14557:4;14575:1;14570:59;;;;14643:1;14638:174;;;;14550:262;;14570:59;14600:1;14591:10;;14614:5;;;14638:174;14675:3;14665:8;14662:17;14659:43;;;14682:18;;:::i;:::-;-1:-1:-1;;14738:1:25;14724:16;;14797:5;;14550:262;;14896:2;14886:8;14883:16;14877:3;14871:4;14868:13;14864:36;14858:2;14848:8;14845:16;14840:2;14834:4;14831:12;14827:35;14824:77;14821:203;;;-1:-1:-1;14933:19:25;;;15009:5;;14821:203;15056:42;-1:-1:-1;;15081:8:25;15075:4;15056:42;:::i;:::-;15134:6;15130:1;15126:6;15122:19;15113:7;15110:32;15107:58;;;15145:18;;:::i;:::-;15183:20;;14307:902;-1:-1:-1;;;14307:902:25:o;15214:140::-;15272:5;15301:47;15342:4;15332:8;15328:19;15322:4;15301:47;:::i"},"methodIdentifiers":{"exactInput(SwapLibrary.SwapConfig,address,address,uint256,uint256)":"77566915","exactOutput(SwapLibrary.SwapConfig,address,address,uint256,uint256)":"581e517d","validate(SwapLibrary.SwapConfig)":"b2fca32c"}}}},"project/contracts/dependencies/ICurveRouter.sol":{"ICurveRouter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address[11]","name":"route","type":"address[11]"},{"indexed":false,"internalType":"uint256[5][5]","name":"swap_params","type":"uint256[5][5]"},{"indexed":false,"internalType":"address[5]","name":"pools","type":"address[5]"},{"indexed":false,"internalType":"uint256","name":"in_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"out_amount","type":"uint256"}],"name":"Exchange","type":"event"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_expected","type":"uint256"}],"name":"exchange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_expected","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"}],"name":"exchange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_expected","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"exchange","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_tokens","type":"address[5]"},{"internalType":"address[5]","name":"_second_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_second_base_tokens","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_tokens","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_out_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_pools","type":"address[5]"},{"internalType":"address[5]","name":"_base_tokens","type":"address[5]"},{"internalType":"address[5]","name":"_second_base_pools","type":"address[5]"}],"name":"get_dx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address[5]","name":"_pools","type":"address[5]"}],"name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[11]","name":"_route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"_swap_params","type":"uint256[5][5]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"get_dy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"exchange(address[11],uint256[5][5],uint256,uint256)":"371dc447","exchange(address[11],uint256[5][5],uint256,uint256,address[5])":"5c9c18e2","exchange(address[11],uint256[5][5],uint256,uint256,address[5],address)":"c872a3c5","get_dx(address[11],uint256[5][5],uint256,address[5])":"c07b5353","get_dx(address[11],uint256[5][5],uint256,address[5],address[5])":"81fc0ca5","get_dx(address[11],uint256[5][5],uint256,address[5],address[5],address[5])":"90e7e205","get_dx(address[11],uint256[5][5],uint256,address[5],address[5],address[5],address[5])":"d10eb385","get_dx(address[11],uint256[5][5],uint256,address[5],address[5],address[5],address[5],address[5])":"6d654ccd","get_dy(address[11],uint256[5][5],uint256)":"81889a2c","get_dy(address[11],uint256[5][5],uint256,address[5])":"637653cb"}}}},"project/contracts/interfaces/ISwapRouterErrors.sol":{"ISwapRouterErrors":{"abi":[{"inputs":[],"name":"AmountCannotBeZero","type":"error"},{"inputs":[],"name":"DeadlineInThePast","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"name":"InputAmountExceedsSlippage","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"name":"OutputAmountLessThanSlippage","type":"error"},{"inputs":[],"name":"RecipientCannotBeZero","type":"error"},{"inputs":[],"name":"TokenCannotBeZero","type":"error"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33"}}}},"project/contracts/mocks/CurveRoutesTesterMock.sol":{"CurveRoutesTesterMock":{"abi":[{"inputs":[],"name":"AtLeastOneRoute","type":"error"},{"inputs":[],"name":"CurveRouterCantBeZero","type":"error"},{"inputs":[],"name":"InvalidLength","type":"error"},{"inputs":[{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"name":"InvalidRoute","type":"error"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"RouteNotFound","type":"error"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"TooManySwaps","type":"error"},{"inputs":[{"internalType":"bytes","name":"curveRoutes","type":"bytes"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"findRoute","outputs":[{"internalType":"contract ICurveRouter","name":"router","type":"address"},{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"curveRoutes","type":"bytes"},{"internalType":"uint256","name":"offset","type":"uint256"}],"name":"readRoute","outputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"},{"components":[{"internalType":"address[11]","name":"route","type":"address[11]"},{"internalType":"uint256[5][5]","name":"swapParams","type":"uint256[5][5]"},{"internalType":"address[5]","name":"pools","type":"address[5]"}],"internalType":"struct CurveRoutes.CurveRoute","name":"route","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"nSwaps","type":"uint8"}],"name":"routeSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"curveRoutes","type":"bytes"}],"name":"validate","outputs":[],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600e575f5ffd5b50610d068061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634eb942591461004e578063588f4ff4146100785780637ea71c9b14610099578063c16e50ef146100ba575b5f5ffd5b61006161005c366004610a38565b6100cf565b60405161006f929190610b5a565b60405180910390f35b61008b610086366004610b7f565b6100f0565b60405161006f929190610bc1565b6100ac6100a7366004610bd9565b61010e565b60405190815260200161006f565b6100cd6100c8366004610bf9565b61011e565b005b5f6100d86108e2565b6100e385858561012a565b915091505b935093915050565b5f6100f96108e2565b610103848461026d565b915091509250929050565b5f61011882610568565b92915050565b610127816105c5565b50565b5f6101336108e2565b61013d855f610803565b91505f61015561014e601483610c47565b8790610867565b90505f6001610165601483610c47565b61016f9190610c47565b90505f5b8260ff1681101561023b575f6101898984610867565b90506001600160a01b0388166101aa6101a3600186610c47565b8b90610803565b6001600160a01b031614801561020157506001600160a01b0387166101f66101d660ff84166014610c5a565b6101e1906002610c5a565b6101ec600187610c47565b6101a39190610c47565b6001600160a01b0316145b1561021d57610210898461026d565b95506100e8945050505050565b61022681610568565b6102309084610c47565b925050600101610173565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044015b60405180910390fd5b5f6102766108e2565b6102808484610867565b915060058260ff1611156102ac57604051635b030b5960e11b815260ff83166004820152602401610264565b5f5b6102b7836108c2565b811015610316576102e86102cc601483610c5a565b6102d7600187610c47565b6102e19190610c47565b8690610803565b825182600b81106102fb576102fb610c71565b6001600160a01b0390921660209290920201526001016102ae565b506014610322836108c2565b61032c9190610c5a565b610337906001610c47565b6103419084610c47565b92505f5b8260ff168110156104e45761037a61035e600183610c5a565b610369906005610c5a565b6103739086610c47565b8690610867565b60ff168260200151826005811061039357610393610c71565b6020020151526103c76103a7600183610c5a565b6103b2906005610c5a565b6103bc9086610c47565b610373906001610c47565b60ff16826020015182600581106103e0576103e0610c71565b60200201516001602002015261041a6103fa600183610c5a565b610405906005610c5a565b61040f9086610c47565b610373906002610c47565b60ff168260200151826005811061043357610433610c71565b60200201516040015261046a61044a600183610c5a565b610455906005610c5a565b61045f9086610c47565b610373906003610c47565b60ff168260200151826005811061048357610483610c71565b6020020151606001526104ba61049a600183610c5a565b6104a5906005610c5a565b6104af9086610c47565b610373906004610c47565b60ff16826020015182600581106104d3576104d3610c71565b602002015160800152600101610345565b506104f3600160ff8416610c5a565b6104fe906005610c5a565b6105089084610c47565b92505f5b8260ff168110156105605761052f610525601483610c5a565b6102e19086610c47565b8260400151826005811061054557610545610c71565b6001600160a01b03909216602092909202015260010161050c565b509250929050565b5f610577601460ff8416610c5a565b6001610584846005610c85565b60ff166105919190610c5a565b601461059c856108c2565b6105a69190610c5a565b6105b1906001610c47565b6105bb9190610c47565b6101189190610c47565b5f6105d08282610803565b90506001600160a01b0381166105f95760405163e368363760e01b815260040160405180910390fd5b5f61060f610608601483610c47565b8490610867565b90508060ff165f03610634576040516301ec987f60e31b815260040160405180910390fd5b5f6001610642601483610c47565b61064c9190610c47565b90505f5b8260ff168110156107db575f5f610667878561026d565b915091505f5b8260ff1681101561070e5781515f90610687836002610c5a565b600b811061069757610697610c71565b60200201516001600160a01b031614806106e6575081515f906106bb836002610c5a565b6106c6906001610c47565b600b81106106d6576106d6610c71565b60200201516001600160a01b0316145b156107065781604051635875b11160e01b81526004016102649190610ca8565b60010161066d565b5080515f9061071e846002610c85565b60ff16600b811061073157610731610c71565b60200201516001600160a01b03160361075f5780604051635875b11160e01b81526004016102649190610ca8565b60058260ff161415801561079c575080515f9061077b846108c2565b600b811061078b5761078b610c71565b60200201516001600160a01b031614155b156107bc5780604051635875b11160e01b81526004016102649190610ca8565b6107c582610568565b6107cf9085610c47565b93505050600101610650565b50808451146107fd5760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f61080f826014610c47565b835110156108575760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610264565b500160200151600160601b900490565b5f610873826001610c47565b835110156108b95760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401610264565b50016001015190565b5f6108ce826002610c85565b6108d9906001610cb7565b60ff1692915050565b60405180606001604052806108f5610914565b8152602001610902610933565b815260200161090f610960565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61094a610960565b8152602001906001900390816109425790505090565b6040518060a001604052806005906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126109a1575f5ffd5b813567ffffffffffffffff8111156109bb576109bb61097e565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156109ea576109ea61097e565b604052818152838201602001851015610a01575f5ffd5b816020850160208301375f918101602001919091529392505050565b80356001600160a01b0381168114610a33575f5ffd5b919050565b5f5f5f60608486031215610a4a575f5ffd5b833567ffffffffffffffff811115610a60575f5ffd5b610a6c86828701610992565b935050610a7b60208501610a1d565b9150610a8960408501610a1d565b90509250925092565b805f5b60058110156107fd5781516001600160a01b0316845260209384019390910190600101610a95565b8051825f5b600b811015610aea5782516001600160a01b0316825260209283019290910190600101610ac2565b505050602081015161016083015f5b6005811015610b3f578251825f5b6005811015610b26578251825260209283019290910190600101610b07565b5050506020929092019160a09190910190600101610af9565b5050506040810151610b55610480840182610a92565b505050565b6001600160a01b03831681526105408101610b786020830184610abd565b9392505050565b5f5f60408385031215610b90575f5ffd5b823567ffffffffffffffff811115610ba6575f5ffd5b610bb285828601610992565b95602094909401359450505050565b60ff831681526105408101610b786020830184610abd565b5f60208284031215610be9575f5ffd5b813560ff81168114610b78575f5ffd5b5f60208284031215610c09575f5ffd5b813567ffffffffffffffff811115610c1f575f5ffd5b610c2b84828501610992565b949350505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561011857610118610c33565b808202811582820484141761011857610118610c33565b634e487b7160e01b5f52603260045260245ffd5b60ff8181168382160290811690818114610ca157610ca1610c33565b5092915050565b61052081016101188284610abd565b60ff818116838216019081111561011857610118610c3356fea2646970667358221220e083537ebf03219a8e938c92688b6ee69707088077ceed18e2970368054efa6164736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xD06 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4EB94259 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x588F4FF4 EQ PUSH2 0x78 JUMPI DUP1 PUSH4 0x7EA71C9B EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xC16E50EF EQ PUSH2 0xBA JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x61 PUSH2 0x5C CALLDATASIZE PUSH1 0x4 PUSH2 0xA38 JUMP JUMPDEST PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6F SWAP3 SWAP2 SWAP1 PUSH2 0xB5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8B PUSH2 0x86 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7F JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6F SWAP3 SWAP2 SWAP1 PUSH2 0xBC1 JUMP JUMPDEST PUSH2 0xAC PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0x10E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6F JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xBF9 JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH2 0xD8 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0xE3 DUP6 DUP6 DUP6 PUSH2 0x12A JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xF9 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x103 DUP5 DUP5 PUSH2 0x26D JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x118 DUP3 PUSH2 0x568 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x127 DUP2 PUSH2 0x5C5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x133 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x13D DUP6 PUSH0 PUSH2 0x803 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0x155 PUSH2 0x14E PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x867 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0x165 PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x16F SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x23B JUMPI PUSH0 PUSH2 0x189 DUP10 DUP5 PUSH2 0x867 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x1AA PUSH2 0x1A3 PUSH1 0x1 DUP7 PUSH2 0xC47 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x803 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x201 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1F6 PUSH2 0x1D6 PUSH1 0xFF DUP5 AND PUSH1 0x14 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x1E1 SWAP1 PUSH1 0x2 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x1EC PUSH1 0x1 DUP8 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x1A3 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x21D JUMPI PUSH2 0x210 DUP10 DUP5 PUSH2 0x26D JUMP JUMPDEST SWAP6 POP PUSH2 0xE8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x226 DUP2 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x230 SWAP1 DUP5 PUSH2 0xC47 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x173 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8C9AEC7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x276 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x280 DUP5 DUP5 PUSH2 0x867 JUMP JUMPDEST SWAP2 POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x2AC JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B030B59 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x264 JUMP JUMPDEST PUSH0 JUMPDEST PUSH2 0x2B7 DUP4 PUSH2 0x8C2 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH2 0x2E8 PUSH2 0x2CC PUSH1 0x14 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x2D7 PUSH1 0x1 DUP8 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x2E1 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x803 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x2FB JUMPI PUSH2 0x2FB PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2AE JUMP JUMPDEST POP PUSH1 0x14 PUSH2 0x322 DUP4 PUSH2 0x8C2 JUMP JUMPDEST PUSH2 0x32C SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x337 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x341 SWAP1 DUP5 PUSH2 0xC47 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x4E4 JUMPI PUSH2 0x37A PUSH2 0x35E PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x369 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x373 SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x867 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x393 JUMPI PUSH2 0x393 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x3C7 PUSH2 0x3A7 PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x3B2 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x3BC SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x3E0 JUMPI PUSH2 0x3E0 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x41A PUSH2 0x3FA PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x405 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x40F SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x2 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x433 JUMPI PUSH2 0x433 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x46A PUSH2 0x44A PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x455 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x45F SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x3 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x483 JUMPI PUSH2 0x483 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x4BA PUSH2 0x49A PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x4A5 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x4AF SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x4 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x345 JUMP JUMPDEST POP PUSH2 0x4F3 PUSH1 0x1 PUSH1 0xFF DUP5 AND PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x508 SWAP1 DUP5 PUSH2 0xC47 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH2 0x52F PUSH2 0x525 PUSH1 0x14 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x2E1 SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x545 JUMPI PUSH2 0x545 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x50C JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x577 PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x584 DUP5 PUSH1 0x5 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x591 SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x14 PUSH2 0x59C DUP6 PUSH2 0x8C2 JUMP JUMPDEST PUSH2 0x5A6 SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x5B1 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x5BB SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x118 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH0 PUSH2 0x5D0 DUP3 DUP3 PUSH2 0x803 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE3683637 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x60F PUSH2 0x608 PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x867 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH0 SUB PUSH2 0x634 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1EC987F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x642 PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x64C SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x7DB JUMPI PUSH0 PUSH0 PUSH2 0x667 DUP8 DUP6 PUSH2 0x26D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x70E JUMPI DUP2 MLOAD PUSH0 SWAP1 PUSH2 0x687 DUP4 PUSH1 0x2 PUSH2 0xC5A JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0x697 JUMPI PUSH2 0x697 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x6E6 JUMPI POP DUP2 MLOAD PUSH0 SWAP1 PUSH2 0x6BB DUP4 PUSH1 0x2 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x6C6 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0x6D6 JUMPI PUSH2 0x6D6 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x706 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x264 SWAP2 SWAP1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x66D JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0x71E DUP5 PUSH1 0x2 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0x731 JUMPI PUSH2 0x731 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x75F JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x264 SWAP2 SWAP1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x5 DUP3 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0x77B DUP5 PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0x78B JUMPI PUSH2 0x78B PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x7BC JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x264 SWAP2 SWAP1 PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0x7C5 DUP3 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x7CF SWAP1 DUP6 PUSH2 0xC47 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0x650 JUMP JUMPDEST POP DUP1 DUP5 MLOAD EQ PUSH2 0x7FD JUMPI PUSH1 0x40 MLOAD PUSH4 0x251F56A1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x80F DUP3 PUSH1 0x14 PUSH2 0xC47 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x857 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x746F416464726573735F6F75744F66426F756E6473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x264 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x873 DUP3 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F55696E74385F6F75744F66426F756E6473 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x264 JUMP JUMPDEST POP ADD PUSH1 0x1 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8CE DUP3 PUSH1 0x2 PUSH2 0xC85 JUMP JUMPDEST PUSH2 0x8D9 SWAP1 PUSH1 0x1 PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8F5 PUSH2 0x914 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x902 PUSH2 0x933 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x90F PUSH2 0x960 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 JUMPDEST PUSH2 0x94A PUSH2 0x960 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x942 JUMPI SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9BB JUMPI PUSH2 0x9BB PUSH2 0x97E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x9EA JUMPI PUSH2 0x9EA PUSH2 0x97E JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0xA01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA33 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA4A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA6C DUP7 DUP3 DUP8 ADD PUSH2 0x992 JUMP JUMPDEST SWAP4 POP POP PUSH2 0xA7B PUSH1 0x20 DUP6 ADD PUSH2 0xA1D JUMP JUMPDEST SWAP2 POP PUSH2 0xA89 PUSH1 0x40 DUP6 ADD PUSH2 0xA1D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x7FD JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xA95 JUMP JUMPDEST DUP1 MLOAD DUP3 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0xAEA JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAC2 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x160 DUP4 ADD PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xB3F JUMPI DUP3 MLOAD DUP3 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xB26 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xB07 JUMP JUMPDEST POP POP POP PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0xA0 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAF9 JUMP JUMPDEST POP POP POP PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0xB55 PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0xA92 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH2 0x540 DUP2 ADD PUSH2 0xB78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xABD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBB2 DUP6 DUP3 DUP7 ADD PUSH2 0x992 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH2 0x540 DUP2 ADD PUSH2 0xB78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xABD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xB78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC09 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC1F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC2B DUP5 DUP3 DUP6 ADD PUSH2 0x992 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x118 JUMPI PUSH2 0x118 PUSH2 0xC33 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x118 JUMPI PUSH2 0x118 PUSH2 0xC33 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND MUL SWAP1 DUP2 AND SWAP1 DUP2 DUP2 EQ PUSH2 0xCA1 JUMPI PUSH2 0xCA1 PUSH2 0xC33 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x520 DUP2 ADD PUSH2 0x118 DUP3 DUP5 PUSH2 0xABD JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x118 JUMPI PUSH2 0x118 PUSH2 0xC33 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RJUMP 0x8353 PUSH31 0xBF03219A8E938C92688B6EE69707088077CEED18E2970368054EFA6164736F PUSH13 0x63430008230033000000000000 ","sourceMap":"178:718:21:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634eb942591461004e578063588f4ff4146100785780637ea71c9b14610099578063c16e50ef146100ba575b5f5ffd5b61006161005c366004610a38565b6100cf565b60405161006f929190610b5a565b60405180910390f35b61008b610086366004610b7f565b6100f0565b60405161006f929190610bc1565b6100ac6100a7366004610bd9565b61010e565b60405190815260200161006f565b6100cd6100c8366004610bf9565b61011e565b005b5f6100d86108e2565b6100e385858561012a565b915091505b935093915050565b5f6100f96108e2565b610103848461026d565b915091509250929050565b5f61011882610568565b92915050565b610127816105c5565b50565b5f6101336108e2565b61013d855f610803565b91505f61015561014e601483610c47565b8790610867565b90505f6001610165601483610c47565b61016f9190610c47565b90505f5b8260ff1681101561023b575f6101898984610867565b90506001600160a01b0388166101aa6101a3600186610c47565b8b90610803565b6001600160a01b031614801561020157506001600160a01b0387166101f66101d660ff84166014610c5a565b6101e1906002610c5a565b6101ec600187610c47565b6101a39190610c47565b6001600160a01b0316145b1561021d57610210898461026d565b95506100e8945050505050565b61022681610568565b6102309084610c47565b925050600101610173565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044015b60405180910390fd5b5f6102766108e2565b6102808484610867565b915060058260ff1611156102ac57604051635b030b5960e11b815260ff83166004820152602401610264565b5f5b6102b7836108c2565b811015610316576102e86102cc601483610c5a565b6102d7600187610c47565b6102e19190610c47565b8690610803565b825182600b81106102fb576102fb610c71565b6001600160a01b0390921660209290920201526001016102ae565b506014610322836108c2565b61032c9190610c5a565b610337906001610c47565b6103419084610c47565b92505f5b8260ff168110156104e45761037a61035e600183610c5a565b610369906005610c5a565b6103739086610c47565b8690610867565b60ff168260200151826005811061039357610393610c71565b6020020151526103c76103a7600183610c5a565b6103b2906005610c5a565b6103bc9086610c47565b610373906001610c47565b60ff16826020015182600581106103e0576103e0610c71565b60200201516001602002015261041a6103fa600183610c5a565b610405906005610c5a565b61040f9086610c47565b610373906002610c47565b60ff168260200151826005811061043357610433610c71565b60200201516040015261046a61044a600183610c5a565b610455906005610c5a565b61045f9086610c47565b610373906003610c47565b60ff168260200151826005811061048357610483610c71565b6020020151606001526104ba61049a600183610c5a565b6104a5906005610c5a565b6104af9086610c47565b610373906004610c47565b60ff16826020015182600581106104d3576104d3610c71565b602002015160800152600101610345565b506104f3600160ff8416610c5a565b6104fe906005610c5a565b6105089084610c47565b92505f5b8260ff168110156105605761052f610525601483610c5a565b6102e19086610c47565b8260400151826005811061054557610545610c71565b6001600160a01b03909216602092909202015260010161050c565b509250929050565b5f610577601460ff8416610c5a565b6001610584846005610c85565b60ff166105919190610c5a565b601461059c856108c2565b6105a69190610c5a565b6105b1906001610c47565b6105bb9190610c47565b6101189190610c47565b5f6105d08282610803565b90506001600160a01b0381166105f95760405163e368363760e01b815260040160405180910390fd5b5f61060f610608601483610c47565b8490610867565b90508060ff165f03610634576040516301ec987f60e31b815260040160405180910390fd5b5f6001610642601483610c47565b61064c9190610c47565b90505f5b8260ff168110156107db575f5f610667878561026d565b915091505f5b8260ff1681101561070e5781515f90610687836002610c5a565b600b811061069757610697610c71565b60200201516001600160a01b031614806106e6575081515f906106bb836002610c5a565b6106c6906001610c47565b600b81106106d6576106d6610c71565b60200201516001600160a01b0316145b156107065781604051635875b11160e01b81526004016102649190610ca8565b60010161066d565b5080515f9061071e846002610c85565b60ff16600b811061073157610731610c71565b60200201516001600160a01b03160361075f5780604051635875b11160e01b81526004016102649190610ca8565b60058260ff161415801561079c575080515f9061077b846108c2565b600b811061078b5761078b610c71565b60200201516001600160a01b031614155b156107bc5780604051635875b11160e01b81526004016102649190610ca8565b6107c582610568565b6107cf9085610c47565b93505050600101610650565b50808451146107fd5760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f61080f826014610c47565b835110156108575760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610264565b500160200151600160601b900490565b5f610873826001610c47565b835110156108b95760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606401610264565b50016001015190565b5f6108ce826002610c85565b6108d9906001610cb7565b60ff1692915050565b60405180606001604052806108f5610914565b8152602001610902610933565b815260200161090f610960565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61094a610960565b8152602001906001900390816109425790505090565b6040518060a001604052806005906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126109a1575f5ffd5b813567ffffffffffffffff8111156109bb576109bb61097e565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156109ea576109ea61097e565b604052818152838201602001851015610a01575f5ffd5b816020850160208301375f918101602001919091529392505050565b80356001600160a01b0381168114610a33575f5ffd5b919050565b5f5f5f60608486031215610a4a575f5ffd5b833567ffffffffffffffff811115610a60575f5ffd5b610a6c86828701610992565b935050610a7b60208501610a1d565b9150610a8960408501610a1d565b90509250925092565b805f5b60058110156107fd5781516001600160a01b0316845260209384019390910190600101610a95565b8051825f5b600b811015610aea5782516001600160a01b0316825260209283019290910190600101610ac2565b505050602081015161016083015f5b6005811015610b3f578251825f5b6005811015610b26578251825260209283019290910190600101610b07565b5050506020929092019160a09190910190600101610af9565b5050506040810151610b55610480840182610a92565b505050565b6001600160a01b03831681526105408101610b786020830184610abd565b9392505050565b5f5f60408385031215610b90575f5ffd5b823567ffffffffffffffff811115610ba6575f5ffd5b610bb285828601610992565b95602094909401359450505050565b60ff831681526105408101610b786020830184610abd565b5f60208284031215610be9575f5ffd5b813560ff81168114610b78575f5ffd5b5f60208284031215610c09575f5ffd5b813567ffffffffffffffff811115610c1f575f5ffd5b610c2b84828501610992565b949350505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561011857610118610c33565b808202811582820484141761011857610118610c33565b634e487b7160e01b5f52603260045260245ffd5b60ff8181168382160290811690818114610ca157610ca1610c33565b5092915050565b61052081016101188284610abd565b60ff818116838216019081111561011857610118610c3356fea2646970667358221220e083537ebf03219a8e938c92688b6ee69707088077ceed18e2970368054efa6164736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4EB94259 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0x588F4FF4 EQ PUSH2 0x78 JUMPI DUP1 PUSH4 0x7EA71C9B EQ PUSH2 0x99 JUMPI DUP1 PUSH4 0xC16E50EF EQ PUSH2 0xBA JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x61 PUSH2 0x5C CALLDATASIZE PUSH1 0x4 PUSH2 0xA38 JUMP JUMPDEST PUSH2 0xCF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6F SWAP3 SWAP2 SWAP1 PUSH2 0xB5A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8B PUSH2 0x86 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7F JUMP JUMPDEST PUSH2 0xF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6F SWAP3 SWAP2 SWAP1 PUSH2 0xBC1 JUMP JUMPDEST PUSH2 0xAC PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0x10E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x6F JUMP JUMPDEST PUSH2 0xCD PUSH2 0xC8 CALLDATASIZE PUSH1 0x4 PUSH2 0xBF9 JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH2 0xD8 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0xE3 DUP6 DUP6 DUP6 PUSH2 0x12A JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xF9 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x103 DUP5 DUP5 PUSH2 0x26D JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x118 DUP3 PUSH2 0x568 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x127 DUP2 PUSH2 0x5C5 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x133 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x13D DUP6 PUSH0 PUSH2 0x803 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0x155 PUSH2 0x14E PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x867 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0x165 PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x16F SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x23B JUMPI PUSH0 PUSH2 0x189 DUP10 DUP5 PUSH2 0x867 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0x1AA PUSH2 0x1A3 PUSH1 0x1 DUP7 PUSH2 0xC47 JUMP JUMPDEST DUP12 SWAP1 PUSH2 0x803 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x201 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH2 0x1F6 PUSH2 0x1D6 PUSH1 0xFF DUP5 AND PUSH1 0x14 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x1E1 SWAP1 PUSH1 0x2 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x1EC PUSH1 0x1 DUP8 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x1A3 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x21D JUMPI PUSH2 0x210 DUP10 DUP5 PUSH2 0x26D JUMP JUMPDEST SWAP6 POP PUSH2 0xE8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x226 DUP2 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x230 SWAP1 DUP5 PUSH2 0xC47 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 ADD PUSH2 0x173 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x8C9AEC7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE DUP7 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x276 PUSH2 0x8E2 JUMP JUMPDEST PUSH2 0x280 DUP5 DUP5 PUSH2 0x867 JUMP JUMPDEST SWAP2 POP PUSH1 0x5 DUP3 PUSH1 0xFF AND GT ISZERO PUSH2 0x2AC JUMPI PUSH1 0x40 MLOAD PUSH4 0x5B030B59 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x264 JUMP JUMPDEST PUSH0 JUMPDEST PUSH2 0x2B7 DUP4 PUSH2 0x8C2 JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x316 JUMPI PUSH2 0x2E8 PUSH2 0x2CC PUSH1 0x14 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x2D7 PUSH1 0x1 DUP8 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x2E1 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x803 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x2FB JUMPI PUSH2 0x2FB PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2AE JUMP JUMPDEST POP PUSH1 0x14 PUSH2 0x322 DUP4 PUSH2 0x8C2 JUMP JUMPDEST PUSH2 0x32C SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x337 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x341 SWAP1 DUP5 PUSH2 0xC47 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x4E4 JUMPI PUSH2 0x37A PUSH2 0x35E PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x369 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x373 SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x867 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x393 JUMPI PUSH2 0x393 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x3C7 PUSH2 0x3A7 PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x3B2 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x3BC SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x3E0 JUMPI PUSH2 0x3E0 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x41A PUSH2 0x3FA PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x405 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x40F SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x2 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x433 JUMPI PUSH2 0x433 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x46A PUSH2 0x44A PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x455 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x45F SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x3 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x483 JUMPI PUSH2 0x483 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x4BA PUSH2 0x49A PUSH1 0x1 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x4A5 SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x4AF SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x373 SWAP1 PUSH1 0x4 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x4D3 JUMPI PUSH2 0x4D3 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x80 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x345 JUMP JUMPDEST POP PUSH2 0x4F3 PUSH1 0x1 PUSH1 0xFF DUP5 AND PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x4FE SWAP1 PUSH1 0x5 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x508 SWAP1 DUP5 PUSH2 0xC47 JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH2 0x52F PUSH2 0x525 PUSH1 0x14 DUP4 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x2E1 SWAP1 DUP7 PUSH2 0xC47 JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x545 JUMPI PUSH2 0x545 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 SWAP1 SWAP3 MUL ADD MSTORE PUSH1 0x1 ADD PUSH2 0x50C JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x577 PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x1 PUSH2 0x584 DUP5 PUSH1 0x5 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x591 SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x14 PUSH2 0x59C DUP6 PUSH2 0x8C2 JUMP JUMPDEST PUSH2 0x5A6 SWAP2 SWAP1 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x5B1 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x5BB SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x118 SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST PUSH0 PUSH2 0x5D0 DUP3 DUP3 PUSH2 0x803 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE3683637 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x60F PUSH2 0x608 PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST DUP5 SWAP1 PUSH2 0x867 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xFF AND PUSH0 SUB PUSH2 0x634 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1EC987F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0x642 PUSH1 0x14 DUP4 PUSH2 0xC47 JUMP JUMPDEST PUSH2 0x64C SWAP2 SWAP1 PUSH2 0xC47 JUMP JUMPDEST SWAP1 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x7DB JUMPI PUSH0 PUSH0 PUSH2 0x667 DUP8 DUP6 PUSH2 0x26D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x70E JUMPI DUP2 MLOAD PUSH0 SWAP1 PUSH2 0x687 DUP4 PUSH1 0x2 PUSH2 0xC5A JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0x697 JUMPI PUSH2 0x697 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x6E6 JUMPI POP DUP2 MLOAD PUSH0 SWAP1 PUSH2 0x6BB DUP4 PUSH1 0x2 PUSH2 0xC5A JUMP JUMPDEST PUSH2 0x6C6 SWAP1 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0x6D6 JUMPI PUSH2 0x6D6 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x706 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x264 SWAP2 SWAP1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x66D JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0x71E DUP5 PUSH1 0x2 PUSH2 0xC85 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0x731 JUMPI PUSH2 0x731 PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x75F JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x264 SWAP2 SWAP1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x5 DUP3 PUSH1 0xFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x79C JUMPI POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0x77B DUP5 PUSH2 0x8C2 JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0x78B JUMPI PUSH2 0x78B PUSH2 0xC71 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x7BC JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x5875B111 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x264 SWAP2 SWAP1 PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0x7C5 DUP3 PUSH2 0x568 JUMP JUMPDEST PUSH2 0x7CF SWAP1 DUP6 PUSH2 0xC47 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x1 ADD PUSH2 0x650 JUMP JUMPDEST POP DUP1 DUP5 MLOAD EQ PUSH2 0x7FD JUMPI PUSH1 0x40 MLOAD PUSH4 0x251F56A1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x80F DUP3 PUSH1 0x14 PUSH2 0xC47 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x857 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x746F416464726573735F6F75744F66426F756E6473 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x264 JUMP JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x60 SHL SWAP1 DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x873 DUP3 PUSH1 0x1 PUSH2 0xC47 JUMP JUMPDEST DUP4 MLOAD LT ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x746F55696E74385F6F75744F66426F756E6473 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x264 JUMP JUMPDEST POP ADD PUSH1 0x1 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x8CE DUP3 PUSH1 0x2 PUSH2 0xC85 JUMP JUMPDEST PUSH2 0x8D9 SWAP1 PUSH1 0x1 PUSH2 0xCB7 JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8F5 PUSH2 0x914 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x902 PUSH2 0x933 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x90F PUSH2 0x960 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xB SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 JUMPDEST PUSH2 0x94A PUSH2 0x960 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x942 JUMPI SWAP1 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9BB JUMPI PUSH2 0x9BB PUSH2 0x97E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x9EA JUMPI PUSH2 0x9EA PUSH2 0x97E JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0xA01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA33 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA4A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA60 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA6C DUP7 DUP3 DUP8 ADD PUSH2 0x992 JUMP JUMPDEST SWAP4 POP POP PUSH2 0xA7B PUSH1 0x20 DUP6 ADD PUSH2 0xA1D JUMP JUMPDEST SWAP2 POP PUSH2 0xA89 PUSH1 0x40 DUP6 ADD PUSH2 0xA1D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0x7FD JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xA95 JUMP JUMPDEST DUP1 MLOAD DUP3 PUSH0 JUMPDEST PUSH1 0xB DUP2 LT ISZERO PUSH2 0xAEA JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAC2 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x160 DUP4 ADD PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xB3F JUMPI DUP3 MLOAD DUP3 PUSH0 JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xB26 JUMPI DUP3 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xB07 JUMP JUMPDEST POP POP POP PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0xA0 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAF9 JUMP JUMPDEST POP POP POP PUSH1 0x40 DUP2 ADD MLOAD PUSH2 0xB55 PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0xA92 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH2 0x540 DUP2 ADD PUSH2 0xB78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xABD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB90 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBB2 DUP6 DUP3 DUP7 ADD PUSH2 0x992 JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH2 0x540 DUP2 ADD PUSH2 0xB78 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xABD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xB78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC09 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC1F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC2B DUP5 DUP3 DUP6 ADD PUSH2 0x992 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x118 JUMPI PUSH2 0x118 PUSH2 0xC33 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x118 JUMPI PUSH2 0x118 PUSH2 0xC33 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND MUL SWAP1 DUP2 AND SWAP1 DUP2 DUP2 EQ PUSH2 0xCA1 JUMPI PUSH2 0xCA1 PUSH2 0xC33 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x520 DUP2 ADD PUSH2 0x118 DUP3 DUP5 PUSH2 0xABD JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x118 JUMPI PUSH2 0x118 PUSH2 0xC33 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RJUMP 0x8353 PUSH31 0xBF03219A8E938C92688B6EE69707088077CEED18E2970368054EFA6164736F PUSH13 0x63430008230033000000000000 ","sourceMap":"178:718:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;646:248;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;319:207;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;530:112::-;;;;;;:::i;:::-;;:::i;:::-;;;4614:25:25;;;4602:2;4587:18;530:112:21;4468:177:25;213:102:21;;;;;;:::i;:::-;;:::i;:::-;;646:248;765:19;786:35;;:::i;:::-;836:53;858:11;871:7;880:8;836:21;:53::i;:::-;829:60;;;;646:248;;;;;;;:::o;319:207::-;415:12;429:35;;:::i;:::-;479:42;501:11;514:6;479:21;:42::i;:::-;472:49;;;;319:207;;;;;:::o;530:112::-;586:7;608:29;630:6;608:21;:29::i;:::-;601:36;530:112;-1:-1:-1;;530:112:21:o;213:102::-;277:33;298:11;277:20;:33::i;:::-;213:102;:::o;4113:779:16:-;4232:19;4253:23;;:::i;:::-;4306:36;:11;1067:1;4306:21;:36::i;:::-;4284:59;-1:-1:-1;4349:13:16;4365:36;1116:28;932:2;4349:13;1116:28;:::i;:::-;4365:11;;:19;:36::i;:::-;4349:52;-1:-1:-1;4407:14:16;977:1;1116:28;932:2;4407:14;1116:28;:::i;:::-;1195;;;;:::i;:::-;4407:35;;4453:9;4448:395;4468:7;4464:11;;:1;:11;4448:395;;;4490:12;4505:27;:11;4525:6;4505:19;:27::i;:::-;4490:42;-1:-1:-1;;;;;;4553:53:16;;:42;4575:19;977:1;4575:6;:19;:::i;:::-;4553:11;;:21;:42::i;:::-;-1:-1:-1;;;;;4553:53:16;;:147;;;;-1:-1:-1;;;;;;4618:82:16;;:70;4662:21;;;;932:2;4662:21;:::i;:::-;:25;;4686:1;4662:25;:::i;:::-;4640:19;977:1;4640:6;:19;:::i;:::-;:47;;;;:::i;4618:70::-;-1:-1:-1;;;;;4618:82:16;;4553:147;4540:262;;;4731:30;4741:11;4754:6;4731:9;:30::i;:::-;4719:42;-1:-1:-1;4771:22:16;;-1:-1:-1;;;;;4771:22:16;4540:262;4819:17;4829:6;4819:9;:17::i;:::-;4809:27;;;;:::i;:::-;;-1:-1:-1;;4477:3:16;;4448:395;;;-1:-1:-1;4855:32:16;;-1:-1:-1;;;4855:32:16;;-1:-1:-1;;;;;5602:32:25;;;4855::16;;;5584:51:25;5671:32;;5651:18;;;5644:60;5557:18;;4855:32:16;;;;;;;;2684:1065;2780:12;2794:23;;:::i;:::-;2834:27;:11;2854:6;2834:19;:27::i;:::-;2825:36;;1020:1;2871:6;:18;;;2867:51;;;2898:20;;-1:-1:-1;;;2898:20:16;;5887:4:25;5875:17;;2898:20:16;;;5857:36:25;5830:18;;2898:20:16;5715:184:25;2867:51:16;2929:9;2924:137;2944:17;2954:6;2944:9;:17::i;:::-;2940:1;:21;2924:137;;;2993:61;3037:16;932:2;3037:1;:16;:::i;:::-;3015:19;977:1;3015:6;:19;:::i;:::-;:38;;;;:::i;:::-;2993:11;;:21;:61::i;:::-;2976:11;;2988:1;2976:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;2976:78:16;;;:14;;;;;;:78;2963:3;;2924:137;;;;932:2;3089:17;3099:6;3089:9;:17::i;:::-;:32;;;;:::i;:::-;3076:45;;977:1;3076:45;:::i;:::-;3066:55;;;;:::i;:::-;;;3132:9;3127:461;3147:6;3143:10;;:1;:10;3127:461;;;3193:48;3222:14;977:1;3222;:14;:::i;:::-;:18;;3239:1;3222:18;:::i;:::-;3213:27;;:6;:27;:::i;:::-;3193:11;;:19;:48::i;:::-;3168:73;;:5;:16;;;3185:1;3168:19;;;;;;;:::i;:::-;;;;;:73;3274:52;3303:14;977:1;3303;:14;:::i;:::-;:18;;3320:1;3303:18;:::i;:::-;3294:27;;:6;:27;:::i;:::-;:31;;3324:1;3294:31;:::i;3274:52::-;3249:77;;:5;:16;;;3266:1;3249:19;;;;;;;:::i;:::-;;;;;3269:1;3249:22;;;:77;3359:52;3388:14;977:1;3388;:14;:::i;:::-;:18;;3405:1;3388:18;:::i;:::-;3379:27;;:6;:27;:::i;:::-;:31;;3409:1;3379:31;:::i;3359:52::-;3334:77;;:5;:16;;;3351:1;3334:19;;;;;;;:::i;:::-;;;;;:22;;:77;3444:52;3473:14;977:1;3473;:14;:::i;:::-;:18;;3490:1;3473:18;:::i;:::-;3464:27;;:6;:27;:::i;:::-;:31;;3494:1;3464:31;:::i;3444:52::-;3419:77;;:5;:16;;;3436:1;3419:19;;;;;;;:::i;:::-;;;;;:22;;:77;3529:52;3558:14;977:1;3558;:14;:::i;:::-;:18;;3575:1;3558:18;:::i;:::-;3549:27;;:6;:27;:::i;:::-;:31;;3579:1;3549:31;:::i;3529:52::-;3504:77;;:5;:16;;;3521:1;3504:19;;;;;;;:::i;:::-;;;;;:22;;:77;3155:3;;3127:461;;;-1:-1:-1;3603:19:16;977:1;3603:19;;;;:::i;:::-;:23;;3625:1;3603:23;:::i;:::-;3593:33;;;;:::i;:::-;;;3637:9;3632:113;3652:6;3648:10;;:1;:10;3632:113;;;3690:48;3721:16;932:2;3721:1;:16;:::i;:::-;3712:25;;:6;:25;:::i;3690:48::-;3673:5;:11;;;3685:1;3673:14;;;;;;;:::i;:::-;-1:-1:-1;;;;;3673:65:16;;;:14;;;;;;:65;3660:3;;3632:113;;;;2684:1065;;;;;:::o;3753:254::-;3809:7;3971:21;932:2;3971:21;;;;:::i;:::-;977:1;3923:10;:6;3932:1;3923:10;:::i;:::-;:23;;;;;;:::i;:::-;932:2;3866:17;3876:6;3866:9;:17::i;:::-;:38;;;;:::i;:::-;3837:67;;977:1;3837:67;:::i;:::-;:110;;;;:::i;:::-;:156;;;;:::i;1751:929::-;1815:19;1850:36;:11;1815:19;1850:21;:36::i;:::-;1815:72;-1:-1:-1;;;;;;1897:29:16;;1893:65;;1935:23;;-1:-1:-1;;;1935:23:16;;;;;;;;;;;1893:65;1964:13;1980:36;1116:28;932:2;1964:13;1116:28;:::i;:::-;1980:11;;:19;:36::i;:::-;1964:52;;2026:7;:12;;2037:1;2026:12;2022:42;;2047:17;;-1:-1:-1;;;2047:17:16;;;;;;;;;;;2022:42;2070:14;977:1;1116:28;932:2;2070:14;1116:28;:::i;:::-;1195;;;;:::i;:::-;2070:35;;2116:9;2111:503;2131:7;2127:11;;:1;:11;2111:503;;;2154:12;2168:23;2195:30;2205:11;2218:6;2195:9;:30::i;:::-;2153:72;;;;2238:9;2233:156;2253:6;2249:10;;:1;:10;2233:156;;;2280:11;;2310:1;;2292:5;:1;2296;2292:5;:::i;:::-;2280:18;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2280:32:16;;:72;;;-1:-1:-1;2316:11:16;;2350:1;;2328:5;:1;2332;2328:5;:::i;:::-;:9;;2336:1;2328:9;:::i;:::-;2316:22;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2316:36:16;;2280:72;2276:104;;;2374:5;2361:19;;-1:-1:-1;;;2361:19:16;;;;;;;;:::i;2276:104::-;2261:3;;2233:156;;;-1:-1:-1;2400:11:16;;2435:1;;2412:10;:6;2421:1;2412:10;:::i;:::-;2400:23;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2400:37:16;;2396:69;;2459:5;2446:19;;-1:-1:-1;;;2446:19:16;;;;;;;;:::i;2396:69::-;1020:1;2477:6;:19;;;;:67;;;;-1:-1:-1;2500:11:16;;2542:1;;2512:17;2522:6;2512:9;:17::i;:::-;2500:30;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2500:44:16;;;2477:67;2473:99;;;2566:5;2553:19;;-1:-1:-1;;;2553:19:16;;;;;;;;:::i;2473:99::-;2590:17;2600:6;2590:9;:17::i;:::-;2580:27;;;;:::i;:::-;;-1:-1:-1;;;2140:3:16;;2111:503;;;;2645:6;2623:11;:18;:28;2619:56;;2660:15;;-1:-1:-1;;;2660:15:16;;;;;;;;;;;2619:56;1809:871;;;1751:929;:::o;12432:354:15:-;12511:7;12555:11;:6;12564:2;12555:11;:::i;:::-;12538:6;:13;:28;;12530:62;;;;-1:-1:-1;;;12530:62:15;;6730:2:25;12530:62:15;;;6712:21:25;6769:2;6749:18;;;6742:30;-1:-1:-1;;;6788:18:25;;;6781:51;6849:18;;12530:62:15;6528:345:25;12530:62:15;-1:-1:-1;12680:30:15;12696:4;12680:30;12674:37;-1:-1:-1;;;12670:71:15;;;12432:354::o;12792:302::-;12869:5;12911:10;:6;12920:1;12911:10;:::i;:::-;12894:6;:13;:27;;12886:60;;;;-1:-1:-1;;;12886:60:15;;7080:2:25;12886:60:15;;;7062:21:25;7119:2;7099:18;;;7092:30;-1:-1:-1;;;7138:18:25;;;7131:49;7197:18;;12886:60:15;6878:343:25;12886:60:15;-1:-1:-1;13022:29:15;13038:3;13022:29;13016:36;;12792:302::o;4011:98:16:-;4066:7;4089:10;:6;4098:1;4089:10;:::i;:::-;:14;;4102:1;4089:14;:::i;:::-;4081:23;;;4011:98;-1:-1:-1;;4011:98:16:o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:25:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:725;188:5;241:3;234:4;226:6;222:17;218:27;208:55;;259:1;256;249:12;208:55;299:6;286:20;329:18;321:6;318:30;315:56;;;351:18;;:::i;:::-;400:2;394:9;492:2;454:17;;-1:-1:-1;;450:31:25;;;483:2;446:40;442:54;430:67;;527:18;512:34;;548:22;;;509:62;506:88;;;574:18;;:::i;:::-;610:2;603:22;634;;;675:19;;;696:4;671:30;668:39;-1:-1:-1;665:59:25;;;720:1;717;710:12;665:59;784:6;777:4;769:6;765:17;758:4;750:6;746:17;733:58;839:1;811:19;;;832:4;807:30;800:41;;;;815:6;146:725;-1:-1:-1;;;146:725:25:o;876:173::-;944:20;;-1:-1:-1;;;;;993:31:25;;983:42;;973:70;;1039:1;1036;1029:12;973:70;876:173;;;:::o;1054:468::-;1140:6;1148;1156;1209:2;1197:9;1188:7;1184:23;1180:32;1177:52;;;1225:1;1222;1215:12;1177:52;1265:9;1252:23;1298:18;1290:6;1287:30;1284:50;;;1330:1;1327;1320:12;1284:50;1353:49;1394:7;1385:6;1374:9;1370:22;1353:49;:::i;:::-;1343:59;;;1421:38;1455:2;1444:9;1440:18;1421:38;:::i;:::-;1411:48;;1478:38;1512:2;1501:9;1497:18;1478:38;:::i;:::-;1468:48;;1054:468;;;;;:::o;1527:329::-;1620:5;1643:1;1653:197;1667:4;1664:1;1661:11;1653:197;;;1730:13;;-1:-1:-1;;;;;1726:39:25;1714:52;;1795:4;1786:14;;;;1823:17;;;;1762:1;1680:9;1653:197;;1861:1215;1935:12;;1969:3;2036:1;2046:203;2060:4;2057:1;2054:11;2046:203;;;2125:13;;-1:-1:-1;;;;;2121:39:25;2107:54;;2194:4;2222:17;;;;2183:16;;;;2157:1;2073:9;2046:203;;;2050:3;;;2295:4;2288:5;2284:16;2278:23;2332:6;2327:3;2323:16;2419:1;2429:520;2445:4;2440:3;2437:13;2429:520;;;2506:15;;2547:5;2634:1;2648:209;2664:4;2659:3;2656:13;2648:209;;;2737:15;;2723:30;;2790:4;2824:19;;;;2779:16;;;;2688:1;2679:11;2648:209;;;-1:-1:-1;;;2934:4:25;2920:19;;;;;2890:4;2879:16;;;;;2469:1;2460:11;2429:520;;;2433:3;;;2997:4;2990:5;2986:16;2980:23;3012:58;3062:6;3057:3;3053:16;3037:14;3012:58;:::i;:::-;;1861:1215;;:::o;3081:375::-;-1:-1:-1;;;;;3352:32:25;;3334:51;;3320:4;3305:20;;3394:56;3446:2;3431:18;;3423:6;3394:56;:::i;:::-;3081:375;;;;;:::o;3461:388::-;3538:6;3546;3599:2;3587:9;3578:7;3574:23;3570:32;3567:52;;;3615:1;3612;3605:12;3567:52;3655:9;3642:23;3688:18;3680:6;3677:30;3674:50;;;3720:1;3717;3710:12;3674:50;3743:49;3784:7;3775:6;3764:9;3760:22;3743:49;:::i;:::-;3733:59;3839:2;3824:18;;;;3811:32;;-1:-1:-1;;;;3461:388:25:o;3854:335::-;4112:4;4100:17;;4082:36;;4068:4;4053:20;;4127:56;4179:2;4164:18;;4156:6;4127:56;:::i;4194:269::-;4251:6;4304:2;4292:9;4283:7;4279:23;4275:32;4272:52;;;4320:1;4317;4310:12;4272:52;4359:9;4346:23;4409:4;4402:5;4398:16;4391:5;4388:27;4378:55;;4429:1;4426;4419:12;4650:320;4718:6;4771:2;4759:9;4750:7;4746:23;4742:32;4739:52;;;4787:1;4784;4777:12;4739:52;4827:9;4814:23;4860:18;4852:6;4849:30;4846:50;;;4892:1;4889;4882:12;4846:50;4915:49;4956:7;4947:6;4936:9;4932:22;4915:49;:::i;:::-;4905:59;4650:320;-1:-1:-1;;;;4650:320:25:o;4975:127::-;5036:10;5031:3;5027:20;5024:1;5017:31;5067:4;5064:1;5057:15;5091:4;5088:1;5081:15;5107:125;5172:9;;;5193:10;;;5190:36;;;5206:18;;:::i;5237:168::-;5310:9;;;5341;;5358:15;;;5352:22;;5338:37;5328:71;;5379:18;;:::i;5904:127::-;5965:10;5960:3;5956:20;5953:1;5946:31;5996:4;5993:1;5986:15;6020:4;6017:1;6010:15;6036:225;6140:4;6119:12;;;6133;;;6115:31;6166:22;;;;6207:24;;;6197:58;;6235:18;;:::i;:::-;6197:58;6036:225;;;;:::o;6266:257::-;6456:4;6441:20;;6470:47;6445:9;6499:6;6470:47;:::i;7226:148::-;7314:4;7293:12;;;7307;;;7289:31;;7332:13;;7329:39;;;7348:18;;:::i"},"methodIdentifiers":{"findRoute(bytes,address,address)":"4eb94259","readRoute(bytes,uint256)":"588f4ff4","routeSize(uint8)":"7ea71c9b","validate(bytes)":"c16e50ef"}}}},"project/contracts/mocks/SwapRouterMock.sol":{"SwapRouterMock":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AdminCannotBeZero","type":"error"},{"inputs":[],"name":"AmountCannotBeZero","type":"error"},{"inputs":[],"name":"DeadlineInThePast","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"name":"InputAmountExceedsSlippage","type":"error"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"name":"NotEnoughBalance","type":"error"},{"inputs":[],"name":"NotImplemented","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"name":"OutputAmountLessThanSlippage","type":"error"},{"inputs":[],"name":"RecipientCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"TokenCannotBeZero","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenIn","type":"address"},{"indexed":false,"internalType":"address","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"PriceUpdated","type":"event"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setCurrentPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6080604052348015600e575f5ffd5b50604051610d1e380380610d1e833981016040819052602b916056565b6001600160a01b038116605157604051636b35b1b760e01b815260040160405180910390fd5b506081565b5f602082840312156065575f5ffd5b81516001600160a01b0381168114607a575f5ffd5b9392505050565b610c908061008e5f395ff3fe60806040526004361061006e575f3560e01c8063db3e21981161004c578063db3e2198146100cb578063f28c0498146100b8578063f3fef3a3146100de578063fa461e33146100fd575f5ffd5b8063414bf389146100725780634562e01514610097578063c04b8d59146100b8575b5f5ffd5b610085610080366004610944565b61011c565b60405190815260200160405180910390f35b3480156100a2575f5ffd5b506100b66100b136600461097a565b6102ef565b005b6100856100c63660046109c4565b6103a9565b6100856100d9366004610944565b6103c3565b3480156100e9575f5ffd5b506100b66100f83660046109fe565b61061b565b348015610108575f5ffd5b506100b6610117366004610a26565b61067a565b5f8061012e6080840160608501610aa2565b6001600160a01b0316036101545760405162e18e7f60e71b815260040160405180910390fd5b428260800135101561017c576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116101a05760405163d11b25af60e01b815260040160405180910390fd5b5f610234670de0b6b3a764000082806101bc6020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906101ef9190610aa2565b6001600160a01b031681526020808201929092526040015f20549061021f9061021a90880188610aa2565b610693565b61022d9060a0880135610acf565b9190610710565b905061024961021a6040850160208601610aa2565b6102539082610afa565b91508160c08401358082101561028a5760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506102b59050333060a08601356102a46020880188610aa2565b6001600160a01b03169291906107c1565b6102e96102c86080850160608601610aa2565b836102d96040870160208801610aa2565b6001600160a01b031691906107fd565b50919050565b6001600160a01b0383166103165760405163165a825360e21b815260040160405180910390fd5b6001600160a01b03821661033d5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905581519283528201929092529081018290527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd109060600160405180910390a1505050565b5f60405163d623472560e01b815260040160405180910390fd5b5f806103d56080840160608501610aa2565b6001600160a01b0316036103fb5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610423576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104475760405163d11b25af60e01b815260040160405180910390fd5b5f6104586040840160208501610aa2565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561049c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610b19565b90508060a0840135808210156104f257604051634787a10360e11b815260048101929092526024820152604401610281565b505f905061058881806105086020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f86602001602081019061053b9190610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a764000061057a87602001602081019061021a9190610aa2565b61022d9060a0890135610acf565b905061059a61021a6020860186610aa2565b6105a49082610afa565b92508260c0850135808211156105d657604051639a06025d60e01b815260048101929092526024820152604401610281565b506105ec90503330856102a46020890189610aa2565b6106146105ff6080860160608701610aa2565b60a08601356102d96040880160208901610aa2565b5050919050565b6001600160a01b0382166106425760405163165a825360e21b815260040160405180910390fd5b5f81116106625760405163165a825360e21b815260040160405180910390fd5b6106766001600160a01b03831633836107fd565b5050565b60405163d623472560e01b815260040160405180910390fd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f49190610b30565b6106ff906012610b50565b61070a90600a610c4c565b92915050565b5f5f5f61071d8686610837565b91509150815f036107415783818161073757610737610ae6565b04925050506107ba565b818411610758576107586003851502601118610853565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b6107cf848484846001610864565b6107f757604051635274afe760e01b81526001600160a01b0385166004820152602401610281565b50505050565b61080a83838360016108d1565b61083257604051635274afe760e01b81526001600160a01b0384166004820152602401610281565b505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166108c05783831516156108b4573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661092757838315161561091b573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f61010082840312156102e9575f5ffd5b5f6101008284031215610955575f5ffd5b6107ba8383610933565b80356001600160a01b0381168114610975575f5ffd5b919050565b5f5f5f6060848603121561098c575f5ffd5b6109958461095f565b92506109a36020850161095f565b929592945050506040919091013590565b5f60a082840312156102e9575f5ffd5b5f602082840312156109d4575f5ffd5b813567ffffffffffffffff8111156109ea575f5ffd5b6109f6848285016109b4565b949350505050565b5f5f60408385031215610a0f575f5ffd5b610a188361095f565b946020939093013593505050565b5f5f5f5f60608587031215610a39575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610a5d575f5ffd5b8501601f81018713610a6d575f5ffd5b803567ffffffffffffffff811115610a83575f5ffd5b876020828401011115610a94575f5ffd5b949793965060200194505050565b5f60208284031215610ab2575f5ffd5b6107ba8261095f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a610abb565b634e487b7160e01b5f52601260045260245ffd5b5f82610b1457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610b29575f5ffd5b5051919050565b5f60208284031215610b40575f5ffd5b815160ff811681146107ba575f5ffd5b60ff828116828216039081111561070a5761070a610abb565b6001815b6001841115610ba457808504811115610b8857610b88610abb565b6001841615610b9657908102905b60019390931c928002610b6d565b935093915050565b5f82610bba5750600161070a565b81610bc657505f61070a565b8160018114610bdc5760028114610be657610c02565b600191505061070a565b60ff841115610bf757610bf7610abb565b50506001821b61070a565b5060208310610133831016604e8410600b8410161715610c25575081810a61070a565b610c315f198484610b69565b805f1904821115610c4457610c44610abb565b029392505050565b5f6107ba60ff841683610bac56fea2646970667358221220f38b54aa2aa0f2a76945359d85af3f3ba28d8b1f13187617cb4fc3bd1da4748b64736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD1E CODESIZE SUB DUP1 PUSH2 0xD1E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH1 0x2B SWAP2 PUSH1 0x56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x51 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6B35B1B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x81 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x65 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH1 0x7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC90 DUP1 PUSH2 0x8E PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x4C JUMPI DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0xFA461E33 EQ PUSH2 0xFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x414BF389 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x4562E015 EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x85 PUSH2 0x80 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x97A JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x85 PUSH2 0xC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x85 PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x3C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x61B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x108 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12E PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x154 JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x1A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x234 PUSH8 0xDE0B6B3A7640000 DUP3 DUP1 PUSH2 0x1BC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x21F SWAP1 PUSH2 0x21A SWAP1 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 POP PUSH2 0x249 PUSH2 0x21A PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x253 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH4 0x296BA6E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2B5 SWAP1 POP CALLER ADDRESS PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2A4 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2C8 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST DUP4 PUSH2 0x2D9 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x316 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x33D JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x3D5 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x458 PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C0 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4787A103 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH0 SWAP1 POP PUSH2 0x588 DUP2 DUP1 PUSH2 0x508 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x57A DUP8 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP1 POP PUSH2 0x59A PUSH2 0x21A PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x5A4 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0xC0 DUP6 ADD CALLDATALOAD DUP1 DUP3 GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9A06025D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH2 0x5EC SWAP1 POP CALLER ADDRESS DUP6 PUSH2 0x2A4 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x5FF PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2D9 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xAA2 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x642 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x676 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER DUP4 PUSH2 0x7FD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0x6FF SWAP1 PUSH1 0x12 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0x70A SWAP1 PUSH1 0xA PUSH2 0xC4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x71D DUP7 DUP7 PUSH2 0x837 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x741 JUMPI DUP4 DUP2 DUP2 PUSH2 0x737 JUMPI PUSH2 0x737 PUSH2 0xAE6 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7BA JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x758 JUMPI PUSH2 0x758 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x853 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7CF DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x80A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x8D1 JUMP JUMPDEST PUSH2 0x832 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x8C0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x8B4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x927 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x91B JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x955 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP4 DUP4 PUSH2 0x933 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x975 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x98C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x995 DUP5 PUSH2 0x95F JUMP JUMPDEST SWAP3 POP PUSH2 0x9A3 PUSH1 0x20 DUP6 ADD PUSH2 0x95F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9F6 DUP5 DUP3 DUP6 ADD PUSH2 0x9B4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA0F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA18 DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA39 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xA6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA83 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xA94 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAB2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP3 PUSH2 0x95F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xB14 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xBA4 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xB88 JUMPI PUSH2 0xB88 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xB96 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xB6D JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xBBA JUMPI POP PUSH1 0x1 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH2 0xBC6 JUMPI POP PUSH0 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xBDC JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xBE6 JUMPI PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x70A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBF7 JUMPI PUSH2 0xBF7 PUSH2 0xABB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x70A JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xC25 JUMPI POP DUP2 DUP2 EXP PUSH2 0x70A JUMP JUMPDEST PUSH2 0xC31 PUSH0 NOT DUP5 DUP5 PUSH2 0xB69 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xC44 JUMPI PUSH2 0xC44 PUSH2 0xABB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7BA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xBAC JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN DUP12 SLOAD 0xAA 0x2A LOG0 CALLCODE 0xA7 PUSH10 0x45359D85AF3F3BA28D8B 0x1F SGT XOR PUSH23 0x17CB4FC3BD1DA4748B64736F6C63430008230033000000 ","sourceMap":"661:3653:22:-:0;;;1079:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1120:19:22;;1112:49;;;;-1:-1:-1;;;1112:49:22;;;;;;;;;;;;1079:87;661:3653;;14:290:25;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:25;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:25:o;:::-;661:3653:22;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061006e575f3560e01c8063db3e21981161004c578063db3e2198146100cb578063f28c0498146100b8578063f3fef3a3146100de578063fa461e33146100fd575f5ffd5b8063414bf389146100725780634562e01514610097578063c04b8d59146100b8575b5f5ffd5b610085610080366004610944565b61011c565b60405190815260200160405180910390f35b3480156100a2575f5ffd5b506100b66100b136600461097a565b6102ef565b005b6100856100c63660046109c4565b6103a9565b6100856100d9366004610944565b6103c3565b3480156100e9575f5ffd5b506100b66100f83660046109fe565b61061b565b348015610108575f5ffd5b506100b6610117366004610a26565b61067a565b5f8061012e6080840160608501610aa2565b6001600160a01b0316036101545760405162e18e7f60e71b815260040160405180910390fd5b428260800135101561017c576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116101a05760405163d11b25af60e01b815260040160405180910390fd5b5f610234670de0b6b3a764000082806101bc6020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906101ef9190610aa2565b6001600160a01b031681526020808201929092526040015f20549061021f9061021a90880188610aa2565b610693565b61022d9060a0880135610acf565b9190610710565b905061024961021a6040850160208601610aa2565b6102539082610afa565b91508160c08401358082101561028a5760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506102b59050333060a08601356102a46020880188610aa2565b6001600160a01b03169291906107c1565b6102e96102c86080850160608601610aa2565b836102d96040870160208801610aa2565b6001600160a01b031691906107fd565b50919050565b6001600160a01b0383166103165760405163165a825360e21b815260040160405180910390fd5b6001600160a01b03821661033d5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905581519283528201929092529081018290527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd109060600160405180910390a1505050565b5f60405163d623472560e01b815260040160405180910390fd5b5f806103d56080840160608501610aa2565b6001600160a01b0316036103fb5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610423576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104475760405163d11b25af60e01b815260040160405180910390fd5b5f6104586040840160208501610aa2565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561049c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610b19565b90508060a0840135808210156104f257604051634787a10360e11b815260048101929092526024820152604401610281565b505f905061058881806105086020880188610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f205f86602001602081019061053b9190610aa2565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a764000061057a87602001602081019061021a9190610aa2565b61022d9060a0890135610acf565b905061059a61021a6020860186610aa2565b6105a49082610afa565b92508260c0850135808211156105d657604051639a06025d60e01b815260048101929092526024820152604401610281565b506105ec90503330856102a46020890189610aa2565b6106146105ff6080860160608701610aa2565b60a08601356102d96040880160208901610aa2565b5050919050565b6001600160a01b0382166106425760405163165a825360e21b815260040160405180910390fd5b5f81116106625760405163165a825360e21b815260040160405180910390fd5b6106766001600160a01b03831633836107fd565b5050565b60405163d623472560e01b815260040160405180910390fd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f49190610b30565b6106ff906012610b50565b61070a90600a610c4c565b92915050565b5f5f5f61071d8686610837565b91509150815f036107415783818161073757610737610ae6565b04925050506107ba565b818411610758576107586003851502601118610853565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150505b9392505050565b6107cf848484846001610864565b6107f757604051635274afe760e01b81526001600160a01b0385166004820152602401610281565b50505050565b61080a83838360016108d1565b61083257604051635274afe760e01b81526001600160a01b0384166004820152602401610281565b505050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b6040516323b872dd60e01b5f8181526001600160a01b038781166004528616602452604485905291602083606481808c5af1925060015f511483166108c05783831516156108b4573d5f823e3d81fd5b5f883b113d1516831692505b604052505f60605295945050505050565b60405163a9059cbb60e01b5f8181526001600160a01b038616600452602485905291602083604481808b5af1925060015f5114831661092757838315161561091b573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f61010082840312156102e9575f5ffd5b5f6101008284031215610955575f5ffd5b6107ba8383610933565b80356001600160a01b0381168114610975575f5ffd5b919050565b5f5f5f6060848603121561098c575f5ffd5b6109958461095f565b92506109a36020850161095f565b929592945050506040919091013590565b5f60a082840312156102e9575f5ffd5b5f602082840312156109d4575f5ffd5b813567ffffffffffffffff8111156109ea575f5ffd5b6109f6848285016109b4565b949350505050565b5f5f60408385031215610a0f575f5ffd5b610a188361095f565b946020939093013593505050565b5f5f5f5f60608587031215610a39575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610a5d575f5ffd5b8501601f81018713610a6d575f5ffd5b803567ffffffffffffffff811115610a83575f5ffd5b876020828401011115610a94575f5ffd5b949793965060200194505050565b5f60208284031215610ab2575f5ffd5b6107ba8261095f565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a610abb565b634e487b7160e01b5f52601260045260245ffd5b5f82610b1457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610b29575f5ffd5b5051919050565b5f60208284031215610b40575f5ffd5b815160ff811681146107ba575f5ffd5b60ff828116828216039081111561070a5761070a610abb565b6001815b6001841115610ba457808504811115610b8857610b88610abb565b6001841615610b9657908102905b60019390931c928002610b6d565b935093915050565b5f82610bba5750600161070a565b81610bc657505f61070a565b8160018114610bdc5760028114610be657610c02565b600191505061070a565b60ff841115610bf757610bf7610abb565b50506001821b61070a565b5060208310610133831016604e8410600b8410161715610c25575081810a61070a565b610c315f198484610b69565b805f1904821115610c4457610c44610abb565b029392505050565b5f6107ba60ff841683610bac56fea2646970667358221220f38b54aa2aa0f2a76945359d85af3f3ba28d8b1f13187617cb4fc3bd1da4748b64736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x6E JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xDB3E2198 GT PUSH2 0x4C JUMPI DUP1 PUSH4 0xDB3E2198 EQ PUSH2 0xCB JUMPI DUP1 PUSH4 0xF28C0498 EQ PUSH2 0xB8 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xDE JUMPI DUP1 PUSH4 0xFA461E33 EQ PUSH2 0xFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x414BF389 EQ PUSH2 0x72 JUMPI DUP1 PUSH4 0x4562E015 EQ PUSH2 0x97 JUMPI DUP1 PUSH4 0xC04B8D59 EQ PUSH2 0xB8 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x85 PUSH2 0x80 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xB1 CALLDATASIZE PUSH1 0x4 PUSH2 0x97A JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x85 PUSH2 0xC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9C4 JUMP JUMPDEST PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x85 PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x944 JUMP JUMPDEST PUSH2 0x3C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0xF8 CALLDATASIZE PUSH1 0x4 PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x61B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x108 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x117 CALLDATASIZE PUSH1 0x4 PUSH2 0xA26 JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12E PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x154 JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x17C JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x1A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x234 PUSH8 0xDE0B6B3A7640000 DUP3 DUP1 PUSH2 0x1BC PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH0 KECCAK256 SLOAD SWAP1 PUSH2 0x21F SWAP1 PUSH2 0x21A SWAP1 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 POP PUSH2 0x249 PUSH2 0x21A PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x253 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP2 POP DUP2 PUSH1 0xC0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x28A JUMPI PUSH1 0x40 MLOAD PUSH4 0x296BA6E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x2B5 SWAP1 POP CALLER ADDRESS PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2A4 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7C1 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2C8 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xAA2 JUMP JUMPDEST DUP4 PUSH2 0x2D9 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x316 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x33D JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xB71C154260E8508E211E2ACE194BECBA2C6D7E727C3ED292FE4787458969CD10 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP1 PUSH2 0x3D5 PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3FB JUMPI PUSH1 0x40 MLOAD PUSH3 0xE18E7F PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP3 PUSH1 0x80 ADD CALLDATALOAD LT ISZERO PUSH2 0x423 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x3859E7 PUSH1 0xE2 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0xA0 ADD CALLDATALOAD GT PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD11B25AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x458 PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4C0 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xA0 DUP5 ADD CALLDATALOAD DUP1 DUP3 LT ISZERO PUSH2 0x4F2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4787A103 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH0 SWAP1 POP PUSH2 0x588 DUP2 DUP1 PUSH2 0x508 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 DUP7 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x53B SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD PUSH8 0xDE0B6B3A7640000 PUSH2 0x57A DUP8 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x21A SWAP2 SWAP1 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH2 0xACF JUMP JUMPDEST SWAP1 POP PUSH2 0x59A PUSH2 0x21A PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x5A4 SWAP1 DUP3 PUSH2 0xAFA JUMP JUMPDEST SWAP3 POP DUP3 PUSH1 0xC0 DUP6 ADD CALLDATALOAD DUP1 DUP3 GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9A06025D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0x281 JUMP JUMPDEST POP PUSH2 0x5EC SWAP1 POP CALLER ADDRESS DUP6 PUSH2 0x2A4 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x5FF PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xAA2 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2D9 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xAA2 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x642 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 GT PUSH2 0x662 JUMPI PUSH1 0x40 MLOAD PUSH4 0x165A8253 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x676 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER DUP4 PUSH2 0x7FD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6234725 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D0 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6F4 SWAP2 SWAP1 PUSH2 0xB30 JUMP JUMPDEST PUSH2 0x6FF SWAP1 PUSH1 0x12 PUSH2 0xB50 JUMP JUMPDEST PUSH2 0x70A SWAP1 PUSH1 0xA PUSH2 0xC4C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x71D DUP7 DUP7 PUSH2 0x837 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH0 SUB PUSH2 0x741 JUMPI DUP4 DUP2 DUP2 PUSH2 0x737 JUMPI PUSH2 0x737 PUSH2 0xAE6 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7BA JUMP JUMPDEST DUP2 DUP5 GT PUSH2 0x758 JUMPI PUSH2 0x758 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x853 JUMP JUMPDEST PUSH0 DUP5 DUP7 DUP9 MULMOD PUSH0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP6 DUP5 GT SWAP1 SWAP7 SUB SWAP6 SWAP1 SWAP6 MUL SWAP2 SWAP1 SWAP4 SUB SWAP4 SWAP1 SWAP4 DIV SWAP3 SWAP1 SWAP3 OR MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x7CF DUP5 DUP5 DUP5 DUP5 PUSH1 0x1 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x7F7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x80A DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x8D1 JUMP JUMPDEST PUSH2 0x832 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x281 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 NOT DUP4 DUP6 MULMOD SWAP4 SWAP1 SWAP3 MUL DUP1 DUP5 LT SWAP4 DUP2 SWAP1 SUB SWAP4 SWAP1 SWAP4 SUB SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 MSTORE DUP7 AND PUSH1 0x24 MSTORE PUSH1 0x44 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x64 DUP2 DUP1 DUP13 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x8C0 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x8B4 JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP9 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP PUSH0 PUSH1 0x60 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL PUSH0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x4 MSTORE PUSH1 0x24 DUP6 SWAP1 MSTORE SWAP2 PUSH1 0x20 DUP4 PUSH1 0x44 DUP2 DUP1 DUP12 GAS CALL SWAP3 POP PUSH1 0x1 PUSH0 MLOAD EQ DUP4 AND PUSH2 0x927 JUMPI DUP4 DUP4 ISZERO AND ISZERO PUSH2 0x91B JUMPI RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST PUSH0 DUP8 EXTCODESIZE GT RETURNDATASIZE ISZERO AND DUP4 AND SWAP3 POP JUMPDEST PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x955 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP4 DUP4 PUSH2 0x933 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x975 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x98C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x995 DUP5 PUSH2 0x95F JUMP JUMPDEST SWAP3 POP PUSH2 0x9A3 PUSH1 0x20 DUP6 ADD PUSH2 0x95F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9F6 DUP5 DUP3 DUP6 ADD PUSH2 0x9B4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA0F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA18 DUP4 PUSH2 0x95F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA39 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xA6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA83 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xA94 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAB2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7BA DUP3 PUSH2 0x95F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xB14 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xBA4 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xB88 JUMPI PUSH2 0xB88 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xB96 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xB6D JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xBBA JUMPI POP PUSH1 0x1 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH2 0xBC6 JUMPI POP PUSH0 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xBDC JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xBE6 JUMPI PUSH2 0xC02 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x70A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBF7 JUMPI PUSH2 0xBF7 PUSH2 0xABB JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x70A JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0xC25 JUMPI POP DUP2 DUP2 EXP PUSH2 0x70A JUMP JUMPDEST PUSH2 0xC31 PUSH0 NOT DUP5 DUP5 PUSH2 0xB69 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xC44 JUMPI PUSH2 0xC44 PUSH2 0xABB JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7BA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xBAC JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN DUP12 SLOAD 0xAA 0x2A LOG0 CALLCODE 0xA7 PUSH10 0x45359D85AF3F3BA28D8B 0x1F SGT XOR PUSH23 0x17CB4FC3BD1DA4748B64736F6C63430008230033000000 ","sourceMap":"661:3653:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:822;;;;;;:::i;:::-;;:::i;:::-;;;610:25:25;;;598:2;583:18;1349:822:22;;;;;;;3427:296;;;;;;;;;;-1:-1:-1;3427:296:22;;;;;:::i;:::-;;:::i;:::-;;4023:116;;;;;;:::i;:::-;;:::i;2216:979::-;;;;;;:::i;:::-;;:::i;3199:224::-;;;;;;;;;;-1:-1:-1;3199:224:22;;;;;:::i;:::-;;:::i;4201:111::-;;;;;;;;;;-1:-1:-1;4201:111:22;;;;;:::i;:::-;;:::i;1349:822::-;1441:17;;1474:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1474:30:22;;1466:64;;;;-1:-1:-1;;;1466:64:22;;;;;;;;;;;;1563:15;1544:6;:15;;;:34;;1536:64;;;;-1:-1:-1;;;;;;1536:64:22;;;;;;;;;;;;1632:1;1614:6;:15;;;:19;1606:50;;;;-1:-1:-1;;;1606:50:22;;;;;;;;;;;;1663:22;1688:120;837:4;1663:22;;1770:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;1762:23:22;-1:-1:-1;;;;;1762:23:22;;;;;;;;;;;;:40;1786:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1762:40:22;;;;;;;;;;;;;-1:-1:-1;1762:40:22;;;1707:28;;1720:14;;;;:6;:14;:::i;:::-;1707:12;:28::i;:::-;1689:46;;:15;;;;:46;:::i;:::-;1688:55;:120;:55;:120::i;:::-;1663:145;-1:-1:-1;1843:29:22;1856:15;;;;;;;;:::i;1843:29::-;1826:46;;:14;:46;:::i;:::-;1814:58;-1:-1:-1;1814:58:22;1899:23;;;;1886:36;;;;1878:111;;;;-1:-1:-1;;;1878:111:22;;;;;4559:25:25;;;;4600:18;;;4593:34;4532:18;;1878:111:22;;;;;;;;;-1:-1:-1;1996:91:22;;-1:-1:-1;2044:10:22;2064:4;2071:15;;;;2011:14;;;;2071:6;2011:14;:::i;:::-;-1:-1:-1;;;;;1996:47:22;;:91;;:47;:91::i;:::-;2093:73;2138:16;;;;;;;;:::i;:::-;2156:9;2108:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2093:44:22;;:73;:44;:73::i;:::-;1460:711;1349:822;;;:::o;3427:296::-;-1:-1:-1;;;;;3526:21:22;;3518:51;;;;-1:-1:-1;;;3518:51:22;;;;;;;;;;;;-1:-1:-1;;;;;3583:22:22;;3575:52;;;;-1:-1:-1;;;3575:52:22;;;;;;;;;;;;-1:-1:-1;;;;;3633:16:22;;;:7;:16;;;;;;;;;;;:26;;;;;;;;;;;;;:35;;;3679:39;;4840:51:25;;;4907:18;;4900:60;;;;4976:18;;;4969:34;;;3679:39:22;;4828:2:25;4813:18;3679:39:22;;;;;;;3427:296;;;:::o;4023:116::-;4096:7;4118:16;;-1:-1:-1;;;4118:16:22;;;;;;;;;;;2216:979;2310:16;;2342;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2342:30:22;;2334:64;;;;-1:-1:-1;;;2334:64:22;;;;;;;;;;;;2431:15;2412:6;:15;;;:34;;2404:64;;;;-1:-1:-1;;;;;;2404:64:22;;;;;;;;;;;;2501:1;2482:6;:16;;;:20;2474:51;;;;-1:-1:-1;;;2474:51:22;;;;;;;;;;;;2531:15;2564;;;;;;;;:::i;:::-;2549:56;;-1:-1:-1;;;2549:56:22;;2599:4;2549:56;;;5160:51:25;-1:-1:-1;;;;;2549:41:22;;;;;;;5133:18:25;;2549:56:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2531:74;-1:-1:-1;2531:74:22;2630:16;;;;2619:27;;;;2611:81;;;;-1:-1:-1;;;2611:81:22;;;;;4559:25:25;;;;4600:18;;;4593:34;4532:18;;2611:81:22;4385:248:25;2611:81:22;-1:-1:-1;2699:19:22;;-1:-1:-1;2721:122:22;2699:19;;2794:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;2786:23:22;-1:-1:-1;;;;;2786:23:22;;;;;;;;;;;;:40;2810:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2786:40:22;-1:-1:-1;;;;;2786:40:22;;;;;;;;;;;;;837:4;2741:29;2754:6;:15;;;;;;;;;;:::i;2741:29::-;2722:48;;:16;;;;:48;:::i;2721:122::-;2699:144;-1:-1:-1;2874:28:22;2887:14;;;;:6;:14;:::i;2874:28::-;2860:42;;:11;:42;:::i;:::-;2849:53;-1:-1:-1;2849:53:22;2928:22;;;;2916:34;;;;2908:105;;;;-1:-1:-1;;;2908:105:22;;;;;4559:25:25;;;;4600:18;;;4593:34;4532:18;;2908:105:22;4385:248:25;2908:105:22;-1:-1:-1;3020:84:22;;-1:-1:-1;3068:10:22;3088:4;3095:8;3035:14;;;;:6;:14;:::i;3020:84::-;3110:80;3155:16;;;;;;;;:::i;:::-;3173;;;;3125:15;;;;;;;;:::i;3110:80::-;2328:867;;2216:979;;;:::o;3199:224::-;-1:-1:-1;;;;;3271:19:22;;3263:49;;;;-1:-1:-1;;;3263:49:22;;;;;;;;;;;;3335:1;3326:6;:10;3318:40;;;;-1:-1:-1;;;3318:40:22;;;;;;;;;;;;3364:54;-1:-1:-1;;;;;3364:34:22;;3399:10;3411:6;3364:34;:54::i;:::-;3199:224;;:::o;4201:111::-;4291:16;;-1:-1:-1;;;4291:16:22;;;;;;;;;;;1170:134;1230:7;1280:5;-1:-1:-1;;;;;1265:30:22;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1260:37;;:2;:37;:::i;:::-;1253:45;;:2;:45;:::i;:::-;1245:54;1170:134;-1:-1:-1;;1170:134:22:o;7258:3683:11:-;7340:14;7391:12;7405:11;7420:12;7427:1;7430;7420:6;:12::i;:::-;7390:42;;;;7514:4;7522:1;7514:9;7510:365;;7849:11;7843:3;:17;;;;;:::i;:::-;;7836:24;;;;;;7510:365;8000:4;7985:11;:19;7981:142;;8024:84;5328:5;8044:16;;5327:36;940:4:9;5322:42:11;8024:11;:84::i;:::-;8375:17;8526:11;8523:1;8520;8513:25;8918:12;8948:15;;;8933:31;;9083:22;;;;;9816:1;9797;:15;;9796:21;;10049;;;10045:25;;10034:36;10119:21;;;10115:25;;10104:36;10191:21;;;10187:25;;10176:36;10262:21;;;10258:25;;10247:36;10335:21;;;10331:25;;10320:36;10409:21;;;10405:25;;;10394:36;9325:12;;;;9321:23;;;9346:1;9317:31;8638:18;;;8628:29;;;9432:11;;;;8681:19;;;;9176:14;;;;9425:18;;;;10884:13;;-1:-1:-1;;7258:3683:11;;;;;;:::o;1662:232:7:-;1767:47;1785:5;1792:4;1798:2;1802:5;1809:4;1767:17;:47::i;:::-;1762:126;;1837:40;;-1:-1:-1;;;1837:40:7;;-1:-1:-1;;;;;5178:32:25;;1837:40:7;;;5160:51:25;5133:18;;1837:40:7;5014:203:25;1762:126:7;1662:232;;;;:::o;1219:204::-;1306:37;1320:5;1327:2;1331:5;1338:4;1306:13;:37::i;:::-;1301:116;;1366:40;;-1:-1:-1;;;1366:40:7;;-1:-1:-1;;;;;5178:32:25;;1366:40:7;;;5160:51:25;5133:18;;1366:40:7;5014:203:25;1301:116:7;1219:204;;;:::o;1027:550:11:-;1088:12;;-1:-1:-1;;1471:1:11;1468;1461:20;1501:9;;;;1549:11;;;1535:12;;;;1531:30;;;;;1027:550;-1:-1:-1;;1027:550:11:o;1776:194:9:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;10165:1393:7;10460:4;10454:11;-1:-1:-1;;;10323:12:7;10478:22;;;-1:-1:-1;;;;;10526:26:7;;;10520:4;10513:40;10579:24;;10573:4;10566:38;10624:4;10617:19;;;10323:12;10700:4;10323:12;10688:4;10323:12;;10672:5;10665;10660:45;10649:56;;10917:1;10910:4;10904:11;10901:18;10892:7;10888:32;10878:606;;11049:6;11039:7;11032:15;11028:28;11025:165;;;11105:16;11099:4;11094:3;11079:43;11155:16;11150:3;11143:29;11025:165;11466:1;11458:5;11446:18;11443:25;11424:16;11417:24;11413:56;11404:7;11400:70;11389:81;;10878:606;11504:4;11497:17;-1:-1:-1;11540:1:7;11534:4;11527:15;10165:1393;;-1:-1:-1;;;;;10165:1393:7:o;8373:1244::-;8600:4;8594:11;-1:-1:-1;;;8467:12:7;8618:22;;;-1:-1:-1;;;;;8666:24:7;;8660:4;8653:38;8711:4;8704:19;;;8467:12;8787:4;8467:12;8775:4;8467:12;;8759:5;8752;8747:45;8736:56;;9004:1;8997:4;8991:11;8988:18;8979:7;8975:32;8965:606;;9136:6;9126:7;9119:15;9115:28;9112:165;;;9192:16;9186:4;9181:3;9166:43;9242:16;9237:3;9230:29;9112:165;9553:1;9545:5;9533:18;9530:25;9511:16;9504:24;9500:56;9491:7;9487:70;9476:81;;8965:606;9591:4;9584:17;-1:-1:-1;8373:1244:7;;-1:-1:-1;;;;8373:1244:7:o;14:171:25:-;89:5;134:3;125:6;120:3;116:16;112:26;109:46;;;151:1;148;141:12;190:269;291:6;344:3;332:9;323:7;319:23;315:33;312:53;;;361:1;358;351:12;312:53;384:69;445:7;434:9;384:69;:::i;646:173::-;714:20;;-1:-1:-1;;;;;763:31:25;;753:42;;743:70;;809:1;806;799:12;743:70;646:173;;;:::o;824:374::-;901:6;909;917;970:2;958:9;949:7;945:23;941:32;938:52;;;986:1;983;976:12;938:52;1009:29;1028:9;1009:29;:::i;:::-;999:39;;1057:38;1091:2;1080:9;1076:18;1057:38;:::i;:::-;824:374;;1047:48;;-1:-1:-1;;;1164:2:25;1149:18;;;;1136:32;;824:374::o;1203:165::-;1272:5;1317:3;1308:6;1303:3;1299:16;1295:26;1292:46;;;1334:1;1331;1324:12;1373:374;1468:6;1521:2;1509:9;1500:7;1496:23;1492:32;1489:52;;;1537:1;1534;1527:12;1489:52;1577:9;1564:23;1610:18;1602:6;1599:30;1596:50;;;1642:1;1639;1632:12;1596:50;1665:76;1733:7;1724:6;1713:9;1709:22;1665:76;:::i;:::-;1655:86;1373:374;-1:-1:-1;;;;1373:374:25:o;2407:300::-;2475:6;2483;2536:2;2524:9;2515:7;2511:23;2507:32;2504:52;;;2552:1;2549;2542:12;2504:52;2575:29;2594:9;2575:29;:::i;:::-;2565:39;2673:2;2658:18;;;;2645:32;;-1:-1:-1;;;2407:300:25:o;2712:818::-;2798:6;2806;2814;2822;2875:2;2863:9;2854:7;2850:23;2846:32;2843:52;;;2891:1;2888;2881:12;2843:52;2936:23;;;-1:-1:-1;3056:2:25;3041:18;;3028:32;;-1:-1:-1;3137:2:25;3122:18;;3109:32;3164:18;3153:30;;3150:50;;;3196:1;3193;3186:12;3150:50;3219:22;;3272:4;3264:13;;3260:27;-1:-1:-1;3250:55:25;;3301:1;3298;3291:12;3250:55;3341:2;3328:16;3367:18;3359:6;3356:30;3353:50;;;3399:1;3396;3389:12;3353:50;3444:7;3439:2;3430:6;3426:2;3422:15;3418:24;3415:37;3412:57;;;3465:1;3462;3455:12;3412:57;2712:818;;;;-1:-1:-1;3496:2:25;3488:11;;-1:-1:-1;;;2712:818:25:o;3535:186::-;3594:6;3647:2;3635:9;3626:7;3622:23;3618:32;3615:52;;;3663:1;3660;3653:12;3615:52;3686:29;3705:9;3686:29;:::i;3726:127::-;3787:10;3782:3;3778:20;3775:1;3768:31;3818:4;3815:1;3808:15;3842:4;3839:1;3832:15;3858:168;3931:9;;;3962;;3979:15;;;3973:22;;3959:37;3949:71;;4000:18;;:::i;4031:127::-;4092:10;4087:3;4083:20;4080:1;4073:31;4123:4;4120:1;4113:15;4147:4;4144:1;4137:15;4163:217;4203:1;4229;4219:132;;4273:10;4268:3;4264:20;4261:1;4254:31;4308:4;4305:1;4298:15;4336:4;4333:1;4326:15;4219:132;-1:-1:-1;4365:9:25;;4163:217::o;5222:184::-;5292:6;5345:2;5333:9;5324:7;5320:23;5316:32;5313:52;;;5361:1;5358;5351:12;5313:52;-1:-1:-1;5384:16:25;;5222:184;-1:-1:-1;5222:184:25:o;5411:273::-;5479:6;5532:2;5520:9;5511:7;5507:23;5503:32;5500:52;;;5548:1;5545;5538:12;5500:52;5580:9;5574:16;5630:4;5623:5;5619:16;5612:5;5609:27;5599:55;;5650:1;5647;5640:12;5689:151;5779:4;5772:12;;;5758;;;5754:31;;5797:14;;5794:40;;;5814:18;;:::i;5845:375::-;5933:1;5951:5;5965:249;5986:1;5976:8;5973:15;5965:249;;;6036:4;6031:3;6027:14;6021:4;6018:24;6015:50;;;6045:18;;:::i;:::-;6095:1;6085:8;6081:16;6078:49;;;6109:16;;;;6078:49;6192:1;6188:16;;;;;6148:15;;5965:249;;;5845:375;;;;;;:::o;6225:902::-;6274:5;6304:8;6294:80;;-1:-1:-1;6345:1:25;6359:5;;6294:80;6393:4;6383:76;;-1:-1:-1;6430:1:25;6444:5;;6383:76;6475:4;6493:1;6488:59;;;;6561:1;6556:174;;;;6468:262;;6488:59;6518:1;6509:10;;6532:5;;;6556:174;6593:3;6583:8;6580:17;6577:43;;;6600:18;;:::i;:::-;-1:-1:-1;;6656:1:25;6642:16;;6715:5;;6468:262;;6814:2;6804:8;6801:16;6795:3;6789:4;6786:13;6782:36;6776:2;6766:8;6763:16;6758:2;6752:4;6749:12;6745:35;6742:77;6739:203;;;-1:-1:-1;6851:19:25;;;6927:5;;6739:203;6974:42;-1:-1:-1;;6999:8:25;6993:4;6974:42;:::i;:::-;7052:6;7048:1;7044:6;7040:19;7031:7;7028:32;7025:58;;;7063:18;;:::i;:::-;7101:20;;6225:902;-1:-1:-1;;;6225:902:25:o;7132:140::-;7190:5;7219:47;7260:4;7250:8;7246:19;7240:4;7219:47;:::i"},"methodIdentifiers":{"exactInput((bytes,address,uint256,uint256,uint256))":"c04b8d59","exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"414bf389","exactOutput((bytes,address,uint256,uint256,uint256))":"f28c0498","exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160))":"db3e2198","setCurrentPrice(address,address,uint256)":"4562e015","uniswapV3SwapCallback(int256,int256,bytes)":"fa461e33","withdraw(address,uint256)":"f3fef3a3"}}}},"project/contracts/mocks/SwapTesterMock.sol":{"SwapTesterMock":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"input","type":"uint256"}],"name":"ExactInputResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"output","type":"uint256"}],"name":"ExactOutputResult","type":"event"},{"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"swapConfig","type":"tuple"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"executeExactInput","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"swapConfig","type":"tuple"},{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"executeExactOutput","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapLibrary.SwapProtocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"maxSlippage","type":"uint256"},{"internalType":"bytes","name":"customParams","type":"bytes"}],"internalType":"struct SwapLibrary.SwapConfig","name":"swapConfig","type":"tuple"}],"name":"validateConfig","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{"project/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":179},{"length":20,"start":381},{"length":20,"start":566}]}},"object":"6080604052348015600e575f5ffd5b506105808061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063178fc642146100435780631922e4d714610058578063d74018a71461006b575b5f5ffd5b6100566100513660046102a1565b61007e565b005b6100566100663660046102a1565b610148565b61005661007936600461030c565b610202565b5f610088866103b4565b60405163581e517d60e01b815273__$3f37f428d493a3ca053e6c24f20e8f2e94$__9163581e517d916100c6919089908990899089906004016104db565b602060405180830381865af41580156100e1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610105919061051a565b90507f7d1251252437180878066577dd1c280db8feb2152d57a044f147003bd04ba4eb8160405161013891815260200190565b60405180910390a1505050505050565b5f610152866103b4565b604051637756691560e01b815273__$3f37f428d493a3ca053e6c24f20e8f2e94$__91637756691591610190919089908990899089906004016104db565b602060405180830381865af41580156101ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101cf919061051a565b90507f59fbbb51cc726a41bc000734e10c34b705550e4d5c75611780ec30c767064e488160405161013891815260200190565b61020b816103b4565b604051632cbf28cb60e21b815273__$3f37f428d493a3ca053e6c24f20e8f2e94$__9163b2fca32c916102419190600401610531565b5f6040518083038186803b158015610257575f5ffd5b505af4158015610269573d5f5f3e3d5ffd5b5050505050565b5f60608284031215610280575f5ffd5b50919050565b80356001600160a01b038116811461029c575f5ffd5b919050565b5f5f5f5f5f60a086880312156102b5575f5ffd5b853567ffffffffffffffff8111156102cb575f5ffd5b6102d788828901610270565b9550506102e660208701610286565b93506102f460408701610286565b94979396509394606081013594506080013592915050565b5f6020828403121561031c575f5ffd5b813567ffffffffffffffff811115610332575f5ffd5b61033e84828501610270565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561037d5761037d610346565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103ac576103ac610346565b604052919050565b5f606082360312156103c4575f5ffd5b6103cc61035a565b8235600381106103da575f5ffd5b815260208381013590820152604083013567ffffffffffffffff8111156103ff575f5ffd5b830136601f82011261040f575f5ffd5b803567ffffffffffffffff81111561042957610429610346565b61043c601f8201601f1916602001610383565b818152366020838501011115610450575f5ffd5b816020840160208301375f9181016020019190915260408301525092915050565b5f81516003811061049057634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015280518060608601528060208301608087015e5f608082870101526080601f19601f8301168601019250505092915050565b60a081525f6104ed60a0830188610471565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f6020828403121561052a575f5ffd5b5051919050565b602081525f6105436020830184610471565b939250505056fea2646970667358221220e24ed1b306844b0327599399d421dd453080080ed5404d4c8137374e46645f7964736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x580 DUP1 PUSH2 0x1C PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x178FC642 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x1922E4D7 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0xD74018A7 EQ PUSH2 0x6B JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x7E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56 PUSH2 0x66 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH2 0x56 PUSH2 0x79 CALLDATASIZE PUSH1 0x4 PUSH2 0x30C JUMP JUMPDEST PUSH2 0x202 JUMP JUMPDEST PUSH0 PUSH2 0x88 DUP7 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x581E517D SWAP2 PUSH2 0xC6 SWAP2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xE1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x51A JUMP JUMPDEST SWAP1 POP PUSH32 0x7D1251252437180878066577DD1C280DB8FEB2152D57A044F147003BD04BA4EB DUP2 PUSH1 0x40 MLOAD PUSH2 0x138 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x152 DUP7 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x77566915 SWAP2 PUSH2 0x190 SWAP2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1AB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CF SWAP2 SWAP1 PUSH2 0x51A JUMP JUMPDEST SWAP1 POP PUSH32 0x59FBBB51CC726A41BC000734E10C34B705550E4D5C75611780EC30C767064E48 DUP2 PUSH1 0x40 MLOAD PUSH2 0x138 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x20B DUP2 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0xB2FCA32C SWAP2 PUSH2 0x241 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x531 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x257 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x269 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x280 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x29C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2D7 DUP9 DUP3 DUP10 ADD PUSH2 0x270 JUMP JUMPDEST SWAP6 POP POP PUSH2 0x2E6 PUSH1 0x20 DUP8 ADD PUSH2 0x286 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F4 PUSH1 0x40 DUP8 ADD PUSH2 0x286 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x332 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP3 DUP6 ADD PUSH2 0x270 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x37D JUMPI PUSH2 0x37D PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3AC JUMPI PUSH2 0x3AC PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x3C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3CC PUSH2 0x35A JUMP JUMPDEST DUP3 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x3DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT PUSH2 0x40F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x429 JUMPI PUSH2 0x429 PUSH2 0x346 JUMP JUMPDEST PUSH2 0x43C PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x383 JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x450 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x490 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP1 MLOAD DUP1 PUSH1 0x60 DUP7 ADD MSTORE DUP1 PUSH1 0x20 DUP4 ADD PUSH1 0x80 DUP8 ADD MCOPY PUSH0 PUSH1 0x80 DUP3 DUP8 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP7 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x4ED PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x543 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x471 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 0x4E DATALOADN 0xB306 DUP5 0x4B SUB 0x27 MSIZE SWAP4 SWAP10 0xD4 0x21 0xDD GASLIMIT ADDRESS DUP1 ADDMOD 0xE 0xD5 BLOCKHASH 0x4D 0x4C DUP2 CALLDATACOPY CALLDATACOPY 0x4E CHAINID PUSH5 0x5F7964736F PUSH13 0x63430008230033000000000000 ","sourceMap":"115:872:23:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{"project/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":151},{"length":20,"start":353},{"length":20,"start":538}]}},"object":"608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063178fc642146100435780631922e4d714610058578063d74018a71461006b575b5f5ffd5b6100566100513660046102a1565b61007e565b005b6100566100663660046102a1565b610148565b61005661007936600461030c565b610202565b5f610088866103b4565b60405163581e517d60e01b815273__$3f37f428d493a3ca053e6c24f20e8f2e94$__9163581e517d916100c6919089908990899089906004016104db565b602060405180830381865af41580156100e1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610105919061051a565b90507f7d1251252437180878066577dd1c280db8feb2152d57a044f147003bd04ba4eb8160405161013891815260200190565b60405180910390a1505050505050565b5f610152866103b4565b604051637756691560e01b815273__$3f37f428d493a3ca053e6c24f20e8f2e94$__91637756691591610190919089908990899089906004016104db565b602060405180830381865af41580156101ab573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101cf919061051a565b90507f59fbbb51cc726a41bc000734e10c34b705550e4d5c75611780ec30c767064e488160405161013891815260200190565b61020b816103b4565b604051632cbf28cb60e21b815273__$3f37f428d493a3ca053e6c24f20e8f2e94$__9163b2fca32c916102419190600401610531565b5f6040518083038186803b158015610257575f5ffd5b505af4158015610269573d5f5f3e3d5ffd5b5050505050565b5f60608284031215610280575f5ffd5b50919050565b80356001600160a01b038116811461029c575f5ffd5b919050565b5f5f5f5f5f60a086880312156102b5575f5ffd5b853567ffffffffffffffff8111156102cb575f5ffd5b6102d788828901610270565b9550506102e660208701610286565b93506102f460408701610286565b94979396509394606081013594506080013592915050565b5f6020828403121561031c575f5ffd5b813567ffffffffffffffff811115610332575f5ffd5b61033e84828501610270565b949350505050565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561037d5761037d610346565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156103ac576103ac610346565b604052919050565b5f606082360312156103c4575f5ffd5b6103cc61035a565b8235600381106103da575f5ffd5b815260208381013590820152604083013567ffffffffffffffff8111156103ff575f5ffd5b830136601f82011261040f575f5ffd5b803567ffffffffffffffff81111561042957610429610346565b61043c601f8201601f1916602001610383565b818152366020838501011115610450575f5ffd5b816020840160208301375f9181016020019190915260408301525092915050565b5f81516003811061049057634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015280518060608601528060208301608087015e5f608082870101526080601f19601f8301168601019250505092915050565b60a081525f6104ed60a0830188610471565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f6020828403121561052a575f5ffd5b5051919050565b602081525f6105436020830184610471565b939250505056fea2646970667358221220e24ed1b306844b0327599399d421dd453080080ed5404d4c8137374e46645f7964736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x178FC642 EQ PUSH2 0x43 JUMPI DUP1 PUSH4 0x1922E4D7 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0xD74018A7 EQ PUSH2 0x6B JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x7E JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56 PUSH2 0x66 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A1 JUMP JUMPDEST PUSH2 0x148 JUMP JUMPDEST PUSH2 0x56 PUSH2 0x79 CALLDATASIZE PUSH1 0x4 PUSH2 0x30C JUMP JUMPDEST PUSH2 0x202 JUMP JUMPDEST PUSH0 PUSH2 0x88 DUP7 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x581E517D SWAP2 PUSH2 0xC6 SWAP2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xE1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x51A JUMP JUMPDEST SWAP1 POP PUSH32 0x7D1251252437180878066577DD1C280DB8FEB2152D57A044F147003BD04BA4EB DUP2 PUSH1 0x40 MLOAD PUSH2 0x138 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x152 DUP7 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0x77566915 SWAP2 PUSH2 0x190 SWAP2 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4DB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1AB JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CF SWAP2 SWAP1 PUSH2 0x51A JUMP JUMPDEST SWAP1 POP PUSH32 0x59FBBB51CC726A41BC000734E10C34B705550E4D5C75611780EC30C767064E48 DUP2 PUSH1 0x40 MLOAD PUSH2 0x138 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x20B DUP2 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0xB2FCA32C SWAP2 PUSH2 0x241 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x531 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x257 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x269 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x280 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x29C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2CB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2D7 DUP9 DUP3 DUP10 ADD PUSH2 0x270 JUMP JUMPDEST SWAP6 POP POP PUSH2 0x2E6 PUSH1 0x20 DUP8 ADD PUSH2 0x286 JUMP JUMPDEST SWAP4 POP PUSH2 0x2F4 PUSH1 0x40 DUP8 ADD PUSH2 0x286 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x332 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x33E DUP5 DUP3 DUP6 ADD PUSH2 0x270 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x37D JUMPI PUSH2 0x37D PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3AC JUMPI PUSH2 0x3AC PUSH2 0x346 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x3C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x3CC PUSH2 0x35A JUMP JUMPDEST DUP3 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x3DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT PUSH2 0x40F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x429 JUMPI PUSH2 0x429 PUSH2 0x346 JUMP JUMPDEST PUSH2 0x43C PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x383 JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x450 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x490 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP5 MSTORE POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE DUP1 MLOAD DUP1 PUSH1 0x60 DUP7 ADD MSTORE DUP1 PUSH1 0x20 DUP4 ADD PUSH1 0x80 DUP8 ADD MCOPY PUSH0 PUSH1 0x80 DUP3 DUP8 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP7 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x4ED PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x471 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP5 SWAP1 SWAP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x52A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x543 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x471 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 0x4E DATALOADN 0xB306 DUP5 0x4B SUB 0x27 MSIZE SWAP4 SWAP10 0xD4 0x21 0xDD GASLIMIT ADDRESS DUP1 ADDMOD 0xE 0xD5 BLOCKHASH 0x4D 0x4C DUP2 CALLDATACOPY CALLDATACOPY 0x4E CHAINID PUSH5 0x5F7964736F PUSH13 0x63430008230033000000000000 ","sourceMap":"115:872:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;571:293;;;;;;:::i;:::-;;:::i;:::-;;277:290;;;;;;:::i;:::-;;:::i;868:117::-;;;;;;:::i;:::-;;:::i;571:293::-;756:11;770:22;:10;:22;:::i;:::-;:56;;-1:-1:-1;;;770:56:23;;:22;;;;:56;;:22;793:7;;802:8;;812:6;;820:5;;770:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;756:70;;837:22;855:3;837:22;;;;4937:25:25;;4925:2;4910:18;;4791:177;837:22:23;;;;;;;;750:114;571:293;;;;;:::o;277:290::-;461:11;475:21;:10;:21;:::i;:::-;:55;;-1:-1:-1;;;475:55:23;;:21;;;;:55;;:21;497:7;;506:8;;516:6;;524:5;;475:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;461:69;;541:21;558:3;541:21;;;;4937:25:25;;4925:2;4910:18;;4791:177;868:117:23;959:19;:10;:19;:::i;:::-;:21;;-1:-1:-1;;;959:21:23;;:19;;;;:21;;:19;:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:117;:::o;14:158:25:-;77:5;122:2;113:6;108:3;104:16;100:25;97:45;;;138:1;135;128:12;97:45;-1:-1:-1;160:6:25;14:158;-1:-1:-1;14:158:25:o;177:173::-;245:20;;-1:-1:-1;;;;;294:31:25;;284:42;;274:70;;340:1;337;330:12;274:70;177:173;;;:::o;355:746::-;480:6;488;496;504;512;565:3;553:9;544:7;540:23;536:33;533:53;;;582:1;579;572:12;533:53;622:9;609:23;655:18;647:6;644:30;641:50;;;687:1;684;677:12;641:50;710:70;772:7;763:6;752:9;748:22;710:70;:::i;:::-;700:80;;;799:38;833:2;822:9;818:18;799:38;:::i;:::-;789:48;;856:38;890:2;879:9;875:18;856:38;:::i;:::-;355:746;;;;-1:-1:-1;846:48:25;;963:2;948:18;;935:32;;-1:-1:-1;1064:3:25;1049:19;1036:33;;355:746;-1:-1:-1;;355:746:25:o;1106:362::-;1195:6;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1304:9;1291:23;1337:18;1329:6;1326:30;1323:50;;;1369:1;1366;1359:12;1323:50;1392:70;1454:7;1445:6;1434:9;1430:22;1392:70;:::i;:::-;1382:80;1106:362;-1:-1:-1;;;;1106:362:25:o;1473:127::-;1534:10;1529:3;1525:20;1522:1;1515:31;1565:4;1562:1;1555:15;1589:4;1586:1;1579:15;1605:252;1676:2;1670:9;1718:4;1706:17;;1753:18;1738:34;;1774:22;;;1735:62;1732:88;;;1800:18;;:::i;:::-;1836:2;1829:22;1605:252;:::o;1862:275::-;1933:2;1927:9;1998:2;1979:13;;-1:-1:-1;;1975:27:25;1963:40;;2033:18;2018:34;;2054:22;;;2015:62;2012:88;;;2080:18;;:::i;:::-;2116:2;2109:22;1862:275;;-1:-1:-1;1862:275:25:o;2142:1160::-;2250:9;2309:4;2301:5;2285:14;2281:26;2277:37;2274:57;;;2327:1;2324;2317:12;2274:57;2355:21;;:::i;:::-;2413:5;2400:19;2450:1;2441:7;2438:14;2428:42;;2466:1;2463;2456:12;2428:42;2479:24;;2572:2;2561:14;;;2548:28;2592:16;;;2585:33;2665:2;2654:14;;2641:28;2692:18;2681:30;;2678:50;;;2724:1;2721;2714:12;2678:50;2747:18;;2803:14;2796:4;2788:13;;2784:34;2774:62;;2832:1;2829;2822:12;2774:62;2872:2;2859:16;2898:18;2890:6;2887:30;2884:56;;;2920:18;;:::i;:::-;2962:57;3009:2;2986:17;;-1:-1:-1;;2982:31:25;3015:2;2978:40;2962:57;:::i;:::-;3042:6;3035:5;3028:21;3090:14;3085:2;3076:6;3072:2;3068:15;3064:24;3061:44;3058:64;;;3118:1;3115;3108:12;3058:64;3173:6;3168:2;3164;3160:11;3155:2;3148:5;3144:14;3131:49;3225:1;3200:18;;;3220:2;3196:27;3189:38;;;;3256:2;3243:16;;3236:31;-1:-1:-1;3247:7:25;2142:1160;-1:-1:-1;;2142:1160:25:o;3307:671::-;3360:3;3394:5;3388:12;3426:1;3422:2;3419:9;3409:140;;3471:10;3466:3;3462:20;3459:1;3452:31;3506:4;3503:1;3496:15;3534:4;3531:1;3524:15;3409:140;3570:2;3565:3;3558:15;;3622:4;3615:5;3611:16;3605:23;3598:4;3593:3;3589:14;3582:47;3675:4;3668:5;3664:16;3658:23;3713:4;3706;3701:3;3697:14;3690:28;3747:12;3741:19;3792:6;3785:4;3780:3;3776:14;3769:30;3854:6;3847:4;3833:12;3829:23;3823:3;3818;3814:13;3808:53;3905:1;3899:3;3890:6;3885:3;3881:16;3877:26;3870:37;3968:3;3961:2;3957:7;3952:2;3944:6;3940:15;3936:29;3931:3;3927:39;3923:49;3916:56;;;;3307:671;;;;:::o;3983:614::-;4288:3;4277:9;4270:22;4251:4;4309:57;4361:3;4350:9;4346:19;4338:6;4309:57;:::i;:::-;-1:-1:-1;;;;;4402:32:25;;;4397:2;4382:18;;4375:60;4471:32;;;;4466:2;4451:18;;4444:60;4535:2;4520:18;;4513:34;;;;4578:3;4563:19;;;4556:35;4301:65;3983:614;-1:-1:-1;;3983:614:25:o;4602:184::-;4672:6;4725:2;4713:9;4704:7;4700:23;4696:32;4693:52;;;4741:1;4738;4731:12;4693:52;-1:-1:-1;4764:16:25;;4602:184;-1:-1:-1;4602:184:25:o;4973:275::-;5166:2;5155:9;5148:21;5129:4;5186:56;5238:2;5227:9;5223:18;5215:6;5186:56;:::i;:::-;5178:64;4973:275;-1:-1:-1;;;4973:275:25:o"},"methodIdentifiers":{"executeExactInput((uint8,uint256,bytes),address,address,uint256,uint256)":"1922e4d7","executeExactOutput((uint8,uint256,bytes),address,address,uint256,uint256)":"178fc642","validateConfig((uint8,uint256,bytes))":"d74018a7"}}}},"project/contracts/mocks/TestCurrency.sol":{"TestCurrency":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561000f575f5ffd5b50604051610b90380380610b9083398101604081905261002e9161027b565b8383600361003c838261038f565b506004610049828261038f565b5050600580546001600160a01b0319163390811790915560ff831660805261007291508361007b565b50505050610472565b6001600160a01b0382166100a95760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100b45f83836100b8565b5050565b6001600160a01b0383166100e2578060025f8282546100d7919061044d565b909155506101529050565b6001600160a01b0383165f90815260208190526040902054818110156101345760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100a0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661016e5760028054829003905561018c565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101d191815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610201575f5ffd5b81516001600160401b0381111561021a5761021a6101de565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610248576102486101de565b60405281815283820160200185101561025f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f6080858703121561028e575f5ffd5b84516001600160401b038111156102a3575f5ffd5b6102af878288016101f2565b602087015190955090506001600160401b038111156102cc575f5ffd5b6102d8878288016101f2565b93505060408501519150606085015160ff811681146102f5575f5ffd5b939692955090935050565b600181811c9082168061031457607f821691505b60208210810361033257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561038a578282111561038a57805f5260205f20601f840160051c602085101561036357505f5b90810190601f840160051c035f5b81811015610386575f83820155600101610371565b5050505b505050565b81516001600160401b038111156103a8576103a86101de565b6103bc816103b68454610300565b84610338565b6020601f8211600181146103ee575f83156103d75750848201515b5f19600385901b1c1916600184901b178455610446565b5f84815260208120601f198516915b8281101561041d57878501518255602094850194600190920191016103fd565b508482101561043a57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b8082018082111561046c57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805161070661048a5f395f61010101526107065ff3fe608060405234801561000f575f5ffd5b5060043610610090575f3560e01c8063313ce56711610063578063313ce567146100fa57806370a082311461012b57806395d89b4114610153578063a9059cbb1461015b578063dd62ed3e1461016e575f5ffd5b806306fdde0314610094578063095ea7b3146100b257806318160ddd146100d557806323b872dd146100e7575b5f5ffd5b61009c6101a6565b6040516100a99190610576565b60405180910390f35b6100c56100c03660046105c6565b610236565b60405190151581526020016100a9565b6002545b6040519081526020016100a9565b6100c56100f53660046105ee565b61024f565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100a9565b6100d9610139366004610628565b6001600160a01b03165f9081526020819052604090205490565b61009c610272565b6100c56101693660046105c6565b610281565b6100d961017c366004610648565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101b590610679565b80601f01602080910402602001604051908101604052809291908181526020018280546101e190610679565b801561022c5780601f106102035761010080835404028352916020019161022c565b820191905f5260205f20905b81548152906001019060200180831161020f57829003601f168201915b5050505050905090565b5f3361024381858561028e565b60019150505b92915050565b5f3361025c8582856102a0565b610267858585610321565b506001949350505050565b6060600480546101b590610679565b5f33610243818585610321565b61029b838383600161037e565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981101561031b578181101561030d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61031b84848484035f61037e565b50505050565b6001600160a01b03831661034a57604051634b637e8f60e11b81525f6004820152602401610304565b6001600160a01b0382166103735760405163ec442f0560e01b81525f6004820152602401610304565b61029b838383610450565b6001600160a01b0384166103a75760405163e602df0560e01b81525f6004820152602401610304565b6001600160a01b0383166103d057604051634a1406b160e11b81525f6004820152602401610304565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561031b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161044291815260200190565b60405180910390a350505050565b6001600160a01b03831661047a578060025f82825461046f91906106b1565b909155506104ea9050565b6001600160a01b0383165f90815260208190526040902054818110156104cc5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610304565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661050657600280548290039055610524565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161056991815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146105c1575f5ffd5b919050565b5f5f604083850312156105d7575f5ffd5b6105e0836105ab565b946020939093013593505050565b5f5f5f60608486031215610600575f5ffd5b610609846105ab565b9250610617602085016105ab565b929592945050506040919091013590565b5f60208284031215610638575f5ffd5b610641826105ab565b9392505050565b5f5f60408385031215610659575f5ffd5b610662836105ab565b9150610670602084016105ab565b90509250929050565b600181811c9082168061068d57607f821691505b6020821081036106ab57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561024957634e487b7160e01b5f52601160045260245ffdfea264697066735822122019597c8e85c8d90e2787fc7f7f39347d24b6b29ee2d12f84c3e04abc4600391364736f6c63430008230033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB90 CODESIZE SUB DUP1 PUSH2 0xB90 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x27B JUMP JUMPDEST DUP4 DUP4 PUSH1 0x3 PUSH2 0x3C DUP4 DUP3 PUSH2 0x38F JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x49 DUP3 DUP3 PUSH2 0x38F JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0xFF DUP4 AND PUSH1 0x80 MSTORE PUSH2 0x72 SWAP2 POP DUP4 PUSH2 0x7B JUMP JUMPDEST POP POP POP POP PUSH2 0x472 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB4 PUSH0 DUP4 DUP4 PUSH2 0xB8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xE2 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x44D JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x152 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x134 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xA0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x16E JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x18C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1D1 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x201 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21A JUMPI PUSH2 0x21A PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x248 JUMPI PUSH2 0x248 PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x25F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x28E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2AF DUP8 DUP3 DUP9 ADD PUSH2 0x1F2 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2D8 DUP8 DUP3 DUP9 ADD PUSH2 0x1F2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x314 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x332 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x38A JUMPI DUP3 DUP3 GT ISZERO PUSH2 0x38A JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x363 JUMPI POP PUSH0 JUMPDEST SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR SUB PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x386 JUMPI PUSH0 DUP4 DUP3 ADD SSTORE PUSH1 0x1 ADD PUSH2 0x371 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3A8 JUMPI PUSH2 0x3A8 PUSH2 0x1DE JUMP JUMPDEST PUSH2 0x3BC DUP2 PUSH2 0x3B6 DUP5 SLOAD PUSH2 0x300 JUMP JUMPDEST DUP5 PUSH2 0x338 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x3EE JUMPI PUSH0 DUP4 ISZERO PUSH2 0x3D7 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x446 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x41D JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x3FD JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x43A JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP4 PUSH1 0x1 SHL ADD DUP5 SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x46C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x706 PUSH2 0x48A PUSH0 CODECOPY PUSH0 PUSH2 0x101 ADD MSTORE PUSH2 0x706 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x90 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x16E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xE7 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x1A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x576 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x236 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xF5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xD9 PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x628 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9C PUSH2 0x272 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x281 JUMP JUMPDEST PUSH2 0xD9 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x648 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1B5 SWAP1 PUSH2 0x679 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E1 SWAP1 PUSH2 0x679 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x22C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x203 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x22C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x20F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x243 DUP2 DUP6 DUP6 PUSH2 0x28E JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x25C DUP6 DUP3 DUP6 PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x267 DUP6 DUP6 DUP6 PUSH2 0x321 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1B5 SWAP1 PUSH2 0x679 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x243 DUP2 DUP6 DUP6 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x29B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x37E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0x31B JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x31B DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x37E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x34A JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x373 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH2 0x29B DUP4 DUP4 DUP4 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3A7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3D0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x31B JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x47A JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x6B1 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x4EA SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x506 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x524 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x569 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x5E0 DUP4 PUSH2 0x5AB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x600 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x609 DUP5 PUSH2 0x5AB JUMP JUMPDEST SWAP3 POP PUSH2 0x617 PUSH1 0x20 DUP6 ADD PUSH2 0x5AB JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x638 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x641 DUP3 PUSH2 0x5AB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x659 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x662 DUP4 PUSH2 0x5AB JUMP JUMPDEST SWAP2 POP PUSH2 0x670 PUSH1 0x20 DUP5 ADD PUSH2 0x5AB JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x68D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x6AB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x249 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT MSIZE PUSH29 0x8E85C8D90E2787FC7F7F39347D24B6B29EE2D12F84C3E04ABC46003913 PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"133:431:24:-:0;;;233:233;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;355:5;362:7;1648:5:4;:13;355:5:24;1648::4;:13;:::i;:::-;-1:-1:-1;1671:7:4;:17;1681:7;1671;:17;:::i;:::-;-1:-1:-1;;377:6:24::1;:19:::0;;-1:-1:-1;;;;;;377:19:24::1;386:10;377:19:::0;;::::1;::::0;;;402:21:::1;::::0;::::1;;::::0;429:32:::1;::::0;-1:-1:-1;447:13:24;429:5:::1;:32::i;:::-;233:233:::0;;;;133:431;;7362:208:4;-1:-1:-1;;;;;7432:21:4;;7428:91;;7476:32;;-1:-1:-1;;;7476:32:4;;7505:1;7476:32;;;4477:51:25;4450:18;;7476:32:4;;;;;;;;7428:91;7528:35;7544:1;7548:7;7557:5;7528:7;:35::i;:::-;7362:208;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:4;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:4;;-1:-1:-1;5997:540:4;;-1:-1:-1;;;;;6211:15:4;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:4;;-1:-1:-1;;;;;4986:32:25;;6290:50:4;;;4968:51:25;5035:18;;;5028:34;;;5078:18;;;5071:34;;;4941:18;;6290:50:4;4766:345:25;6240:115:4;-1:-1:-1;;;;;6475:15:4;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:4;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:4;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:4;6996:4;-1:-1:-1;;;;;6987:25:4;;7006:5;6987:25;;;;5262::25;;5250:2;5235:18;;5116:177;6987:25:4;;;;;;;;5912:1107;;;:::o;14:127:25:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:25;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:25;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:25;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:25;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:25:o;874:769::-;989:6;997;1005;1013;1066:3;1054:9;1045:7;1041:23;1037:33;1034:53;;;1083:1;1080;1073:12;1034:53;1110:16;;-1:-1:-1;;;;;1138:30:25;;1135:50;;;1181:1;1178;1171:12;1135:50;1204:61;1257:7;1248:6;1237:9;1233:22;1204:61;:::i;:::-;1311:2;1296:18;;1290:25;1194:71;;-1:-1:-1;1290:25:25;-1:-1:-1;;;;;;1327:32:25;;1324:52;;;1372:1;1369;1362:12;1324:52;1395:63;1450:7;1439:8;1428:9;1424:24;1395:63;:::i;:::-;1385:73;;;1498:2;1487:9;1483:18;1477:25;1467:35;;1545:2;1534:9;1530:18;1524:25;1589:4;1582:5;1578:16;1571:5;1568:27;1558:55;;1609:1;1606;1599:12;1558:55;874:769;;;;-1:-1:-1;874:769:25;;-1:-1:-1;;874:769:25:o;1648:380::-;1727:1;1723:12;;;;1770;;;1791:61;;1845:4;1837:6;1833:17;1823:27;;1791:61;1898:2;1890:6;1887:14;1867:18;1864:38;1861:161;;1944:10;1939:3;1935:20;1932:1;1925:31;1979:4;1976:1;1969:15;2007:4;2004:1;1997:15;1861:161;;1648:380;;;:::o;2159:692::-;2261:2;2256:3;2253:11;2250:595;;;2298:10;2293:3;2290:19;2287:548;;;2350:5;2347:1;2340:16;2398:4;2395:1;2385:18;2463:2;2451:10;2447:19;2444:1;2440:27;2502:4;2490:10;2487:20;2484:45;;;-1:-1:-1;2526:1:25;2484:45;2565:23;;;;2635:2;2626:12;;2623:1;2619:20;2615:39;2680:1;2698:123;2712:2;2709:1;2706:9;2698:123;;;2801:1;2780:19;;;2773:30;2730:1;2723:9;2698:123;;;2702:3;;;2287:548;2159:692;;;:::o;3027:1299::-;3147:10;;-1:-1:-1;;;;;3169:30:25;;3166:56;;;3202:18;;:::i;:::-;3231:97;3321:6;3281:38;3313:4;3307:11;3281:38;:::i;:::-;3275:4;3231:97;:::i;:::-;3377:4;3408:2;3397:14;;3425:1;3420:649;;;;4113:1;4130:6;4127:89;;;-1:-1:-1;4182:19:25;;;4176:26;4127:89;-1:-1:-1;;2984:1:25;2980:11;;;2976:24;2972:29;2962:40;3008:1;3004:11;;;2959:57;4229:81;;3390:930;;3420:649;2106:1;2099:14;;;2143:4;2130:18;;-1:-1:-1;;3456:20:25;;;3574:222;3588:7;3585:1;3582:14;3574:222;;;3670:19;;;3664:26;3649:42;;3777:4;3762:20;;;;3730:1;3718:14;;;;3604:12;3574:222;;;3578:3;3824:6;3815:7;3812:19;3809:201;;;3885:19;;;3879:26;-1:-1:-1;;3968:1:25;3964:14;;;3980:3;3960:24;3956:37;3952:42;3937:58;3922:74;;3809:201;;;4056:1;4047:6;4044:1;4040:14;4036:22;4030:4;4023:36;3390:930;;;;3027:1299;;:::o;4539:222::-;4604:9;;;4625:10;;;4622:133;;;4677:10;4672:3;4668:20;4665:1;4658:31;4712:4;4709:1;4702:15;4740:4;4737:1;4730:15;4622:133;4539:222;;;;:::o;5116:177::-;133:431:24;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"8074":[{"length":32,"start":257}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b5060043610610090575f3560e01c8063313ce56711610063578063313ce567146100fa57806370a082311461012b57806395d89b4114610153578063a9059cbb1461015b578063dd62ed3e1461016e575f5ffd5b806306fdde0314610094578063095ea7b3146100b257806318160ddd146100d557806323b872dd146100e7575b5f5ffd5b61009c6101a6565b6040516100a99190610576565b60405180910390f35b6100c56100c03660046105c6565b610236565b60405190151581526020016100a9565b6002545b6040519081526020016100a9565b6100c56100f53660046105ee565b61024f565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100a9565b6100d9610139366004610628565b6001600160a01b03165f9081526020819052604090205490565b61009c610272565b6100c56101693660046105c6565b610281565b6100d961017c366004610648565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101b590610679565b80601f01602080910402602001604051908101604052809291908181526020018280546101e190610679565b801561022c5780601f106102035761010080835404028352916020019161022c565b820191905f5260205f20905b81548152906001019060200180831161020f57829003601f168201915b5050505050905090565b5f3361024381858561028e565b60019150505b92915050565b5f3361025c8582856102a0565b610267858585610321565b506001949350505050565b6060600480546101b590610679565b5f33610243818585610321565b61029b838383600161037e565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f1981101561031b578181101561030d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61031b84848484035f61037e565b50505050565b6001600160a01b03831661034a57604051634b637e8f60e11b81525f6004820152602401610304565b6001600160a01b0382166103735760405163ec442f0560e01b81525f6004820152602401610304565b61029b838383610450565b6001600160a01b0384166103a75760405163e602df0560e01b81525f6004820152602401610304565b6001600160a01b0383166103d057604051634a1406b160e11b81525f6004820152602401610304565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561031b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161044291815260200190565b60405180910390a350505050565b6001600160a01b03831661047a578060025f82825461046f91906106b1565b909155506104ea9050565b6001600160a01b0383165f90815260208190526040902054818110156104cc5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610304565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661050657600280548290039055610524565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161056991815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146105c1575f5ffd5b919050565b5f5f604083850312156105d7575f5ffd5b6105e0836105ab565b946020939093013593505050565b5f5f5f60608486031215610600575f5ffd5b610609846105ab565b9250610617602085016105ab565b929592945050506040919091013590565b5f60208284031215610638575f5ffd5b610641826105ab565b9392505050565b5f5f60408385031215610659575f5ffd5b610662836105ab565b9150610670602084016105ab565b90509250929050565b600181811c9082168061068d57607f821691505b6020821081036106ab57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561024957634e487b7160e01b5f52601160045260245ffdfea264697066735822122019597c8e85c8d90e2787fc7f7f39347d24b6b29ee2d12f84c3e04abc4600391364736f6c63430008230033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x90 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x63 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xFA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x15B JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x16E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xE7 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9C PUSH2 0x1A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x576 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH2 0xC0 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x236 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0xF5 CALLDATASIZE PUSH1 0x4 PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x24F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA9 JUMP JUMPDEST PUSH2 0xD9 PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x628 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x9C PUSH2 0x272 JUMP JUMPDEST PUSH2 0xC5 PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0x5C6 JUMP JUMPDEST PUSH2 0x281 JUMP JUMPDEST PUSH2 0xD9 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x648 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1B5 SWAP1 PUSH2 0x679 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1E1 SWAP1 PUSH2 0x679 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x22C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x203 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x22C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x20F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x243 DUP2 DUP6 DUP6 PUSH2 0x28E JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x25C DUP6 DUP3 DUP6 PUSH2 0x2A0 JUMP JUMPDEST PUSH2 0x267 DUP6 DUP6 DUP6 PUSH2 0x321 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1B5 SWAP1 PUSH2 0x679 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x243 DUP2 DUP6 DUP6 PUSH2 0x321 JUMP JUMPDEST PUSH2 0x29B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x37E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH0 NOT DUP2 LT ISZERO PUSH2 0x31B JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x30D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x31B DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x37E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x34A JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x373 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH2 0x29B DUP4 DUP4 DUP4 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3A7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3D0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x31B JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x442 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x47A JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x6B1 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x4EA SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x4CC JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x304 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x506 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x524 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x569 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x40 DUP6 ADD MCOPY PUSH0 PUSH1 0x40 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x5E0 DUP4 PUSH2 0x5AB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x600 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x609 DUP5 PUSH2 0x5AB JUMP JUMPDEST SWAP3 POP PUSH2 0x617 PUSH1 0x20 DUP6 ADD PUSH2 0x5AB JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x638 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x641 DUP3 PUSH2 0x5AB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x659 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x662 DUP4 PUSH2 0x5AB JUMP JUMPDEST SWAP2 POP PUSH2 0x670 PUSH1 0x20 DUP5 ADD PUSH2 0x5AB JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x68D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x6AB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x249 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT MSIZE PUSH29 0x8E85C8D90E2787FC7F7F39347D24B6B29EE2D12F84C3E04ABC46003913 PUSH5 0x736F6C6343 STOP ADDMOD 0x23 STOP CALLER ","sourceMap":"133:431:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3902:186;;;;;;:::i;:::-;;:::i;:::-;;;1085:14:25;;1078:22;1060:41;;1048:2;1033:18;3902:186:4;920:187:25;2803:97:4;2881:12;;2803:97;;;1258:25:25;;;1246:2;1231:18;2803:97:4;1112:177:25;4680:244:4;;;;;;:::i;:::-;;:::i;470:92:24:-;;;1845:4:25;548:9:24;1833:17:25;1815:36;;1803:2;1788:18;470:92:24;1673:184:25;2933:116:4;;;;;;:::i;:::-;-1:-1:-1;;;;;3024:18:4;2998:7;3024:18;;;;;;;;;;;;2933:116;1962:93;;;:::i;3244:178::-;;;;;;:::i;:::-;;:::i;3455:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3561:18:4;;;3535:7;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3455:140;1760:89;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3902:186::-;3975:4;735:10:8;4029:31:4;735:10:8;4045:7:4;4054:5;4029:8;:31::i;:::-;4077:4;4070:11;;;3902:186;;;;;:::o;4680:244::-;4767:4;735:10:8;4823:37:4;4839:4;735:10:8;4854:5:4;4823:15;:37::i;:::-;4870:26;4880:4;4886:2;4890:5;4870:9;:26::i;:::-;-1:-1:-1;4913:4:4;;4680:244;-1:-1:-1;;;;4680:244:4:o;1962:93::-;2009:13;2041:7;2034:14;;;;;:::i;3244:178::-;3313:4;735:10:8;3367:27:4;735:10:8;3384:2:4;3388:5;3367:9;:27::i;8630:128::-;8714:37;8723:5;8730:7;8739:5;8746:4;8714:8;:37::i;:::-;8630:128;;;:::o;10321:476::-;-1:-1:-1;;;;;3561:18:4;;;10420:24;3561:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10486:36:4;;10482:309;;;10561:5;10542:16;:24;10538:130;;;10593:60;;-1:-1:-1;;;10593:60:4;;-1:-1:-1;;;;;2923:32:25;;10593:60:4;;;2905:51:25;2972:18;;;2965:34;;;3015:18;;;3008:34;;;2878:18;;10593:60:4;;;;;;;;10538:130;10709:57;10718:5;10725:7;10753:5;10734:16;:24;10760:5;10709:8;:57::i;:::-;10410:387;10321:476;;;:::o;5297:300::-;-1:-1:-1;;;;;5380:18:4;;5376:86;;5421:30;;-1:-1:-1;;;5421:30:4;;5448:1;5421:30;;;3199:51:25;3172:18;;5421:30:4;3053:203:25;5376:86:4;-1:-1:-1;;;;;5475:16:4;;5471:86;;5514:32;;-1:-1:-1;;;5514:32:4;;5543:1;5514:32;;;3199:51:25;3172:18;;5514:32:4;3053:203:25;5471:86:4;5566:24;5574:4;5580:2;5584:5;5566:7;:24::i;9607:432::-;-1:-1:-1;;;;;9719:19:4;;9715:89;;9761:32;;-1:-1:-1;;;9761:32:4;;9790:1;9761:32;;;3199:51:25;3172:18;;9761:32:4;3053:203:25;9715:89:4;-1:-1:-1;;;;;9817:21:4;;9813:90;;9861:31;;-1:-1:-1;;;9861:31:4;;9889:1;9861:31;;;3199:51:25;3172:18;;9861:31:4;3053:203:25;9813:90:4;-1:-1:-1;;;;;9912:18:4;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;9957:76;;;;10007:7;-1:-1:-1;;;;;9991:31:4;10000:5;-1:-1:-1;;;;;9991:31:4;;10016:5;9991:31;;;;1258:25:25;;1246:2;1231:18;;1112:177;9991:31:4;;;;;;;;9607:432;;;;:::o;5912:1107::-;-1:-1:-1;;;;;6001:18:4;;5997:540;;6153:5;6137:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;5997:540:4;;-1:-1:-1;5997:540:4;;-1:-1:-1;;;;;6211:15:4;;6189:19;6211:15;;;;;;;;;;;6244:19;;;6240:115;;;6290:50;;-1:-1:-1;;;6290:50:4;;-1:-1:-1;;;;;2923:32:25;;6290:50:4;;;2905:51:25;2972:18;;;2965:34;;;3015:18;;;3008:34;;;2878:18;;6290:50:4;2703:345:25;6240:115:4;-1:-1:-1;;;;;6475:15:4;;:9;:15;;;;;;;;;;6493:19;;;;6475:37;;5997:540;-1:-1:-1;;;;;6551:16:4;;6547:425;;6714:12;:21;;;;;;;6547:425;;;-1:-1:-1;;;;;6925:13:4;;:9;:13;;;;;;;;;;:22;;;;;;6547:425;7002:2;-1:-1:-1;;;;;6987:25:4;6996:4;-1:-1:-1;;;;;6987:25:4;;7006:5;6987:25;;;;1258::25;;1246:2;1231:18;;1112:177;6987:25:4;;;;;;;;5912:1107;;;:::o;14:418:25:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:173::-;505:20;;-1:-1:-1;;;;;554:31:25;;544:42;;534:70;;600:1;597;590:12;534:70;437:173;;;:::o;615:300::-;683:6;691;744:2;732:9;723:7;719:23;715:32;712:52;;;760:1;757;750:12;712:52;783:29;802:9;783:29;:::i;:::-;773:39;881:2;866:18;;;;853:32;;-1:-1:-1;;;615:300:25:o;1294:374::-;1371:6;1379;1387;1440:2;1428:9;1419:7;1415:23;1411:32;1408:52;;;1456:1;1453;1446:12;1408:52;1479:29;1498:9;1479:29;:::i;:::-;1469:39;;1527:38;1561:2;1550:9;1546:18;1527:38;:::i;:::-;1294:374;;1517:48;;-1:-1:-1;;;1634:2:25;1619:18;;;;1606:32;;1294:374::o;1862:186::-;1921:6;1974:2;1962:9;1953:7;1949:23;1945:32;1942:52;;;1990:1;1987;1980:12;1942:52;2013:29;2032:9;2013:29;:::i;:::-;2003:39;1862:186;-1:-1:-1;;;1862:186:25:o;2053:260::-;2121:6;2129;2182:2;2170:9;2161:7;2157:23;2153:32;2150:52;;;2198:1;2195;2188:12;2150:52;2221:29;2240:9;2221:29;:::i;:::-;2211:39;;2269:38;2303:2;2292:9;2288:18;2269:38;:::i;:::-;2259:48;;2053:260;;;;;:::o;2318:380::-;2397:1;2393:12;;;;2440;;;2461:61;;2515:4;2507:6;2503:17;2493:27;;2461:61;2568:2;2560:6;2557:14;2537:18;2534:38;2531:161;;2614:10;2609:3;2605:20;2602:1;2595:31;2649:4;2646:1;2639:15;2677:4;2674:1;2667:15;2531:161;;2318:380;;;:::o;3261:222::-;3326:9;;;3347:10;;;3344:133;;;3399:10;3394:3;3390:20;3387:1;3380:31;3434:4;3431:1;3424:15;3462:4;3459:1;3452:15"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}}}}},"sources":{"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC1363.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC1363.sol","exportedSymbols":{"IERC1363":[81],"IERC165":[1394],"IERC20":[819]},"id":82,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"107:24:0"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC20.sol","file":"./IERC20.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":82,"sourceUnit":90,"src":"133:36:0","symbolAliases":[{"foreign":{"id":2,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"141:6:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC165.sol","file":"./IERC165.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":82,"sourceUnit":86,"src":"170:38:0","symbolAliases":[{"foreign":{"id":4,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"178:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7,"name":"IERC20","nameLocations":["590:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"590:6:0"},"id":8,"nodeType":"InheritanceSpecifier","src":"590:6:0"},{"baseName":{"id":9,"name":"IERC165","nameLocations":["598:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1394,"src":"598:7:0"},"id":10,"nodeType":"InheritanceSpecifier","src":"598:7:0"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"210:357:0","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"id":81,"linearizedBaseContracts":[81,1394,819],"name":"IERC1363","nameLocation":"578:8:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":11,"nodeType":"StructuredDocumentation","src":"1148:370:0","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","id":20,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:0","nodeType":"FunctionDefinition","parameters":{"id":16,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13,"mutability":"mutable","name":"to","nameLocation":"1556:2:0","nodeType":"VariableDeclaration","scope":20,"src":"1548:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15,"mutability":"mutable","name":"value","nameLocation":"1568:5:0","nodeType":"VariableDeclaration","scope":20,"src":"1560:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:0"},"returnParameters":{"id":19,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20,"src":"1593:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:0"},"scope":81,"src":"1523:76:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":21,"nodeType":"StructuredDocumentation","src":"1605:453:0","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","id":32,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:0","nodeType":"FunctionDefinition","parameters":{"id":28,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23,"mutability":"mutable","name":"to","nameLocation":"2096:2:0","nodeType":"VariableDeclaration","scope":32,"src":"2088:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":25,"mutability":"mutable","name":"value","nameLocation":"2108:5:0","nodeType":"VariableDeclaration","scope":32,"src":"2100:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":24,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":27,"mutability":"mutable","name":"data","nameLocation":"2130:4:0","nodeType":"VariableDeclaration","scope":32,"src":"2115:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":26,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:0"},"returnParameters":{"id":31,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":32,"src":"2154:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":29,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:0"},"scope":81,"src":"2063:97:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":33,"nodeType":"StructuredDocumentation","src":"2166:453:0","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","id":44,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:0","nodeType":"FunctionDefinition","parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"from","nameLocation":"2661:4:0","nodeType":"VariableDeclaration","scope":44,"src":"2653:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":37,"mutability":"mutable","name":"to","nameLocation":"2675:2:0","nodeType":"VariableDeclaration","scope":44,"src":"2667:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"value","nameLocation":"2687:5:0","nodeType":"VariableDeclaration","scope":44,"src":"2679:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44,"src":"2712:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:0"},"scope":81,"src":"2624:94:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"2724:536:0","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","id":58,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:0","nodeType":"FunctionDefinition","parameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"from","nameLocation":"3302:4:0","nodeType":"VariableDeclaration","scope":58,"src":"3294:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"mutability":"mutable","name":"to","nameLocation":"3316:2:0","nodeType":"VariableDeclaration","scope":58,"src":"3308:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":51,"mutability":"mutable","name":"value","nameLocation":"3328:5:0","nodeType":"VariableDeclaration","scope":58,"src":"3320:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":53,"mutability":"mutable","name":"data","nameLocation":"3350:4:0","nodeType":"VariableDeclaration","scope":58,"src":"3335:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":52,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:0"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58,"src":"3374:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:0"},"scope":81,"src":"3265:115:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":59,"nodeType":"StructuredDocumentation","src":"3386:390:0","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","id":68,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:0","nodeType":"FunctionDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"mutability":"mutable","name":"spender","nameLocation":"3813:7:0","nodeType":"VariableDeclaration","scope":68,"src":"3805:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":63,"mutability":"mutable","name":"value","nameLocation":"3830:5:0","nodeType":"VariableDeclaration","scope":68,"src":"3822:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:0"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[{"constant":false,"id":66,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":68,"src":"3855:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":65,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:0"},"scope":81,"src":"3781:80:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"3867:478:0","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","id":80,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:0","nodeType":"FunctionDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"spender","nameLocation":"4382:7:0","nodeType":"VariableDeclaration","scope":80,"src":"4374:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73,"mutability":"mutable","name":"value","nameLocation":"4399:5:0","nodeType":"VariableDeclaration","scope":80,"src":"4391:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75,"mutability":"mutable","name":"data","nameLocation":"4421:4:0","nodeType":"VariableDeclaration","scope":80,"src":"4406:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:0"},"returnParameters":{"id":79,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80,"src":"4445:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":77,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:0"},"scope":81,"src":"4350:101:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":82,"src":"568:3885:0","usedErrors":[],"usedEvents":[753,762]}],"src":"107:4347:0"},"id":0},"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC165.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[1394]},"id":86,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":83,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:1"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":85,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":86,"sourceUnit":1395,"src":"133:59:1","symbolAliases":[{"foreign":{"id":84,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"141:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:87:1"},"id":1},"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC20.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[819]},"id":90,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":87,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"105:25:2"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":89,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":90,"sourceUnit":820,"src":"132:49:2","symbolAliases":[{"foreign":{"id":88,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"140:6:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"105:77:2"},"id":2},"npm/@openzeppelin/contracts@5.5.0/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[226],"IERC20Errors":[131],"IERC721Errors":[179]},"id":227,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":91,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"113:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"139:141:3","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":131,"linearizedBaseContracts":[131],"name":"IERC20Errors","nameLocation":"291:12:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":93,"nodeType":"StructuredDocumentation","src":"310:309:3","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":101,"name":"ERC20InsufficientBalance","nameLocation":"630:24:3","nodeType":"ErrorDefinition","parameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"mutability":"mutable","name":"sender","nameLocation":"663:6:3","nodeType":"VariableDeclaration","scope":101,"src":"655:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":97,"mutability":"mutable","name":"balance","nameLocation":"679:7:3","nodeType":"VariableDeclaration","scope":101,"src":"671:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":96,"name":"uint256","nodeType":"ElementaryTypeName","src":"671:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":99,"mutability":"mutable","name":"needed","nameLocation":"696:6:3","nodeType":"VariableDeclaration","scope":101,"src":"688:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"688:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:49:3"},"src":"624:80:3"},{"documentation":{"id":102,"nodeType":"StructuredDocumentation","src":"710:152:3","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":106,"name":"ERC20InvalidSender","nameLocation":"873:18:3","nodeType":"ErrorDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"sender","nameLocation":"900:6:3","nodeType":"VariableDeclaration","scope":106,"src":"892:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":103,"name":"address","nodeType":"ElementaryTypeName","src":"892:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"891:16:3"},"src":"867:41:3"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"914:159:3","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":111,"name":"ERC20InvalidReceiver","nameLocation":"1084:20:3","nodeType":"ErrorDefinition","parameters":{"id":110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"receiver","nameLocation":"1113:8:3","nodeType":"VariableDeclaration","scope":111,"src":"1105:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"1105:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1104:18:3"},"src":"1078:45:3"},{"documentation":{"id":112,"nodeType":"StructuredDocumentation","src":"1129:345:3","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":120,"name":"ERC20InsufficientAllowance","nameLocation":"1485:26:3","nodeType":"ErrorDefinition","parameters":{"id":119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"spender","nameLocation":"1520:7:3","nodeType":"VariableDeclaration","scope":120,"src":"1512:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113,"name":"address","nodeType":"ElementaryTypeName","src":"1512:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":116,"mutability":"mutable","name":"allowance","nameLocation":"1537:9:3","nodeType":"VariableDeclaration","scope":120,"src":"1529:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":115,"name":"uint256","nodeType":"ElementaryTypeName","src":"1529:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":118,"mutability":"mutable","name":"needed","nameLocation":"1556:6:3","nodeType":"VariableDeclaration","scope":120,"src":"1548:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1548:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1511:52:3"},"src":"1479:85:3"},{"documentation":{"id":121,"nodeType":"StructuredDocumentation","src":"1570:174:3","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":125,"name":"ERC20InvalidApprover","nameLocation":"1755:20:3","nodeType":"ErrorDefinition","parameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"approver","nameLocation":"1784:8:3","nodeType":"VariableDeclaration","scope":125,"src":"1776:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"1776:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1775:18:3"},"src":"1749:45:3"},{"documentation":{"id":126,"nodeType":"StructuredDocumentation","src":"1800:195:3","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":130,"name":"ERC20InvalidSpender","nameLocation":"2006:19:3","nodeType":"ErrorDefinition","parameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"spender","nameLocation":"2034:7:3","nodeType":"VariableDeclaration","scope":130,"src":"2026:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":127,"name":"address","nodeType":"ElementaryTypeName","src":"2026:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2025:17:3"},"src":"2000:43:3"}],"scope":227,"src":"281:1764:3","usedErrors":[101,106,111,120,125,130],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":132,"nodeType":"StructuredDocumentation","src":"2047:143:3","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":179,"linearizedBaseContracts":[179],"name":"IERC721Errors","nameLocation":"2201:13:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":133,"nodeType":"StructuredDocumentation","src":"2221:220:3","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-721.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":137,"name":"ERC721InvalidOwner","nameLocation":"2452:18:3","nodeType":"ErrorDefinition","parameters":{"id":136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135,"mutability":"mutable","name":"owner","nameLocation":"2479:5:3","nodeType":"VariableDeclaration","scope":137,"src":"2471:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"2471:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2470:15:3"},"src":"2446:40:3"},{"documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"2492:132:3","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":142,"name":"ERC721NonexistentToken","nameLocation":"2635:22:3","nodeType":"ErrorDefinition","parameters":{"id":141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":140,"mutability":"mutable","name":"tokenId","nameLocation":"2666:7:3","nodeType":"VariableDeclaration","scope":142,"src":"2658:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":139,"name":"uint256","nodeType":"ElementaryTypeName","src":"2658:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2657:17:3"},"src":"2629:46:3"},{"documentation":{"id":143,"nodeType":"StructuredDocumentation","src":"2681:289:3","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":151,"name":"ERC721IncorrectOwner","nameLocation":"2981:20:3","nodeType":"ErrorDefinition","parameters":{"id":150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":145,"mutability":"mutable","name":"sender","nameLocation":"3010:6:3","nodeType":"VariableDeclaration","scope":151,"src":"3002:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":144,"name":"address","nodeType":"ElementaryTypeName","src":"3002:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":147,"mutability":"mutable","name":"tokenId","nameLocation":"3026:7:3","nodeType":"VariableDeclaration","scope":151,"src":"3018:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":146,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":149,"mutability":"mutable","name":"owner","nameLocation":"3043:5:3","nodeType":"VariableDeclaration","scope":151,"src":"3035:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":148,"name":"address","nodeType":"ElementaryTypeName","src":"3035:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3001:48:3"},"src":"2975:75:3"},{"documentation":{"id":152,"nodeType":"StructuredDocumentation","src":"3056:152:3","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":156,"name":"ERC721InvalidSender","nameLocation":"3219:19:3","nodeType":"ErrorDefinition","parameters":{"id":155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":154,"mutability":"mutable","name":"sender","nameLocation":"3247:6:3","nodeType":"VariableDeclaration","scope":156,"src":"3239:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":153,"name":"address","nodeType":"ElementaryTypeName","src":"3239:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3238:16:3"},"src":"3213:42:3"},{"documentation":{"id":157,"nodeType":"StructuredDocumentation","src":"3261:159:3","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":161,"name":"ERC721InvalidReceiver","nameLocation":"3431:21:3","nodeType":"ErrorDefinition","parameters":{"id":160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":159,"mutability":"mutable","name":"receiver","nameLocation":"3461:8:3","nodeType":"VariableDeclaration","scope":161,"src":"3453:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":158,"name":"address","nodeType":"ElementaryTypeName","src":"3453:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3452:18:3"},"src":"3425:46:3"},{"documentation":{"id":162,"nodeType":"StructuredDocumentation","src":"3477:247:3","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":168,"name":"ERC721InsufficientApproval","nameLocation":"3735:26:3","nodeType":"ErrorDefinition","parameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":164,"mutability":"mutable","name":"operator","nameLocation":"3770:8:3","nodeType":"VariableDeclaration","scope":168,"src":"3762:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":163,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"tokenId","nameLocation":"3788:7:3","nodeType":"VariableDeclaration","scope":168,"src":"3780:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":165,"name":"uint256","nodeType":"ElementaryTypeName","src":"3780:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3761:35:3"},"src":"3729:68:3"},{"documentation":{"id":169,"nodeType":"StructuredDocumentation","src":"3803:174:3","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":173,"name":"ERC721InvalidApprover","nameLocation":"3988:21:3","nodeType":"ErrorDefinition","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"approver","nameLocation":"4018:8:3","nodeType":"VariableDeclaration","scope":173,"src":"4010:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4009:18:3"},"src":"3982:46:3"},{"documentation":{"id":174,"nodeType":"StructuredDocumentation","src":"4034:197:3","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":178,"name":"ERC721InvalidOperator","nameLocation":"4242:21:3","nodeType":"ErrorDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"operator","nameLocation":"4272:8:3","nodeType":"VariableDeclaration","scope":178,"src":"4264:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"4264:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4263:18:3"},"src":"4236:46:3"}],"scope":227,"src":"2191:2093:3","usedErrors":[137,142,151,156,161,168,173,178],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":180,"nodeType":"StructuredDocumentation","src":"4286:145:3","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":226,"linearizedBaseContracts":[226],"name":"IERC1155Errors","nameLocation":"4442:14:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":181,"nodeType":"StructuredDocumentation","src":"4463:361:3","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":191,"name":"ERC1155InsufficientBalance","nameLocation":"4835:26:3","nodeType":"ErrorDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"sender","nameLocation":"4870:6:3","nodeType":"VariableDeclaration","scope":191,"src":"4862:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":182,"name":"address","nodeType":"ElementaryTypeName","src":"4862:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":185,"mutability":"mutable","name":"balance","nameLocation":"4886:7:3","nodeType":"VariableDeclaration","scope":191,"src":"4878:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":184,"name":"uint256","nodeType":"ElementaryTypeName","src":"4878:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":187,"mutability":"mutable","name":"needed","nameLocation":"4903:6:3","nodeType":"VariableDeclaration","scope":191,"src":"4895:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":186,"name":"uint256","nodeType":"ElementaryTypeName","src":"4895:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":189,"mutability":"mutable","name":"tokenId","nameLocation":"4919:7:3","nodeType":"VariableDeclaration","scope":191,"src":"4911:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":188,"name":"uint256","nodeType":"ElementaryTypeName","src":"4911:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4861:66:3"},"src":"4829:99:3"},{"documentation":{"id":192,"nodeType":"StructuredDocumentation","src":"4934:152:3","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":196,"name":"ERC1155InvalidSender","nameLocation":"5097:20:3","nodeType":"ErrorDefinition","parameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":194,"mutability":"mutable","name":"sender","nameLocation":"5126:6:3","nodeType":"VariableDeclaration","scope":196,"src":"5118:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":193,"name":"address","nodeType":"ElementaryTypeName","src":"5118:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5117:16:3"},"src":"5091:43:3"},{"documentation":{"id":197,"nodeType":"StructuredDocumentation","src":"5140:159:3","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":201,"name":"ERC1155InvalidReceiver","nameLocation":"5310:22:3","nodeType":"ErrorDefinition","parameters":{"id":200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":199,"mutability":"mutable","name":"receiver","nameLocation":"5341:8:3","nodeType":"VariableDeclaration","scope":201,"src":"5333:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":198,"name":"address","nodeType":"ElementaryTypeName","src":"5333:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5332:18:3"},"src":"5304:47:3"},{"documentation":{"id":202,"nodeType":"StructuredDocumentation","src":"5357:256:3","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":208,"name":"ERC1155MissingApprovalForAll","nameLocation":"5624:28:3","nodeType":"ErrorDefinition","parameters":{"id":207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":204,"mutability":"mutable","name":"operator","nameLocation":"5661:8:3","nodeType":"VariableDeclaration","scope":208,"src":"5653:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":203,"name":"address","nodeType":"ElementaryTypeName","src":"5653:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"owner","nameLocation":"5679:5:3","nodeType":"VariableDeclaration","scope":208,"src":"5671:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":205,"name":"address","nodeType":"ElementaryTypeName","src":"5671:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5652:33:3"},"src":"5618:68:3"},{"documentation":{"id":209,"nodeType":"StructuredDocumentation","src":"5692:174:3","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":213,"name":"ERC1155InvalidApprover","nameLocation":"5877:22:3","nodeType":"ErrorDefinition","parameters":{"id":212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":211,"mutability":"mutable","name":"approver","nameLocation":"5908:8:3","nodeType":"VariableDeclaration","scope":213,"src":"5900:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":210,"name":"address","nodeType":"ElementaryTypeName","src":"5900:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5899:18:3"},"src":"5871:47:3"},{"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"5924:197:3","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":218,"name":"ERC1155InvalidOperator","nameLocation":"6132:22:3","nodeType":"ErrorDefinition","parameters":{"id":217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"operator","nameLocation":"6163:8:3","nodeType":"VariableDeclaration","scope":218,"src":"6155:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"6155:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6154:18:3"},"src":"6126:47:3"},{"documentation":{"id":219,"nodeType":"StructuredDocumentation","src":"6179:280:3","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":225,"name":"ERC1155InvalidArrayLength","nameLocation":"6470:25:3","nodeType":"ErrorDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"idsLength","nameLocation":"6504:9:3","nodeType":"VariableDeclaration","scope":225,"src":"6496:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":220,"name":"uint256","nodeType":"ElementaryTypeName","src":"6496:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":223,"mutability":"mutable","name":"valuesLength","nameLocation":"6523:12:3","nodeType":"VariableDeclaration","scope":225,"src":"6515:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":222,"name":"uint256","nodeType":"ElementaryTypeName","src":"6515:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6495:41:3"},"src":"6464:73:3"}],"scope":227,"src":"4432:2107:3","usedErrors":[191,196,201,208,213,218,225],"usedEvents":[]}],"src":"113:6427:3"},"id":3},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[1330],"ERC20":[741],"IERC20":[819],"IERC20Errors":[131],"IERC20Metadata":[845]},"id":742,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":228,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:4"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":230,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":742,"sourceUnit":820,"src":"131:36:4","symbolAliases":[{"foreign":{"id":229,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"139:6:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":232,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":742,"sourceUnit":846,"src":"168:63:4","symbolAliases":[{"foreign":{"id":231,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"176:14:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/Context.sol","file":"../../utils/Context.sol","id":234,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":742,"sourceUnit":1331,"src":"232:48:4","symbolAliases":[{"foreign":{"id":233,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"240:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":236,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":742,"sourceUnit":227,"src":"281:65:4","symbolAliases":[{"foreign":{"id":235,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"289:12:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":238,"name":"Context","nameLocations":["1133:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1330,"src":"1133:7:4"},"id":239,"nodeType":"InheritanceSpecifier","src":"1133:7:4"},{"baseName":{"id":240,"name":"IERC20","nameLocations":["1142:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"1142:6:4"},"id":241,"nodeType":"InheritanceSpecifier","src":"1142:6:4"},{"baseName":{"id":242,"name":"IERC20Metadata","nameLocations":["1150:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":845,"src":"1150:14:4"},"id":243,"nodeType":"InheritanceSpecifier","src":"1150:14:4"},{"baseName":{"id":244,"name":"IERC20Errors","nameLocations":["1166:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":131,"src":"1166:12:4"},"id":245,"nodeType":"InheritanceSpecifier","src":"1166:12:4"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":237,"nodeType":"StructuredDocumentation","src":"348:757:4","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":741,"linearizedBaseContracts":[741,131,845,819,1330],"name":"ERC20","nameLocation":"1124:5:4","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":249,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:4","nodeType":"VariableDeclaration","scope":741,"src":"1185:53:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":248,"keyName":"account","keyNameLocation":"1201:7:4","keyType":{"id":246,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":247,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":255,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:4","nodeType":"VariableDeclaration","scope":741,"src":"1245:83:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":254,"keyName":"account","keyNameLocation":"1261:7:4","keyType":{"id":250,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":253,"keyName":"spender","keyNameLocation":"1288:7:4","keyType":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":252,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":257,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:4","nodeType":"VariableDeclaration","scope":741,"src":"1335:28:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":259,"mutability":"mutable","name":"_name","nameLocation":"1385:5:4","nodeType":"VariableDeclaration","scope":741,"src":"1370:20:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":258,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":261,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:4","nodeType":"VariableDeclaration","scope":741,"src":"1396:22:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":260,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":277,"nodeType":"Block","src":"1638:57:4","statements":[{"expression":{"id":271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":269,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"1648:5:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":270,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":264,"src":"1656:5:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":272,"nodeType":"ExpressionStatement","src":"1648:13:4"},{"expression":{"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":273,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"1671:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":274,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"1681:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":276,"nodeType":"ExpressionStatement","src":"1671:17:4"}]},"documentation":{"id":262,"nodeType":"StructuredDocumentation","src":"1425:152:4","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":278,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"mutability":"mutable","name":"name_","nameLocation":"1608:5:4","nodeType":"VariableDeclaration","scope":278,"src":"1594:19:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":263,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":266,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:4","nodeType":"VariableDeclaration","scope":278,"src":"1615:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":265,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:4"},"returnParameters":{"id":268,"nodeType":"ParameterList","parameters":[],"src":"1638:0:4"},"scope":741,"src":"1582:113:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[832],"body":{"id":286,"nodeType":"Block","src":"1820:29:4","statements":[{"expression":{"id":284,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"1837:5:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":283,"id":285,"nodeType":"Return","src":"1830:12:4"}]},"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"1701:54:4","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":287,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:4","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"1773:2:4"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":287,"src":"1805:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":281,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:4"},"scope":741,"src":"1760:89:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[838],"body":{"id":295,"nodeType":"Block","src":"2024:31:4","statements":[{"expression":{"id":293,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"2041:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":292,"id":294,"nodeType":"Return","src":"2034:14:4"}]},"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"1855:102:4","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":296,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:4","nodeType":"FunctionDefinition","parameters":{"id":289,"nodeType":"ParameterList","parameters":[],"src":"1977:2:4"},"returnParameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":296,"src":"2009:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":290,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:4"},"scope":741,"src":"1962:93:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[844],"body":{"id":304,"nodeType":"Block","src":"2744:26:4","statements":[{"expression":{"hexValue":"3138","id":302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:4","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":301,"id":303,"nodeType":"Return","src":"2754:9:4"}]},"documentation":{"id":297,"nodeType":"StructuredDocumentation","src":"2061:622:4","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":305,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:4","nodeType":"FunctionDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[],"src":"2705:2:4"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":305,"src":"2737:5:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":299,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:4"},"scope":741,"src":"2688:82:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[768],"body":{"id":313,"nodeType":"Block","src":"2864:36:4","statements":[{"expression":{"id":311,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"2881:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":310,"id":312,"nodeType":"Return","src":"2874:19:4"}]},"documentation":{"id":306,"nodeType":"StructuredDocumentation","src":"2776:22:4","text":"@inheritdoc IERC20"},"functionSelector":"18160ddd","id":314,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2812:11:4","nodeType":"FunctionDefinition","parameters":{"id":307,"nodeType":"ParameterList","parameters":[],"src":"2823:2:4"},"returnParameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":314,"src":"2855:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":308,"name":"uint256","nodeType":"ElementaryTypeName","src":"2855:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2854:9:4"},"scope":741,"src":"2803:97:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[776],"body":{"id":326,"nodeType":"Block","src":"3007:42:4","statements":[{"expression":{"baseExpression":{"id":322,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"3024:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":324,"indexExpression":{"id":323,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":317,"src":"3034:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3024:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":321,"id":325,"nodeType":"Return","src":"3017:25:4"}]},"documentation":{"id":315,"nodeType":"StructuredDocumentation","src":"2906:22:4","text":"@inheritdoc IERC20"},"functionSelector":"70a08231","id":327,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2942:9:4","nodeType":"FunctionDefinition","parameters":{"id":318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"account","nameLocation":"2960:7:4","nodeType":"VariableDeclaration","scope":327,"src":"2952:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2951:17:4"},"returnParameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":327,"src":"2998:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2997:9:4"},"scope":741,"src":"2933:116:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[786],"body":{"id":350,"nodeType":"Block","src":"3319:103:4","statements":[{"assignments":[338],"declarations":[{"constant":false,"id":338,"mutability":"mutable","name":"owner","nameLocation":"3337:5:4","nodeType":"VariableDeclaration","scope":350,"src":"3329:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"3329:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":341,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":339,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"3345:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3345:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3329:28:4"},{"expression":{"arguments":[{"id":343,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"3377:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":344,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"3384:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":345,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"3388:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":342,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":471,"src":"3367:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":347,"nodeType":"ExpressionStatement","src":"3367:27:4"},{"expression":{"hexValue":"74727565","id":348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3411:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":336,"id":349,"nodeType":"Return","src":"3404:11:4"}]},"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"3055:184:4","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":351,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3253:8:4","nodeType":"FunctionDefinition","parameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"to","nameLocation":"3270:2:4","nodeType":"VariableDeclaration","scope":351,"src":"3262:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"3262:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":332,"mutability":"mutable","name":"value","nameLocation":"3282:5:4","nodeType":"VariableDeclaration","scope":351,"src":"3274:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":331,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3261:27:4"},"returnParameters":{"id":336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":335,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":351,"src":"3313:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":334,"name":"bool","nodeType":"ElementaryTypeName","src":"3313:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3312:6:4"},"scope":741,"src":"3244:178:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[796],"body":{"id":367,"nodeType":"Block","src":"3544:51:4","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":361,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"3561:11:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":363,"indexExpression":{"id":362,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"3573:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:18:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":365,"indexExpression":{"id":364,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":356,"src":"3580:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3561:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":360,"id":366,"nodeType":"Return","src":"3554:34:4"}]},"documentation":{"id":352,"nodeType":"StructuredDocumentation","src":"3428:22:4","text":"@inheritdoc IERC20"},"functionSelector":"dd62ed3e","id":368,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3464:9:4","nodeType":"FunctionDefinition","parameters":{"id":357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":354,"mutability":"mutable","name":"owner","nameLocation":"3482:5:4","nodeType":"VariableDeclaration","scope":368,"src":"3474:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":353,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":356,"mutability":"mutable","name":"spender","nameLocation":"3497:7:4","nodeType":"VariableDeclaration","scope":368,"src":"3489:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":355,"name":"address","nodeType":"ElementaryTypeName","src":"3489:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3473:32:4"},"returnParameters":{"id":360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":368,"src":"3535:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":358,"name":"uint256","nodeType":"ElementaryTypeName","src":"3535:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:9:4"},"scope":741,"src":"3455:140:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[806],"body":{"id":391,"nodeType":"Block","src":"3981:107:4","statements":[{"assignments":[379],"declarations":[{"constant":false,"id":379,"mutability":"mutable","name":"owner","nameLocation":"3999:5:4","nodeType":"VariableDeclaration","scope":391,"src":"3991:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"3991:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":382,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":380,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"4007:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3991:28:4"},{"expression":{"arguments":[{"id":384,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"4038:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":385,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"4045:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":373,"src":"4054:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":383,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[632,692],"referencedDeclaration":632,"src":"4029:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4029:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":388,"nodeType":"ExpressionStatement","src":"4029:31:4"},{"expression":{"hexValue":"74727565","id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4077:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":377,"id":390,"nodeType":"Return","src":"4070:11:4"}]},"documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"3601:296:4","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":392,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3911:7:4","nodeType":"FunctionDefinition","parameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":371,"mutability":"mutable","name":"spender","nameLocation":"3927:7:4","nodeType":"VariableDeclaration","scope":392,"src":"3919:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":370,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":373,"mutability":"mutable","name":"value","nameLocation":"3944:5:4","nodeType":"VariableDeclaration","scope":392,"src":"3936:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":372,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3918:32:4"},"returnParameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":392,"src":"3975:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":375,"name":"bool","nodeType":"ElementaryTypeName","src":"3975:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3974:6:4"},"scope":741,"src":"3902:186:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[818],"body":{"id":423,"nodeType":"Block","src":"4773:151:4","statements":[{"assignments":[405],"declarations":[{"constant":false,"id":405,"mutability":"mutable","name":"spender","nameLocation":"4791:7:4","nodeType":"VariableDeclaration","scope":423,"src":"4783:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":404,"name":"address","nodeType":"ElementaryTypeName","src":"4783:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":408,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":406,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"4801:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4783:30:4"},{"expression":{"arguments":[{"id":410,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"4839:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":411,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":405,"src":"4845:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"4854:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":409,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":740,"src":"4823:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:37:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":414,"nodeType":"ExpressionStatement","src":"4823:37:4"},{"expression":{"arguments":[{"id":416,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":395,"src":"4880:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":417,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4886:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":418,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":399,"src":"4890:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":415,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":471,"src":"4870:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4870:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":420,"nodeType":"ExpressionStatement","src":"4870:26:4"},{"expression":{"hexValue":"74727565","id":421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4913:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":403,"id":422,"nodeType":"Return","src":"4906:11:4"}]},"documentation":{"id":393,"nodeType":"StructuredDocumentation","src":"4094:581:4","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":424,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4689:12:4","nodeType":"FunctionDefinition","parameters":{"id":400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"from","nameLocation":"4710:4:4","nodeType":"VariableDeclaration","scope":424,"src":"4702:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"4702:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":397,"mutability":"mutable","name":"to","nameLocation":"4724:2:4","nodeType":"VariableDeclaration","scope":424,"src":"4716:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":396,"name":"address","nodeType":"ElementaryTypeName","src":"4716:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":399,"mutability":"mutable","name":"value","nameLocation":"4736:5:4","nodeType":"VariableDeclaration","scope":424,"src":"4728:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":398,"name":"uint256","nodeType":"ElementaryTypeName","src":"4728:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:41:4"},"returnParameters":{"id":403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":424,"src":"4767:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":401,"name":"bool","nodeType":"ElementaryTypeName","src":"4767:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4766:6:4"},"scope":741,"src":"4680:244:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":470,"nodeType":"Block","src":"5366:231:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":434,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"5380:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5396:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5388:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":435,"name":"address","nodeType":"ElementaryTypeName","src":"5388:7:4","typeDescriptions":{}}},"id":438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5388:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5380:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":448,"nodeType":"IfStatement","src":"5376:86:4","trueBody":{"id":447,"nodeType":"Block","src":"5400:62:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5448:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5440:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":441,"name":"address","nodeType":"ElementaryTypeName","src":"5440:7:4","typeDescriptions":{}}},"id":444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5440:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":440,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":106,"src":"5421:18:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":446,"nodeType":"RevertStatement","src":"5414:37:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":449,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"5475:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5489:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5481:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":450,"name":"address","nodeType":"ElementaryTypeName","src":"5481:7:4","typeDescriptions":{}}},"id":453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5481:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5475:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":463,"nodeType":"IfStatement","src":"5471:86:4","trueBody":{"id":462,"nodeType":"Block","src":"5493:64:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5543:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5535:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":456,"name":"address","nodeType":"ElementaryTypeName","src":"5535:7:4","typeDescriptions":{}}},"id":459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":455,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"5514:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":461,"nodeType":"RevertStatement","src":"5507:39:4"}]}},{"expression":{"arguments":[{"id":465,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"5574:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":466,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"5580:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":467,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"5584:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":464,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"5566:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5566:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":469,"nodeType":"ExpressionStatement","src":"5566:24:4"}]},"documentation":{"id":425,"nodeType":"StructuredDocumentation","src":"4930:362:4","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":471,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5306:9:4","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"from","nameLocation":"5324:4:4","nodeType":"VariableDeclaration","scope":471,"src":"5316:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":426,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"to","nameLocation":"5338:2:4","nodeType":"VariableDeclaration","scope":471,"src":"5330:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":428,"name":"address","nodeType":"ElementaryTypeName","src":"5330:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"value","nameLocation":"5350:5:4","nodeType":"VariableDeclaration","scope":471,"src":"5342:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"5342:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5315:41:4"},"returnParameters":{"id":433,"nodeType":"ParameterList","parameters":[],"src":"5366:0:4"},"scope":741,"src":"5297:300:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":547,"nodeType":"Block","src":"5987:1032:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":481,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"6001:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6017:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6009:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":482,"name":"address","nodeType":"ElementaryTypeName","src":"6009:7:4","typeDescriptions":{}}},"id":485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6009:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6001:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":518,"nodeType":"Block","src":"6175:362:4","statements":[{"assignments":[493],"declarations":[{"constant":false,"id":493,"mutability":"mutable","name":"fromBalance","nameLocation":"6197:11:4","nodeType":"VariableDeclaration","scope":518,"src":"6189:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":492,"name":"uint256","nodeType":"ElementaryTypeName","src":"6189:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":497,"initialValue":{"baseExpression":{"id":494,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"6211:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":496,"indexExpression":{"id":495,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"6221:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6189:37:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":498,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":493,"src":"6244:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6258:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6244:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":508,"nodeType":"IfStatement","src":"6240:115:4","trueBody":{"id":507,"nodeType":"Block","src":"6265:90:4","statements":[{"errorCall":{"arguments":[{"id":502,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"6315:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":503,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":493,"src":"6321:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":504,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6334:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":501,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":101,"src":"6290:24:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6290:50:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":506,"nodeType":"RevertStatement","src":"6283:57:4"}]}},{"id":517,"nodeType":"UncheckedBlock","src":"6368:159:4","statements":[{"expression":{"id":515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":509,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"6475:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":511,"indexExpression":{"id":510,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"6485:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":512,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":493,"src":"6493:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":513,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6507:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":516,"nodeType":"ExpressionStatement","src":"6475:37:4"}]}]},"id":519,"nodeType":"IfStatement","src":"5997:540:4","trueBody":{"id":491,"nodeType":"Block","src":"6021:148:4","statements":[{"expression":{"id":489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":487,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"6137:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6153:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6137:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":490,"nodeType":"ExpressionStatement","src":"6137:21:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":520,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"6551:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6565:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6557:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":521,"name":"address","nodeType":"ElementaryTypeName","src":"6557:7:4","typeDescriptions":{}}},"id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6557:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6551:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":539,"nodeType":"Block","src":"6766:206:4","statements":[{"id":538,"nodeType":"UncheckedBlock","src":"6780:182:4","statements":[{"expression":{"id":536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":532,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"6925:9:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":534,"indexExpression":{"id":533,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"6935:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6925:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6942:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6925:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":537,"nodeType":"ExpressionStatement","src":"6925:22:4"}]}]},"id":540,"nodeType":"IfStatement","src":"6547:425:4","trueBody":{"id":531,"nodeType":"Block","src":"6569:191:4","statements":[{"id":530,"nodeType":"UncheckedBlock","src":"6583:167:4","statements":[{"expression":{"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":526,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"6714:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"6730:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6714:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":529,"nodeType":"ExpressionStatement","src":"6714:21:4"}]}]}},{"eventCall":{"arguments":[{"id":542,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"6996:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":543,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"7002:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"7006:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":541,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"6987:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6987:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":546,"nodeType":"EmitStatement","src":"6982:30:4"}]},"documentation":{"id":472,"nodeType":"StructuredDocumentation","src":"5603:304:4","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":548,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5921:7:4","nodeType":"FunctionDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":474,"mutability":"mutable","name":"from","nameLocation":"5937:4:4","nodeType":"VariableDeclaration","scope":548,"src":"5929:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":473,"name":"address","nodeType":"ElementaryTypeName","src":"5929:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":476,"mutability":"mutable","name":"to","nameLocation":"5951:2:4","nodeType":"VariableDeclaration","scope":548,"src":"5943:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":475,"name":"address","nodeType":"ElementaryTypeName","src":"5943:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":478,"mutability":"mutable","name":"value","nameLocation":"5963:5:4","nodeType":"VariableDeclaration","scope":548,"src":"5955:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":477,"name":"uint256","nodeType":"ElementaryTypeName","src":"5955:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5928:41:4"},"returnParameters":{"id":480,"nodeType":"ParameterList","parameters":[],"src":"5987:0:4"},"scope":741,"src":"5912:1107:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":580,"nodeType":"Block","src":"7418:152:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":556,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"7432:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7451:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7443:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":557,"name":"address","nodeType":"ElementaryTypeName","src":"7443:7:4","typeDescriptions":{}}},"id":560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7443:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7432:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":570,"nodeType":"IfStatement","src":"7428:91:4","trueBody":{"id":569,"nodeType":"Block","src":"7455:64:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7505:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7497:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"7497:7:4","typeDescriptions":{}}},"id":566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7497:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":562,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"7476:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7476:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":568,"nodeType":"RevertStatement","src":"7469:39:4"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7544:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7536:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":572,"name":"address","nodeType":"ElementaryTypeName","src":"7536:7:4","typeDescriptions":{}}},"id":575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":576,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"7548:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"7557:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":571,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"7528:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7528:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":579,"nodeType":"ExpressionStatement","src":"7528:35:4"}]},"documentation":{"id":549,"nodeType":"StructuredDocumentation","src":"7025:332:4","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":581,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7371:5:4","nodeType":"FunctionDefinition","parameters":{"id":554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":551,"mutability":"mutable","name":"account","nameLocation":"7385:7:4","nodeType":"VariableDeclaration","scope":581,"src":"7377:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"7377:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":553,"mutability":"mutable","name":"value","nameLocation":"7402:5:4","nodeType":"VariableDeclaration","scope":581,"src":"7394:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":552,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7376:32:4"},"returnParameters":{"id":555,"nodeType":"ParameterList","parameters":[],"src":"7418:0:4"},"scope":741,"src":"7362:208:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":613,"nodeType":"Block","src":"7944:150:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":589,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"7958:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7969:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"7969:7:4","typeDescriptions":{}}},"id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7969:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7958:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":603,"nodeType":"IfStatement","src":"7954:89:4","trueBody":{"id":602,"nodeType":"Block","src":"7981:62:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8021:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":596,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:4","typeDescriptions":{}}},"id":599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8021:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":595,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":106,"src":"8002:18:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8002:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":601,"nodeType":"RevertStatement","src":"7995:37:4"}]}},{"expression":{"arguments":[{"id":605,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"8060:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8077:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8069:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"8069:7:4","typeDescriptions":{}}},"id":609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8069:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"8081:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":604,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"8052:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":612,"nodeType":"ExpressionStatement","src":"8052:35:4"}]},"documentation":{"id":582,"nodeType":"StructuredDocumentation","src":"7576:307:4","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":614,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7897:5:4","nodeType":"FunctionDefinition","parameters":{"id":587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":584,"mutability":"mutable","name":"account","nameLocation":"7911:7:4","nodeType":"VariableDeclaration","scope":614,"src":"7903:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":583,"name":"address","nodeType":"ElementaryTypeName","src":"7903:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":586,"mutability":"mutable","name":"value","nameLocation":"7928:5:4","nodeType":"VariableDeclaration","scope":614,"src":"7920:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":585,"name":"uint256","nodeType":"ElementaryTypeName","src":"7920:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7902:32:4"},"returnParameters":{"id":588,"nodeType":"ParameterList","parameters":[],"src":"7944:0:4"},"scope":741,"src":"7888:206:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":631,"nodeType":"Block","src":"8704:54:4","statements":[{"expression":{"arguments":[{"id":625,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"8723:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":626,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"8730:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":621,"src":"8739:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8746:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":624,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[632,692],"referencedDeclaration":692,"src":"8714:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8714:37:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":630,"nodeType":"ExpressionStatement","src":"8714:37:4"}]},"documentation":{"id":615,"nodeType":"StructuredDocumentation","src":"8100:525:4","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":632,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8639:8:4","nodeType":"FunctionDefinition","parameters":{"id":622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"owner","nameLocation":"8656:5:4","nodeType":"VariableDeclaration","scope":632,"src":"8648:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":616,"name":"address","nodeType":"ElementaryTypeName","src":"8648:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":619,"mutability":"mutable","name":"spender","nameLocation":"8671:7:4","nodeType":"VariableDeclaration","scope":632,"src":"8663:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"8663:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":621,"mutability":"mutable","name":"value","nameLocation":"8688:5:4","nodeType":"VariableDeclaration","scope":632,"src":"8680:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":620,"name":"uint256","nodeType":"ElementaryTypeName","src":"8680:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8647:47:4"},"returnParameters":{"id":623,"nodeType":"ParameterList","parameters":[],"src":"8704:0:4"},"scope":741,"src":"8630:128:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":691,"nodeType":"Block","src":"9705:334:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":644,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"9719:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9736:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9728:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"9728:7:4","typeDescriptions":{}}},"id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9719:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":658,"nodeType":"IfStatement","src":"9715:89:4","trueBody":{"id":657,"nodeType":"Block","src":"9740:64:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9790:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9782:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":651,"name":"address","nodeType":"ElementaryTypeName","src":"9782:7:4","typeDescriptions":{}}},"id":654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9782:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":650,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"9761:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9761:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":656,"nodeType":"RevertStatement","src":"9754:39:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":659,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"9817:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9836:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9828:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":660,"name":"address","nodeType":"ElementaryTypeName","src":"9828:7:4","typeDescriptions":{}}},"id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9828:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9817:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":673,"nodeType":"IfStatement","src":"9813:90:4","trueBody":{"id":672,"nodeType":"Block","src":"9840:63:4","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9889:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9881:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":666,"name":"address","nodeType":"ElementaryTypeName","src":"9881:7:4","typeDescriptions":{}}},"id":669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9881:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":665,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":130,"src":"9861:19:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":671,"nodeType":"RevertStatement","src":"9854:38:4"}]}},{"expression":{"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":674,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"9912:11:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":677,"indexExpression":{"id":675,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"9924:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9912:18:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":678,"indexExpression":{"id":676,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"9931:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9912:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"9942:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9912:35:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":681,"nodeType":"ExpressionStatement","src":"9912:35:4"},{"condition":{"id":682,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":641,"src":"9961:9:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":690,"nodeType":"IfStatement","src":"9957:76:4","trueBody":{"id":689,"nodeType":"Block","src":"9972:61:4","statements":[{"eventCall":{"arguments":[{"id":684,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":635,"src":"10000:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":685,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"10007:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":686,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":639,"src":"10016:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":683,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":762,"src":"9991:8:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9991:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":688,"nodeType":"EmitStatement","src":"9986:36:4"}]}}]},"documentation":{"id":633,"nodeType":"StructuredDocumentation","src":"8764:838:4","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation sets the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the `transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":692,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9616:8:4","nodeType":"FunctionDefinition","parameters":{"id":642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":635,"mutability":"mutable","name":"owner","nameLocation":"9633:5:4","nodeType":"VariableDeclaration","scope":692,"src":"9625:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":634,"name":"address","nodeType":"ElementaryTypeName","src":"9625:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":637,"mutability":"mutable","name":"spender","nameLocation":"9648:7:4","nodeType":"VariableDeclaration","scope":692,"src":"9640:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":636,"name":"address","nodeType":"ElementaryTypeName","src":"9640:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":639,"mutability":"mutable","name":"value","nameLocation":"9665:5:4","nodeType":"VariableDeclaration","scope":692,"src":"9657:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":638,"name":"uint256","nodeType":"ElementaryTypeName","src":"9657:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":641,"mutability":"mutable","name":"emitEvent","nameLocation":"9677:9:4","nodeType":"VariableDeclaration","scope":692,"src":"9672:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":640,"name":"bool","nodeType":"ElementaryTypeName","src":"9672:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9624:63:4"},"returnParameters":{"id":643,"nodeType":"ParameterList","parameters":[],"src":"9705:0:4"},"scope":741,"src":"9607:432:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":739,"nodeType":"Block","src":"10410:387:4","statements":[{"assignments":[703],"declarations":[{"constant":false,"id":703,"mutability":"mutable","name":"currentAllowance","nameLocation":"10428:16:4","nodeType":"VariableDeclaration","scope":739,"src":"10420:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":702,"name":"uint256","nodeType":"ElementaryTypeName","src":"10420:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":708,"initialValue":{"arguments":[{"id":705,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"10457:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":706,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"10464:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":704,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":368,"src":"10447:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10447:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10420:52:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":709,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"10486:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10510:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":711,"name":"uint256","nodeType":"ElementaryTypeName","src":"10510:7:4","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":710,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10505:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10505:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10519:3:4","memberName":"max","nodeType":"MemberAccess","src":"10505:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10486:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":738,"nodeType":"IfStatement","src":"10482:309:4","trueBody":{"id":737,"nodeType":"Block","src":"10524:267:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":716,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"10542:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"10561:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10542:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":726,"nodeType":"IfStatement","src":"10538:130:4","trueBody":{"id":725,"nodeType":"Block","src":"10568:100:4","statements":[{"errorCall":{"arguments":[{"id":720,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"10620:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":721,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"10629:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"10647:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":719,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"10593:26:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10593:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":724,"nodeType":"RevertStatement","src":"10586:67:4"}]}},{"id":736,"nodeType":"UncheckedBlock","src":"10681:100:4","statements":[{"expression":{"arguments":[{"id":728,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"10718:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":729,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"10725:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":730,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"10734:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"10753:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10734:24:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10760:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":727,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[632,692],"referencedDeclaration":692,"src":"10709:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10709:57:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":735,"nodeType":"ExpressionStatement","src":"10709:57:4"}]}]}}]},"documentation":{"id":693,"nodeType":"StructuredDocumentation","src":"10045:271:4","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":740,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10330:15:4","nodeType":"FunctionDefinition","parameters":{"id":700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":695,"mutability":"mutable","name":"owner","nameLocation":"10354:5:4","nodeType":"VariableDeclaration","scope":740,"src":"10346:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":694,"name":"address","nodeType":"ElementaryTypeName","src":"10346:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":697,"mutability":"mutable","name":"spender","nameLocation":"10369:7:4","nodeType":"VariableDeclaration","scope":740,"src":"10361:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":696,"name":"address","nodeType":"ElementaryTypeName","src":"10361:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":699,"mutability":"mutable","name":"value","nameLocation":"10386:5:4","nodeType":"VariableDeclaration","scope":740,"src":"10378:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":698,"name":"uint256","nodeType":"ElementaryTypeName","src":"10378:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10345:47:4"},"returnParameters":{"id":701,"nodeType":"ParameterList","parameters":[],"src":"10410:0:4"},"scope":741,"src":"10321:476:4","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":742,"src":"1106:9693:4","usedErrors":[101,106,111,120,125,130],"usedEvents":[753,762]}],"src":"105:10695:4"},"id":4},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[819]},"id":820,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":743,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"106:25:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":744,"nodeType":"StructuredDocumentation","src":"133:71:5","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":819,"linearizedBaseContracts":[819],"name":"IERC20","nameLocation":"215:6:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":745,"nodeType":"StructuredDocumentation","src":"228:158:5","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":753,"name":"Transfer","nameLocation":"397:8:5","nodeType":"EventDefinition","parameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":747,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"422:4:5","nodeType":"VariableDeclaration","scope":753,"src":"406:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":746,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":749,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"444:2:5","nodeType":"VariableDeclaration","scope":753,"src":"428:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":748,"name":"address","nodeType":"ElementaryTypeName","src":"428:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":751,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"456:5:5","nodeType":"VariableDeclaration","scope":753,"src":"448:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":750,"name":"uint256","nodeType":"ElementaryTypeName","src":"448:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"405:57:5"},"src":"391:72:5"},{"anonymous":false,"documentation":{"id":754,"nodeType":"StructuredDocumentation","src":"469:148:5","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":762,"name":"Approval","nameLocation":"628:8:5","nodeType":"EventDefinition","parameters":{"id":761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"653:5:5","nodeType":"VariableDeclaration","scope":762,"src":"637:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":755,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":758,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"676:7:5","nodeType":"VariableDeclaration","scope":762,"src":"660:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":757,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":760,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"693:5:5","nodeType":"VariableDeclaration","scope":762,"src":"685:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":759,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"636:63:5"},"src":"622:78:5"},{"documentation":{"id":763,"nodeType":"StructuredDocumentation","src":"706:65:5","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":768,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"785:11:5","nodeType":"FunctionDefinition","parameters":{"id":764,"nodeType":"ParameterList","parameters":[],"src":"796:2:5"},"returnParameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":768,"src":"822:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":765,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:9:5"},"scope":819,"src":"776:55:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":769,"nodeType":"StructuredDocumentation","src":"837:71:5","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":776,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"922:9:5","nodeType":"FunctionDefinition","parameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"account","nameLocation":"940:7:5","nodeType":"VariableDeclaration","scope":776,"src":"932:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":770,"name":"address","nodeType":"ElementaryTypeName","src":"932:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"931:17:5"},"returnParameters":{"id":775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":774,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":776,"src":"972:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":773,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"971:9:5"},"scope":819,"src":"913:68:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":777,"nodeType":"StructuredDocumentation","src":"987:213:5","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":786,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1214:8:5","nodeType":"FunctionDefinition","parameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"to","nameLocation":"1231:2:5","nodeType":"VariableDeclaration","scope":786,"src":"1223:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":778,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":781,"mutability":"mutable","name":"value","nameLocation":"1243:5:5","nodeType":"VariableDeclaration","scope":786,"src":"1235:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":780,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:27:5"},"returnParameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":786,"src":"1268:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":783,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1267:6:5"},"scope":819,"src":"1205:69:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":787,"nodeType":"StructuredDocumentation","src":"1280:264:5","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":796,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1558:9:5","nodeType":"FunctionDefinition","parameters":{"id":792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":789,"mutability":"mutable","name":"owner","nameLocation":"1576:5:5","nodeType":"VariableDeclaration","scope":796,"src":"1568:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":788,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":791,"mutability":"mutable","name":"spender","nameLocation":"1591:7:5","nodeType":"VariableDeclaration","scope":796,"src":"1583:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":790,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:32:5"},"returnParameters":{"id":795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":796,"src":"1623:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":793,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1622:9:5"},"scope":819,"src":"1549:83:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":797,"nodeType":"StructuredDocumentation","src":"1638:667:5","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":806,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2319:7:5","nodeType":"FunctionDefinition","parameters":{"id":802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"spender","nameLocation":"2335:7:5","nodeType":"VariableDeclaration","scope":806,"src":"2327:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":798,"name":"address","nodeType":"ElementaryTypeName","src":"2327:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":801,"mutability":"mutable","name":"value","nameLocation":"2352:5:5","nodeType":"VariableDeclaration","scope":806,"src":"2344:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2344:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:32:5"},"returnParameters":{"id":805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":806,"src":"2377:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":803,"name":"bool","nodeType":"ElementaryTypeName","src":"2377:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2376:6:5"},"scope":819,"src":"2310:73:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":807,"nodeType":"StructuredDocumentation","src":"2389:297:5","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":818,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2700:12:5","nodeType":"FunctionDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"from","nameLocation":"2721:4:5","nodeType":"VariableDeclaration","scope":818,"src":"2713:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":808,"name":"address","nodeType":"ElementaryTypeName","src":"2713:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"to","nameLocation":"2735:2:5","nodeType":"VariableDeclaration","scope":818,"src":"2727:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":810,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":813,"mutability":"mutable","name":"value","nameLocation":"2747:5:5","nodeType":"VariableDeclaration","scope":818,"src":"2739:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":812,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2712:41:5"},"returnParameters":{"id":817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":818,"src":"2772:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":815,"name":"bool","nodeType":"ElementaryTypeName","src":"2772:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2771:6:5"},"scope":819,"src":"2691:87:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":820,"src":"205:2575:5","usedErrors":[],"usedEvents":[753,762]}],"src":"106:2675:5"},"id":5},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[819],"IERC20Metadata":[845]},"id":846,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":821,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"125:24:6"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":823,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":846,"sourceUnit":820,"src":"151:37:6","symbolAliases":[{"foreign":{"id":822,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"159:6:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":825,"name":"IERC20","nameLocations":["306:6:6"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"306:6:6"},"id":826,"nodeType":"InheritanceSpecifier","src":"306:6:6"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":824,"nodeType":"StructuredDocumentation","src":"190:87:6","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":845,"linearizedBaseContracts":[845,819],"name":"IERC20Metadata","nameLocation":"288:14:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"319:54:6","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":832,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:6","nodeType":"FunctionDefinition","parameters":{"id":828,"nodeType":"ParameterList","parameters":[],"src":"391:2:6"},"returnParameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":830,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":832,"src":"417:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":829,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:6"},"scope":845,"src":"378:54:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":833,"nodeType":"StructuredDocumentation","src":"438:56:6","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":838,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:6","nodeType":"FunctionDefinition","parameters":{"id":834,"nodeType":"ParameterList","parameters":[],"src":"514:2:6"},"returnParameters":{"id":837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":838,"src":"540:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":835,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:6"},"scope":845,"src":"499:56:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":839,"nodeType":"StructuredDocumentation","src":"561:65:6","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":844,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:6","nodeType":"FunctionDefinition","parameters":{"id":840,"nodeType":"ParameterList","parameters":[],"src":"648:2:6"},"returnParameters":{"id":843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":844,"src":"674:5:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":841,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:6"},"scope":845,"src":"631:50:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":846,"src":"278:405:6","usedErrors":[],"usedEvents":[753,762]}],"src":"125:559:6"},"id":6},"npm/@openzeppelin/contracts@5.5.0/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"IERC1363":[81],"IERC20":[819],"SafeERC20":[1300]},"id":1301,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":847,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:7"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1301,"sourceUnit":820,"src":"141:37:7","symbolAliases":[{"foreign":{"id":848,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"149:6:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","id":851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1301,"sourceUnit":82,"src":"179:58:7","symbolAliases":[{"foreign":{"id":850,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"187:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":852,"nodeType":"StructuredDocumentation","src":"239:458:7","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":1300,"linearizedBaseContracts":[1300],"name":"SafeERC20","nameLocation":"706:9:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":853,"nodeType":"StructuredDocumentation","src":"722:65:7","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","id":857,"name":"SafeERC20FailedOperation","nameLocation":"798:24:7","nodeType":"ErrorDefinition","parameters":{"id":856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":855,"mutability":"mutable","name":"token","nameLocation":"831:5:7","nodeType":"VariableDeclaration","scope":857,"src":"823:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":854,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:7"},"src":"792:46:7"},{"documentation":{"id":858,"nodeType":"StructuredDocumentation","src":"844:71:7","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":866,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:7","nodeType":"ErrorDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":860,"mutability":"mutable","name":"spender","nameLocation":"967:7:7","nodeType":"VariableDeclaration","scope":866,"src":"959:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":859,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":862,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:7","nodeType":"VariableDeclaration","scope":866,"src":"976:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":861,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":864,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:7","nodeType":"VariableDeclaration","scope":866,"src":"1002:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":863,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:7"},"src":"920:109:7"},{"body":{"id":893,"nodeType":"Block","src":"1291:132:7","statements":[{"condition":{"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1305:38:7","subExpression":{"arguments":[{"id":878,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"1320:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":879,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"1327:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":880,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"1331:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1338:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":877,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"1306:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1306:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":892,"nodeType":"IfStatement","src":"1301:116:7","trueBody":{"id":891,"nodeType":"Block","src":"1345:72:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":887,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"1399:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}],"id":886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1391:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":885,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:7","typeDescriptions":{}}},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1391:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":884,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"1366:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1366:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":890,"nodeType":"RevertStatement","src":"1359:47:7"}]}}]},"documentation":{"id":867,"nodeType":"StructuredDocumentation","src":"1035:179:7","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":894,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:7","nodeType":"FunctionDefinition","parameters":{"id":875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"token","nameLocation":"1248:5:7","nodeType":"VariableDeclaration","scope":894,"src":"1241:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":869,"nodeType":"UserDefinedTypeName","pathNode":{"id":868,"name":"IERC20","nameLocations":["1241:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"1241:6:7"},"referencedDeclaration":819,"src":"1241:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":872,"mutability":"mutable","name":"to","nameLocation":"1263:2:7","nodeType":"VariableDeclaration","scope":894,"src":"1255:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":871,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":874,"mutability":"mutable","name":"value","nameLocation":"1275:5:7","nodeType":"VariableDeclaration","scope":894,"src":"1267:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":873,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:7"},"returnParameters":{"id":876,"nodeType":"ParameterList","parameters":[],"src":"1291:0:7"},"scope":1300,"src":"1219:204:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":924,"nodeType":"Block","src":"1752:142:7","statements":[{"condition":{"id":914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1766:48:7","subExpression":{"arguments":[{"id":908,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"1785:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":909,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"1792:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":910,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"1798:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":911,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"1802:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1809:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":907,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1276,"src":"1767:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,address,uint256,bool) returns (bool)"}},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1767:47:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":923,"nodeType":"IfStatement","src":"1762:126:7","trueBody":{"id":922,"nodeType":"Block","src":"1816:72:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":918,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"1870:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}],"id":917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":916,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:7","typeDescriptions":{}}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":915,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"1837:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":921,"nodeType":"RevertStatement","src":"1830:47:7"}]}}]},"documentation":{"id":895,"nodeType":"StructuredDocumentation","src":"1429:228:7","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":925,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1671:16:7","nodeType":"FunctionDefinition","parameters":{"id":905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"token","nameLocation":"1695:5:7","nodeType":"VariableDeclaration","scope":925,"src":"1688:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":897,"nodeType":"UserDefinedTypeName","pathNode":{"id":896,"name":"IERC20","nameLocations":["1688:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"1688:6:7"},"referencedDeclaration":819,"src":"1688:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":900,"mutability":"mutable","name":"from","nameLocation":"1710:4:7","nodeType":"VariableDeclaration","scope":925,"src":"1702:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":899,"name":"address","nodeType":"ElementaryTypeName","src":"1702:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"to","nameLocation":"1724:2:7","nodeType":"VariableDeclaration","scope":925,"src":"1716:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":901,"name":"address","nodeType":"ElementaryTypeName","src":"1716:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"value","nameLocation":"1736:5:7","nodeType":"VariableDeclaration","scope":925,"src":"1728:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1728:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1687:55:7"},"returnParameters":{"id":906,"nodeType":"ParameterList","parameters":[],"src":"1752:0:7"},"scope":1300,"src":"1662:232:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":945,"nodeType":"Block","src":"2121:62:7","statements":[{"expression":{"arguments":[{"id":939,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"2152:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":940,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"2159:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"2163:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2170:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":938,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"2138:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":937,"id":944,"nodeType":"Return","src":"2131:45:7"}]},"documentation":{"id":926,"nodeType":"StructuredDocumentation","src":"1900:126:7","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"id":946,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"2040:15:7","nodeType":"FunctionDefinition","parameters":{"id":934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":929,"mutability":"mutable","name":"token","nameLocation":"2063:5:7","nodeType":"VariableDeclaration","scope":946,"src":"2056:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":928,"nodeType":"UserDefinedTypeName","pathNode":{"id":927,"name":"IERC20","nameLocations":["2056:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"2056:6:7"},"referencedDeclaration":819,"src":"2056:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":931,"mutability":"mutable","name":"to","nameLocation":"2078:2:7","nodeType":"VariableDeclaration","scope":946,"src":"2070:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":930,"name":"address","nodeType":"ElementaryTypeName","src":"2070:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":933,"mutability":"mutable","name":"value","nameLocation":"2090:5:7","nodeType":"VariableDeclaration","scope":946,"src":"2082:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":932,"name":"uint256","nodeType":"ElementaryTypeName","src":"2082:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2055:41:7"},"returnParameters":{"id":937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":936,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":946,"src":"2115:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":935,"name":"bool","nodeType":"ElementaryTypeName","src":"2115:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2114:6:7"},"scope":1300,"src":"2031:152:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":969,"nodeType":"Block","src":"2432:72:7","statements":[{"expression":{"arguments":[{"id":962,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"2467:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":963,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"2474:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":964,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"2480:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":965,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"2484:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2491:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":961,"name":"_safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1276,"src":"2449:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,address,uint256,bool) returns (bool)"}},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2449:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":960,"id":968,"nodeType":"Return","src":"2442:55:7"}]},"documentation":{"id":947,"nodeType":"StructuredDocumentation","src":"2189:130:7","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"id":970,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2333:19:7","nodeType":"FunctionDefinition","parameters":{"id":957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":950,"mutability":"mutable","name":"token","nameLocation":"2360:5:7","nodeType":"VariableDeclaration","scope":970,"src":"2353:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":949,"nodeType":"UserDefinedTypeName","pathNode":{"id":948,"name":"IERC20","nameLocations":["2353:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"2353:6:7"},"referencedDeclaration":819,"src":"2353:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":952,"mutability":"mutable","name":"from","nameLocation":"2375:4:7","nodeType":"VariableDeclaration","scope":970,"src":"2367:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":951,"name":"address","nodeType":"ElementaryTypeName","src":"2367:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":954,"mutability":"mutable","name":"to","nameLocation":"2389:2:7","nodeType":"VariableDeclaration","scope":970,"src":"2381:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":953,"name":"address","nodeType":"ElementaryTypeName","src":"2381:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":956,"mutability":"mutable","name":"value","nameLocation":"2401:5:7","nodeType":"VariableDeclaration","scope":970,"src":"2393:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":955,"name":"uint256","nodeType":"ElementaryTypeName","src":"2393:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2352:55:7"},"returnParameters":{"id":960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":970,"src":"2426:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":958,"name":"bool","nodeType":"ElementaryTypeName","src":"2426:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2425:6:7"},"scope":1300,"src":"2324:180:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1000,"nodeType":"Block","src":"3246:139:7","statements":[{"assignments":[982],"declarations":[{"constant":false,"id":982,"mutability":"mutable","name":"oldAllowance","nameLocation":"3264:12:7","nodeType":"VariableDeclaration","scope":1000,"src":"3256:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":981,"name":"uint256","nodeType":"ElementaryTypeName","src":"3256:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":991,"initialValue":{"arguments":[{"arguments":[{"id":987,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3303:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$1300","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$1300","typeString":"library SafeERC20"}],"id":986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3295:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":985,"name":"address","nodeType":"ElementaryTypeName","src":"3295:7:7","typeDescriptions":{}}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3295:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":989,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3310:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":983,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"3279:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3285:9:7","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":796,"src":"3279:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3256:62:7"},{"expression":{"arguments":[{"id":993,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"3341:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":994,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3348:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":995,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"3357:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"3372:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3357:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":992,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1095,"src":"3328:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3328:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":999,"nodeType":"ExpressionStatement","src":"3328:50:7"}]},"documentation":{"id":971,"nodeType":"StructuredDocumentation","src":"2510:645:7","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":1001,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3169:21:7","nodeType":"FunctionDefinition","parameters":{"id":979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":974,"mutability":"mutable","name":"token","nameLocation":"3198:5:7","nodeType":"VariableDeclaration","scope":1001,"src":"3191:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":973,"nodeType":"UserDefinedTypeName","pathNode":{"id":972,"name":"IERC20","nameLocations":["3191:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"3191:6:7"},"referencedDeclaration":819,"src":"3191:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":976,"mutability":"mutable","name":"spender","nameLocation":"3213:7:7","nodeType":"VariableDeclaration","scope":1001,"src":"3205:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":975,"name":"address","nodeType":"ElementaryTypeName","src":"3205:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":978,"mutability":"mutable","name":"value","nameLocation":"3230:5:7","nodeType":"VariableDeclaration","scope":1001,"src":"3222:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":977,"name":"uint256","nodeType":"ElementaryTypeName","src":"3222:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3190:46:7"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[],"src":"3246:0:7"},"scope":1300,"src":"3160:225:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1043,"nodeType":"Block","src":"4151:370:7","statements":[{"id":1042,"nodeType":"UncheckedBlock","src":"4161:354:7","statements":[{"assignments":[1013],"declarations":[{"constant":false,"id":1013,"mutability":"mutable","name":"currentAllowance","nameLocation":"4193:16:7","nodeType":"VariableDeclaration","scope":1042,"src":"4185:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1012,"name":"uint256","nodeType":"ElementaryTypeName","src":"4185:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1022,"initialValue":{"arguments":[{"arguments":[{"id":1018,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4236:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$1300","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$1300","typeString":"library SafeERC20"}],"id":1017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4228:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"4228:7:7","typeDescriptions":{}}},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4228:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1020,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4243:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1014,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1005,"src":"4212:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4218:9:7","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":796,"src":"4212:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4212:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4185:66:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1023,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"4269:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1024,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1009,"src":"4288:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4269:36:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1033,"nodeType":"IfStatement","src":"4265:160:7","trueBody":{"id":1032,"nodeType":"Block","src":"4307:118:7","statements":[{"errorCall":{"arguments":[{"id":1027,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4365:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1028,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"4374:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1029,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1009,"src":"4392:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1026,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"4332:32:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4332:78:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1031,"nodeType":"RevertStatement","src":"4325:85:7"}]}},{"expression":{"arguments":[{"id":1035,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1005,"src":"4451:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":1036,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4458:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1037,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1013,"src":"4467:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1038,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1009,"src":"4486:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:36:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1034,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1095,"src":"4438:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1041,"nodeType":"ExpressionStatement","src":"4438:66:7"}]}]},"documentation":{"id":1002,"nodeType":"StructuredDocumentation","src":"3391:657:7","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":1044,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4062:21:7","nodeType":"FunctionDefinition","parameters":{"id":1010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1005,"mutability":"mutable","name":"token","nameLocation":"4091:5:7","nodeType":"VariableDeclaration","scope":1044,"src":"4084:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":1004,"nodeType":"UserDefinedTypeName","pathNode":{"id":1003,"name":"IERC20","nameLocations":["4084:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"4084:6:7"},"referencedDeclaration":819,"src":"4084:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1007,"mutability":"mutable","name":"spender","nameLocation":"4106:7:7","nodeType":"VariableDeclaration","scope":1044,"src":"4098:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1006,"name":"address","nodeType":"ElementaryTypeName","src":"4098:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1009,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4123:17:7","nodeType":"VariableDeclaration","scope":1044,"src":"4115:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1008,"name":"uint256","nodeType":"ElementaryTypeName","src":"4115:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:58:7"},"returnParameters":{"id":1011,"nodeType":"ParameterList","parameters":[],"src":"4151:0:7"},"scope":1300,"src":"4053:468:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1094,"nodeType":"Block","src":"5175:290:7","statements":[{"condition":{"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5189:43:7","subExpression":{"arguments":[{"id":1056,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"5203:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":1057,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"5210:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1058,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"5219:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5226:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1055,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"5190:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5190:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1093,"nodeType":"IfStatement","src":"5185:274:7","trueBody":{"id":1092,"nodeType":"Block","src":"5234:225:7","statements":[{"condition":{"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5252:38:7","subExpression":{"arguments":[{"id":1063,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"5266:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":1064,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"5273:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5282:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"74727565","id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5285:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1062,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"5253:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5253:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1076,"nodeType":"IfStatement","src":"5248:91:7","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":1072,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"5332:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}],"id":1071,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5324:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1070,"name":"address","nodeType":"ElementaryTypeName","src":"5324:7:7","typeDescriptions":{}}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5324:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1069,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"5299:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5299:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1075,"nodeType":"RevertStatement","src":"5292:47:7"}},{"condition":{"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5357:42:7","subExpression":{"arguments":[{"id":1078,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"5371:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},{"id":1079,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1050,"src":"5378:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1052,"src":"5387:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":1081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5394:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1077,"name":"_safeApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"5358:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IERC20,address,uint256,bool) returns (bool)"}},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5358:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1091,"nodeType":"IfStatement","src":"5353:95:7","trueBody":{"errorCall":{"arguments":[{"arguments":[{"id":1087,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"5441:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}],"id":1086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5433:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1085,"name":"address","nodeType":"ElementaryTypeName","src":"5433:7:7","typeDescriptions":{}}},"id":1088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5433:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1084,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"5408:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1090,"nodeType":"RevertStatement","src":"5401:47:7"}}]}}]},"documentation":{"id":1045,"nodeType":"StructuredDocumentation","src":"4527:566:7","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"id":1095,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5107:12:7","nodeType":"FunctionDefinition","parameters":{"id":1053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1048,"mutability":"mutable","name":"token","nameLocation":"5127:5:7","nodeType":"VariableDeclaration","scope":1095,"src":"5120:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":1047,"nodeType":"UserDefinedTypeName","pathNode":{"id":1046,"name":"IERC20","nameLocations":["5120:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"5120:6:7"},"referencedDeclaration":819,"src":"5120:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1050,"mutability":"mutable","name":"spender","nameLocation":"5142:7:7","nodeType":"VariableDeclaration","scope":1095,"src":"5134:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1049,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1052,"mutability":"mutable","name":"value","nameLocation":"5159:5:7","nodeType":"VariableDeclaration","scope":1095,"src":"5151:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1051,"name":"uint256","nodeType":"ElementaryTypeName","src":"5151:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5119:46:7"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"5175:0:7"},"scope":1300,"src":"5098:367:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1137,"nodeType":"Block","src":"5914:219:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1108,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"5928:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5931:4:7","memberName":"code","nodeType":"MemberAccess","src":"5928:7:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5936:6:7","memberName":"length","nodeType":"MemberAccess","src":"5928:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5946:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5928:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6014:39:7","subExpression":{"arguments":[{"id":1122,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"6037:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1123,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"6041:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1124,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"6048:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1120,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"6015:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:15:7","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":32,"src":"6015:21:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1135,"nodeType":"IfStatement","src":"6010:117:7","trueBody":{"id":1134,"nodeType":"Block","src":"6055:72:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1130,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"6109:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}],"id":1129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6101:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1128,"name":"address","nodeType":"ElementaryTypeName","src":"6101:7:7","typeDescriptions":{}}},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6101:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1127,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"6076:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6076:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1133,"nodeType":"RevertStatement","src":"6069:47:7"}]}},"id":1136,"nodeType":"IfStatement","src":"5924:203:7","trueBody":{"id":1119,"nodeType":"Block","src":"5949:55:7","statements":[{"expression":{"arguments":[{"id":1114,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"5976:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},{"id":1115,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"5983:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"5987:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1113,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"5963:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5963:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1118,"nodeType":"ExpressionStatement","src":"5963:30:7"}]}}]},"documentation":{"id":1096,"nodeType":"StructuredDocumentation","src":"5471:335:7","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":1138,"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5820:22:7","nodeType":"FunctionDefinition","parameters":{"id":1106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1099,"mutability":"mutable","name":"token","nameLocation":"5852:5:7","nodeType":"VariableDeclaration","scope":1138,"src":"5843:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"},"typeName":{"id":1098,"nodeType":"UserDefinedTypeName","pathNode":{"id":1097,"name":"IERC1363","nameLocations":["5843:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":81,"src":"5843:8:7"},"referencedDeclaration":81,"src":"5843:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":1101,"mutability":"mutable","name":"to","nameLocation":"5867:2:7","nodeType":"VariableDeclaration","scope":1138,"src":"5859:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1100,"name":"address","nodeType":"ElementaryTypeName","src":"5859:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"value","nameLocation":"5879:5:7","nodeType":"VariableDeclaration","scope":1138,"src":"5871:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"5871:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1105,"mutability":"mutable","name":"data","nameLocation":"5899:4:7","nodeType":"VariableDeclaration","scope":1138,"src":"5886:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1104,"name":"bytes","nodeType":"ElementaryTypeName","src":"5886:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5842:62:7"},"returnParameters":{"id":1107,"nodeType":"ParameterList","parameters":[],"src":"5914:0:7"},"scope":1300,"src":"5811:322:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1184,"nodeType":"Block","src":"6654:239:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1153,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"6668:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:4:7","memberName":"code","nodeType":"MemberAccess","src":"6668:7:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6676:6:7","memberName":"length","nodeType":"MemberAccess","src":"6668:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6686:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6668:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6764:49:7","subExpression":{"arguments":[{"id":1168,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"6791:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1169,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"6797:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1170,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"6801:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1171,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1150,"src":"6808:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1166,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6765:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6771:19:7","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":58,"src":"6765:25:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6765:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1182,"nodeType":"IfStatement","src":"6760:127:7","trueBody":{"id":1181,"nodeType":"Block","src":"6815:72:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1177,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6869:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}],"id":1176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6861:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1175,"name":"address","nodeType":"ElementaryTypeName","src":"6861:7:7","typeDescriptions":{}}},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6861:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1174,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"6836:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6836:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1180,"nodeType":"RevertStatement","src":"6829:47:7"}]}},"id":1183,"nodeType":"IfStatement","src":"6664:223:7","trueBody":{"id":1165,"nodeType":"Block","src":"6689:65:7","statements":[{"expression":{"arguments":[{"id":1159,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"6720:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},{"id":1160,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"6727:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1161,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"6733:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1162,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"6737:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1158,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"6703:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6703:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1164,"nodeType":"ExpressionStatement","src":"6703:40:7"}]}}]},"documentation":{"id":1139,"nodeType":"StructuredDocumentation","src":"6139:343:7","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that relies on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":1185,"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6496:26:7","nodeType":"FunctionDefinition","parameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"mutability":"mutable","name":"token","nameLocation":"6541:5:7","nodeType":"VariableDeclaration","scope":1185,"src":"6532:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"},"typeName":{"id":1141,"nodeType":"UserDefinedTypeName","pathNode":{"id":1140,"name":"IERC1363","nameLocations":["6532:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":81,"src":"6532:8:7"},"referencedDeclaration":81,"src":"6532:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":1144,"mutability":"mutable","name":"from","nameLocation":"6564:4:7","nodeType":"VariableDeclaration","scope":1185,"src":"6556:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1143,"name":"address","nodeType":"ElementaryTypeName","src":"6556:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1146,"mutability":"mutable","name":"to","nameLocation":"6586:2:7","nodeType":"VariableDeclaration","scope":1185,"src":"6578:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1145,"name":"address","nodeType":"ElementaryTypeName","src":"6578:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1148,"mutability":"mutable","name":"value","nameLocation":"6606:5:7","nodeType":"VariableDeclaration","scope":1185,"src":"6598:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1147,"name":"uint256","nodeType":"ElementaryTypeName","src":"6598:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1150,"mutability":"mutable","name":"data","nameLocation":"6634:4:7","nodeType":"VariableDeclaration","scope":1185,"src":"6621:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"6621:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6522:122:7"},"returnParameters":{"id":1152,"nodeType":"ParameterList","parameters":[],"src":"6654:0:7"},"scope":1300,"src":"6487:406:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1227,"nodeType":"Block","src":"7661:218:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1198,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"7675:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7678:4:7","memberName":"code","nodeType":"MemberAccess","src":"7675:7:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7683:6:7","memberName":"length","nodeType":"MemberAccess","src":"7675:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7693:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7675:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7761:38:7","subExpression":{"arguments":[{"id":1212,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"7783:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1213,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"7787:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1214,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"7794:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1210,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"7762:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7768:14:7","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":80,"src":"7762:20:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7762:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1225,"nodeType":"IfStatement","src":"7757:116:7","trueBody":{"id":1224,"nodeType":"Block","src":"7801:72:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1220,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"7855:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}],"id":1219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7847:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1218,"name":"address","nodeType":"ElementaryTypeName","src":"7847:7:7","typeDescriptions":{}}},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7847:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1217,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"7822:24:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1223,"nodeType":"RevertStatement","src":"7815:47:7"}]}},"id":1226,"nodeType":"IfStatement","src":"7671:202:7","trueBody":{"id":1209,"nodeType":"Block","src":"7696:55:7","statements":[{"expression":{"arguments":[{"id":1204,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1189,"src":"7723:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},{"id":1205,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"7730:2:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1206,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"7734:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1203,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1095,"src":"7710:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7710:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1208,"nodeType":"ExpressionStatement","src":"7710:30:7"}]}}]},"documentation":{"id":1186,"nodeType":"StructuredDocumentation","src":"6899:655:7","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Oppositely, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"id":1228,"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7568:21:7","nodeType":"FunctionDefinition","parameters":{"id":1196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1189,"mutability":"mutable","name":"token","nameLocation":"7599:5:7","nodeType":"VariableDeclaration","scope":1228,"src":"7590:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"},"typeName":{"id":1188,"nodeType":"UserDefinedTypeName","pathNode":{"id":1187,"name":"IERC1363","nameLocations":["7590:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":81,"src":"7590:8:7"},"referencedDeclaration":81,"src":"7590:8:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$81","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":1191,"mutability":"mutable","name":"to","nameLocation":"7614:2:7","nodeType":"VariableDeclaration","scope":1228,"src":"7606:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1190,"name":"address","nodeType":"ElementaryTypeName","src":"7606:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1193,"mutability":"mutable","name":"value","nameLocation":"7626:5:7","nodeType":"VariableDeclaration","scope":1228,"src":"7618:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1192,"name":"uint256","nodeType":"ElementaryTypeName","src":"7618:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1195,"mutability":"mutable","name":"data","nameLocation":"7646:4:7","nodeType":"VariableDeclaration","scope":1228,"src":"7633:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1194,"name":"bytes","nodeType":"ElementaryTypeName","src":"7633:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7589:62:7"},"returnParameters":{"id":1197,"nodeType":"ParameterList","parameters":[],"src":"7661:0:7"},"scope":1300,"src":"7559:320:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1250,"nodeType":"Block","src":"8481:1136:7","statements":[{"assignments":[1244],"declarations":[{"constant":false,"id":1244,"mutability":"mutable","name":"selector","nameLocation":"8498:8:7","nodeType":"VariableDeclaration","scope":1250,"src":"8491:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1243,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8491:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":1248,"initialValue":{"expression":{"expression":{"id":1245,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"8509:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$819_$","typeString":"type(contract IERC20)"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8516:8:7","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":786,"src":"8509:15:7","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transfer(address,uint256) returns (bool)"}},"id":1247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8525:8:7","memberName":"selector","nodeType":"MemberAccess","src":"8509:24:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8491:42:7"},{"AST":{"nativeSrc":"8569:1042:7","nodeType":"YulBlock","src":"8569:1042:7","statements":[{"nativeSrc":"8583:22:7","nodeType":"YulVariableDeclaration","src":"8583:22:7","value":{"arguments":[{"kind":"number","nativeSrc":"8600:4:7","nodeType":"YulLiteral","src":"8600:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8594:5:7","nodeType":"YulIdentifier","src":"8594:5:7"},"nativeSrc":"8594:11:7","nodeType":"YulFunctionCall","src":"8594:11:7"},"variables":[{"name":"fmp","nativeSrc":"8587:3:7","nodeType":"YulTypedName","src":"8587:3:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8625:4:7","nodeType":"YulLiteral","src":"8625:4:7","type":"","value":"0x00"},{"name":"selector","nativeSrc":"8631:8:7","nodeType":"YulIdentifier","src":"8631:8:7"}],"functionName":{"name":"mstore","nativeSrc":"8618:6:7","nodeType":"YulIdentifier","src":"8618:6:7"},"nativeSrc":"8618:22:7","nodeType":"YulFunctionCall","src":"8618:22:7"},"nativeSrc":"8618:22:7","nodeType":"YulExpressionStatement","src":"8618:22:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8660:4:7","nodeType":"YulLiteral","src":"8660:4:7","type":"","value":"0x04"},{"arguments":[{"name":"to","nativeSrc":"8670:2:7","nodeType":"YulIdentifier","src":"8670:2:7"},{"arguments":[{"kind":"number","nativeSrc":"8678:2:7","nodeType":"YulLiteral","src":"8678:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"8686:1:7","nodeType":"YulLiteral","src":"8686:1:7","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"8682:3:7","nodeType":"YulIdentifier","src":"8682:3:7"},"nativeSrc":"8682:6:7","nodeType":"YulFunctionCall","src":"8682:6:7"}],"functionName":{"name":"shr","nativeSrc":"8674:3:7","nodeType":"YulIdentifier","src":"8674:3:7"},"nativeSrc":"8674:15:7","nodeType":"YulFunctionCall","src":"8674:15:7"}],"functionName":{"name":"and","nativeSrc":"8666:3:7","nodeType":"YulIdentifier","src":"8666:3:7"},"nativeSrc":"8666:24:7","nodeType":"YulFunctionCall","src":"8666:24:7"}],"functionName":{"name":"mstore","nativeSrc":"8653:6:7","nodeType":"YulIdentifier","src":"8653:6:7"},"nativeSrc":"8653:38:7","nodeType":"YulFunctionCall","src":"8653:38:7"},"nativeSrc":"8653:38:7","nodeType":"YulExpressionStatement","src":"8653:38:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8711:4:7","nodeType":"YulLiteral","src":"8711:4:7","type":"","value":"0x24"},{"name":"value","nativeSrc":"8717:5:7","nodeType":"YulIdentifier","src":"8717:5:7"}],"functionName":{"name":"mstore","nativeSrc":"8704:6:7","nodeType":"YulIdentifier","src":"8704:6:7"},"nativeSrc":"8704:19:7","nodeType":"YulFunctionCall","src":"8704:19:7"},"nativeSrc":"8704:19:7","nodeType":"YulExpressionStatement","src":"8704:19:7"},{"nativeSrc":"8736:56:7","nodeType":"YulAssignment","src":"8736:56:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8752:3:7","nodeType":"YulIdentifier","src":"8752:3:7"},"nativeSrc":"8752:5:7","nodeType":"YulFunctionCall","src":"8752:5:7"},{"name":"token","nativeSrc":"8759:5:7","nodeType":"YulIdentifier","src":"8759:5:7"},{"kind":"number","nativeSrc":"8766:1:7","nodeType":"YulLiteral","src":"8766:1:7","type":"","value":"0"},{"kind":"number","nativeSrc":"8769:4:7","nodeType":"YulLiteral","src":"8769:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8775:4:7","nodeType":"YulLiteral","src":"8775:4:7","type":"","value":"0x44"},{"kind":"number","nativeSrc":"8781:4:7","nodeType":"YulLiteral","src":"8781:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8787:4:7","nodeType":"YulLiteral","src":"8787:4:7","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8747:4:7","nodeType":"YulIdentifier","src":"8747:4:7"},"nativeSrc":"8747:45:7","nodeType":"YulFunctionCall","src":"8747:45:7"},"variableNames":[{"name":"success","nativeSrc":"8736:7:7","nodeType":"YulIdentifier","src":"8736:7:7"}]},{"body":{"nativeSrc":"9009:562:7","nodeType":"YulBlock","src":"9009:562:7","statements":[{"body":{"nativeSrc":"9144:133:7","nodeType":"YulBlock","src":"9144:133:7","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"9181:3:7","nodeType":"YulIdentifier","src":"9181:3:7"},{"kind":"number","nativeSrc":"9186:4:7","nodeType":"YulLiteral","src":"9186:4:7","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9192:14:7","nodeType":"YulIdentifier","src":"9192:14:7"},"nativeSrc":"9192:16:7","nodeType":"YulFunctionCall","src":"9192:16:7"}],"functionName":{"name":"returndatacopy","nativeSrc":"9166:14:7","nodeType":"YulIdentifier","src":"9166:14:7"},"nativeSrc":"9166:43:7","nodeType":"YulFunctionCall","src":"9166:43:7"},"nativeSrc":"9166:43:7","nodeType":"YulExpressionStatement","src":"9166:43:7"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"9237:3:7","nodeType":"YulIdentifier","src":"9237:3:7"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9242:14:7","nodeType":"YulIdentifier","src":"9242:14:7"},"nativeSrc":"9242:16:7","nodeType":"YulFunctionCall","src":"9242:16:7"}],"functionName":{"name":"revert","nativeSrc":"9230:6:7","nodeType":"YulIdentifier","src":"9230:6:7"},"nativeSrc":"9230:29:7","nodeType":"YulFunctionCall","src":"9230:29:7"},"nativeSrc":"9230:29:7","nodeType":"YulExpressionStatement","src":"9230:29:7"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"9126:7:7","nodeType":"YulIdentifier","src":"9126:7:7"}],"functionName":{"name":"iszero","nativeSrc":"9119:6:7","nodeType":"YulIdentifier","src":"9119:6:7"},"nativeSrc":"9119:15:7","nodeType":"YulFunctionCall","src":"9119:15:7"},{"name":"bubble","nativeSrc":"9136:6:7","nodeType":"YulIdentifier","src":"9136:6:7"}],"functionName":{"name":"and","nativeSrc":"9115:3:7","nodeType":"YulIdentifier","src":"9115:3:7"},"nativeSrc":"9115:28:7","nodeType":"YulFunctionCall","src":"9115:28:7"},"nativeSrc":"9112:165:7","nodeType":"YulIf","src":"9112:165:7"},{"nativeSrc":"9476:81:7","nodeType":"YulAssignment","src":"9476:81:7","value":{"arguments":[{"name":"success","nativeSrc":"9491:7:7","nodeType":"YulIdentifier","src":"9491:7:7"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9511:14:7","nodeType":"YulIdentifier","src":"9511:14:7"},"nativeSrc":"9511:16:7","nodeType":"YulFunctionCall","src":"9511:16:7"}],"functionName":{"name":"iszero","nativeSrc":"9504:6:7","nodeType":"YulIdentifier","src":"9504:6:7"},"nativeSrc":"9504:24:7","nodeType":"YulFunctionCall","src":"9504:24:7"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"9545:5:7","nodeType":"YulIdentifier","src":"9545:5:7"}],"functionName":{"name":"extcodesize","nativeSrc":"9533:11:7","nodeType":"YulIdentifier","src":"9533:11:7"},"nativeSrc":"9533:18:7","nodeType":"YulFunctionCall","src":"9533:18:7"},{"kind":"number","nativeSrc":"9553:1:7","nodeType":"YulLiteral","src":"9553:1:7","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"9530:2:7","nodeType":"YulIdentifier","src":"9530:2:7"},"nativeSrc":"9530:25:7","nodeType":"YulFunctionCall","src":"9530:25:7"}],"functionName":{"name":"and","nativeSrc":"9500:3:7","nodeType":"YulIdentifier","src":"9500:3:7"},"nativeSrc":"9500:56:7","nodeType":"YulFunctionCall","src":"9500:56:7"}],"functionName":{"name":"and","nativeSrc":"9487:3:7","nodeType":"YulIdentifier","src":"9487:3:7"},"nativeSrc":"9487:70:7","nodeType":"YulFunctionCall","src":"9487:70:7"},"variableNames":[{"name":"success","nativeSrc":"9476:7:7","nodeType":"YulIdentifier","src":"9476:7:7"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"8979:7:7","nodeType":"YulIdentifier","src":"8979:7:7"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8997:4:7","nodeType":"YulLiteral","src":"8997:4:7","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"8991:5:7","nodeType":"YulIdentifier","src":"8991:5:7"},"nativeSrc":"8991:11:7","nodeType":"YulFunctionCall","src":"8991:11:7"},{"kind":"number","nativeSrc":"9004:1:7","nodeType":"YulLiteral","src":"9004:1:7","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"8988:2:7","nodeType":"YulIdentifier","src":"8988:2:7"},"nativeSrc":"8988:18:7","nodeType":"YulFunctionCall","src":"8988:18:7"}],"functionName":{"name":"and","nativeSrc":"8975:3:7","nodeType":"YulIdentifier","src":"8975:3:7"},"nativeSrc":"8975:32:7","nodeType":"YulFunctionCall","src":"8975:32:7"}],"functionName":{"name":"iszero","nativeSrc":"8968:6:7","nodeType":"YulIdentifier","src":"8968:6:7"},"nativeSrc":"8968:40:7","nodeType":"YulFunctionCall","src":"8968:40:7"},"nativeSrc":"8965:606:7","nodeType":"YulIf","src":"8965:606:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9591:4:7","nodeType":"YulLiteral","src":"9591:4:7","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"9597:3:7","nodeType":"YulIdentifier","src":"9597:3:7"}],"functionName":{"name":"mstore","nativeSrc":"9584:6:7","nodeType":"YulIdentifier","src":"9584:6:7"},"nativeSrc":"9584:17:7","nodeType":"YulFunctionCall","src":"9584:17:7"},"nativeSrc":"9584:17:7","nodeType":"YulExpressionStatement","src":"9584:17:7"}]},"evmVersion":"prague","externalReferences":[{"declaration":1238,"isOffset":false,"isSlot":false,"src":"9136:6:7","valueSize":1},{"declaration":1244,"isOffset":false,"isSlot":false,"src":"8631:8:7","valueSize":1},{"declaration":1241,"isOffset":false,"isSlot":false,"src":"8736:7:7","valueSize":1},{"declaration":1241,"isOffset":false,"isSlot":false,"src":"8979:7:7","valueSize":1},{"declaration":1241,"isOffset":false,"isSlot":false,"src":"9126:7:7","valueSize":1},{"declaration":1241,"isOffset":false,"isSlot":false,"src":"9476:7:7","valueSize":1},{"declaration":1241,"isOffset":false,"isSlot":false,"src":"9491:7:7","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"8670:2:7","valueSize":1},{"declaration":1232,"isOffset":false,"isSlot":false,"src":"8759:5:7","valueSize":1},{"declaration":1232,"isOffset":false,"isSlot":false,"src":"9545:5:7","valueSize":1},{"declaration":1236,"isOffset":false,"isSlot":false,"src":"8717:5:7","valueSize":1}],"flags":["memory-safe"],"id":1249,"nodeType":"InlineAssembly","src":"8544:1067:7"}]},"documentation":{"id":1229,"nodeType":"StructuredDocumentation","src":"7885:483:7","text":" @dev Imitates a Solidity `token.transfer(to, value)` call, relaxing the requirement on the return value: the\n return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param to The recipient of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":1251,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"8382:13:7","nodeType":"FunctionDefinition","parameters":{"id":1239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1232,"mutability":"mutable","name":"token","nameLocation":"8403:5:7","nodeType":"VariableDeclaration","scope":1251,"src":"8396:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":1231,"nodeType":"UserDefinedTypeName","pathNode":{"id":1230,"name":"IERC20","nameLocations":["8396:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"8396:6:7"},"referencedDeclaration":819,"src":"8396:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1234,"mutability":"mutable","name":"to","nameLocation":"8418:2:7","nodeType":"VariableDeclaration","scope":1251,"src":"8410:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1233,"name":"address","nodeType":"ElementaryTypeName","src":"8410:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1236,"mutability":"mutable","name":"value","nameLocation":"8430:5:7","nodeType":"VariableDeclaration","scope":1251,"src":"8422:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1235,"name":"uint256","nodeType":"ElementaryTypeName","src":"8422:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1238,"mutability":"mutable","name":"bubble","nameLocation":"8442:6:7","nodeType":"VariableDeclaration","scope":1251,"src":"8437:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1237,"name":"bool","nodeType":"ElementaryTypeName","src":"8437:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8395:54:7"},"returnParameters":{"id":1242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1241,"mutability":"mutable","name":"success","nameLocation":"8472:7:7","nodeType":"VariableDeclaration","scope":1251,"src":"8467:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1240,"name":"bool","nodeType":"ElementaryTypeName","src":"8467:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8466:14:7"},"scope":1300,"src":"8373:1244:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1275,"nodeType":"Block","src":"10337:1221:7","statements":[{"assignments":[1269],"declarations":[{"constant":false,"id":1269,"mutability":"mutable","name":"selector","nameLocation":"10354:8:7","nodeType":"VariableDeclaration","scope":1275,"src":"10347:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1268,"name":"bytes4","nodeType":"ElementaryTypeName","src":"10347:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":1273,"initialValue":{"expression":{"expression":{"id":1270,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"10365:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$819_$","typeString":"type(contract IERC20)"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10372:12:7","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":818,"src":"10365:19:7","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.transferFrom(address,address,uint256) returns (bool)"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10385:8:7","memberName":"selector","nodeType":"MemberAccess","src":"10365:28:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"10347:46:7"},{"AST":{"nativeSrc":"10429:1123:7","nodeType":"YulBlock","src":"10429:1123:7","statements":[{"nativeSrc":"10443:22:7","nodeType":"YulVariableDeclaration","src":"10443:22:7","value":{"arguments":[{"kind":"number","nativeSrc":"10460:4:7","nodeType":"YulLiteral","src":"10460:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10454:5:7","nodeType":"YulIdentifier","src":"10454:5:7"},"nativeSrc":"10454:11:7","nodeType":"YulFunctionCall","src":"10454:11:7"},"variables":[{"name":"fmp","nativeSrc":"10447:3:7","nodeType":"YulTypedName","src":"10447:3:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10485:4:7","nodeType":"YulLiteral","src":"10485:4:7","type":"","value":"0x00"},{"name":"selector","nativeSrc":"10491:8:7","nodeType":"YulIdentifier","src":"10491:8:7"}],"functionName":{"name":"mstore","nativeSrc":"10478:6:7","nodeType":"YulIdentifier","src":"10478:6:7"},"nativeSrc":"10478:22:7","nodeType":"YulFunctionCall","src":"10478:22:7"},"nativeSrc":"10478:22:7","nodeType":"YulExpressionStatement","src":"10478:22:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10520:4:7","nodeType":"YulLiteral","src":"10520:4:7","type":"","value":"0x04"},{"arguments":[{"name":"from","nativeSrc":"10530:4:7","nodeType":"YulIdentifier","src":"10530:4:7"},{"arguments":[{"kind":"number","nativeSrc":"10540:2:7","nodeType":"YulLiteral","src":"10540:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"10548:1:7","nodeType":"YulLiteral","src":"10548:1:7","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10544:3:7","nodeType":"YulIdentifier","src":"10544:3:7"},"nativeSrc":"10544:6:7","nodeType":"YulFunctionCall","src":"10544:6:7"}],"functionName":{"name":"shr","nativeSrc":"10536:3:7","nodeType":"YulIdentifier","src":"10536:3:7"},"nativeSrc":"10536:15:7","nodeType":"YulFunctionCall","src":"10536:15:7"}],"functionName":{"name":"and","nativeSrc":"10526:3:7","nodeType":"YulIdentifier","src":"10526:3:7"},"nativeSrc":"10526:26:7","nodeType":"YulFunctionCall","src":"10526:26:7"}],"functionName":{"name":"mstore","nativeSrc":"10513:6:7","nodeType":"YulIdentifier","src":"10513:6:7"},"nativeSrc":"10513:40:7","nodeType":"YulFunctionCall","src":"10513:40:7"},"nativeSrc":"10513:40:7","nodeType":"YulExpressionStatement","src":"10513:40:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10573:4:7","nodeType":"YulLiteral","src":"10573:4:7","type":"","value":"0x24"},{"arguments":[{"name":"to","nativeSrc":"10583:2:7","nodeType":"YulIdentifier","src":"10583:2:7"},{"arguments":[{"kind":"number","nativeSrc":"10591:2:7","nodeType":"YulLiteral","src":"10591:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"10599:1:7","nodeType":"YulLiteral","src":"10599:1:7","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10595:3:7","nodeType":"YulIdentifier","src":"10595:3:7"},"nativeSrc":"10595:6:7","nodeType":"YulFunctionCall","src":"10595:6:7"}],"functionName":{"name":"shr","nativeSrc":"10587:3:7","nodeType":"YulIdentifier","src":"10587:3:7"},"nativeSrc":"10587:15:7","nodeType":"YulFunctionCall","src":"10587:15:7"}],"functionName":{"name":"and","nativeSrc":"10579:3:7","nodeType":"YulIdentifier","src":"10579:3:7"},"nativeSrc":"10579:24:7","nodeType":"YulFunctionCall","src":"10579:24:7"}],"functionName":{"name":"mstore","nativeSrc":"10566:6:7","nodeType":"YulIdentifier","src":"10566:6:7"},"nativeSrc":"10566:38:7","nodeType":"YulFunctionCall","src":"10566:38:7"},"nativeSrc":"10566:38:7","nodeType":"YulExpressionStatement","src":"10566:38:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10624:4:7","nodeType":"YulLiteral","src":"10624:4:7","type":"","value":"0x44"},{"name":"value","nativeSrc":"10630:5:7","nodeType":"YulIdentifier","src":"10630:5:7"}],"functionName":{"name":"mstore","nativeSrc":"10617:6:7","nodeType":"YulIdentifier","src":"10617:6:7"},"nativeSrc":"10617:19:7","nodeType":"YulFunctionCall","src":"10617:19:7"},"nativeSrc":"10617:19:7","nodeType":"YulExpressionStatement","src":"10617:19:7"},{"nativeSrc":"10649:56:7","nodeType":"YulAssignment","src":"10649:56:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10665:3:7","nodeType":"YulIdentifier","src":"10665:3:7"},"nativeSrc":"10665:5:7","nodeType":"YulFunctionCall","src":"10665:5:7"},{"name":"token","nativeSrc":"10672:5:7","nodeType":"YulIdentifier","src":"10672:5:7"},{"kind":"number","nativeSrc":"10679:1:7","nodeType":"YulLiteral","src":"10679:1:7","type":"","value":"0"},{"kind":"number","nativeSrc":"10682:4:7","nodeType":"YulLiteral","src":"10682:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10688:4:7","nodeType":"YulLiteral","src":"10688:4:7","type":"","value":"0x64"},{"kind":"number","nativeSrc":"10694:4:7","nodeType":"YulLiteral","src":"10694:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10700:4:7","nodeType":"YulLiteral","src":"10700:4:7","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"10660:4:7","nodeType":"YulIdentifier","src":"10660:4:7"},"nativeSrc":"10660:45:7","nodeType":"YulFunctionCall","src":"10660:45:7"},"variableNames":[{"name":"success","nativeSrc":"10649:7:7","nodeType":"YulIdentifier","src":"10649:7:7"}]},{"body":{"nativeSrc":"10922:562:7","nodeType":"YulBlock","src":"10922:562:7","statements":[{"body":{"nativeSrc":"11057:133:7","nodeType":"YulBlock","src":"11057:133:7","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"11094:3:7","nodeType":"YulIdentifier","src":"11094:3:7"},{"kind":"number","nativeSrc":"11099:4:7","nodeType":"YulLiteral","src":"11099:4:7","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11105:14:7","nodeType":"YulIdentifier","src":"11105:14:7"},"nativeSrc":"11105:16:7","nodeType":"YulFunctionCall","src":"11105:16:7"}],"functionName":{"name":"returndatacopy","nativeSrc":"11079:14:7","nodeType":"YulIdentifier","src":"11079:14:7"},"nativeSrc":"11079:43:7","nodeType":"YulFunctionCall","src":"11079:43:7"},"nativeSrc":"11079:43:7","nodeType":"YulExpressionStatement","src":"11079:43:7"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"11150:3:7","nodeType":"YulIdentifier","src":"11150:3:7"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11155:14:7","nodeType":"YulIdentifier","src":"11155:14:7"},"nativeSrc":"11155:16:7","nodeType":"YulFunctionCall","src":"11155:16:7"}],"functionName":{"name":"revert","nativeSrc":"11143:6:7","nodeType":"YulIdentifier","src":"11143:6:7"},"nativeSrc":"11143:29:7","nodeType":"YulFunctionCall","src":"11143:29:7"},"nativeSrc":"11143:29:7","nodeType":"YulExpressionStatement","src":"11143:29:7"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"11039:7:7","nodeType":"YulIdentifier","src":"11039:7:7"}],"functionName":{"name":"iszero","nativeSrc":"11032:6:7","nodeType":"YulIdentifier","src":"11032:6:7"},"nativeSrc":"11032:15:7","nodeType":"YulFunctionCall","src":"11032:15:7"},{"name":"bubble","nativeSrc":"11049:6:7","nodeType":"YulIdentifier","src":"11049:6:7"}],"functionName":{"name":"and","nativeSrc":"11028:3:7","nodeType":"YulIdentifier","src":"11028:3:7"},"nativeSrc":"11028:28:7","nodeType":"YulFunctionCall","src":"11028:28:7"},"nativeSrc":"11025:165:7","nodeType":"YulIf","src":"11025:165:7"},{"nativeSrc":"11389:81:7","nodeType":"YulAssignment","src":"11389:81:7","value":{"arguments":[{"name":"success","nativeSrc":"11404:7:7","nodeType":"YulIdentifier","src":"11404:7:7"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11424:14:7","nodeType":"YulIdentifier","src":"11424:14:7"},"nativeSrc":"11424:16:7","nodeType":"YulFunctionCall","src":"11424:16:7"}],"functionName":{"name":"iszero","nativeSrc":"11417:6:7","nodeType":"YulIdentifier","src":"11417:6:7"},"nativeSrc":"11417:24:7","nodeType":"YulFunctionCall","src":"11417:24:7"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"11458:5:7","nodeType":"YulIdentifier","src":"11458:5:7"}],"functionName":{"name":"extcodesize","nativeSrc":"11446:11:7","nodeType":"YulIdentifier","src":"11446:11:7"},"nativeSrc":"11446:18:7","nodeType":"YulFunctionCall","src":"11446:18:7"},{"kind":"number","nativeSrc":"11466:1:7","nodeType":"YulLiteral","src":"11466:1:7","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"11443:2:7","nodeType":"YulIdentifier","src":"11443:2:7"},"nativeSrc":"11443:25:7","nodeType":"YulFunctionCall","src":"11443:25:7"}],"functionName":{"name":"and","nativeSrc":"11413:3:7","nodeType":"YulIdentifier","src":"11413:3:7"},"nativeSrc":"11413:56:7","nodeType":"YulFunctionCall","src":"11413:56:7"}],"functionName":{"name":"and","nativeSrc":"11400:3:7","nodeType":"YulIdentifier","src":"11400:3:7"},"nativeSrc":"11400:70:7","nodeType":"YulFunctionCall","src":"11400:70:7"},"variableNames":[{"name":"success","nativeSrc":"11389:7:7","nodeType":"YulIdentifier","src":"11389:7:7"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"10892:7:7","nodeType":"YulIdentifier","src":"10892:7:7"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10910:4:7","nodeType":"YulLiteral","src":"10910:4:7","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"10904:5:7","nodeType":"YulIdentifier","src":"10904:5:7"},"nativeSrc":"10904:11:7","nodeType":"YulFunctionCall","src":"10904:11:7"},{"kind":"number","nativeSrc":"10917:1:7","nodeType":"YulLiteral","src":"10917:1:7","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"10901:2:7","nodeType":"YulIdentifier","src":"10901:2:7"},"nativeSrc":"10901:18:7","nodeType":"YulFunctionCall","src":"10901:18:7"}],"functionName":{"name":"and","nativeSrc":"10888:3:7","nodeType":"YulIdentifier","src":"10888:3:7"},"nativeSrc":"10888:32:7","nodeType":"YulFunctionCall","src":"10888:32:7"}],"functionName":{"name":"iszero","nativeSrc":"10881:6:7","nodeType":"YulIdentifier","src":"10881:6:7"},"nativeSrc":"10881:40:7","nodeType":"YulFunctionCall","src":"10881:40:7"},"nativeSrc":"10878:606:7","nodeType":"YulIf","src":"10878:606:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11504:4:7","nodeType":"YulLiteral","src":"11504:4:7","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"11510:3:7","nodeType":"YulIdentifier","src":"11510:3:7"}],"functionName":{"name":"mstore","nativeSrc":"11497:6:7","nodeType":"YulIdentifier","src":"11497:6:7"},"nativeSrc":"11497:17:7","nodeType":"YulFunctionCall","src":"11497:17:7"},"nativeSrc":"11497:17:7","nodeType":"YulExpressionStatement","src":"11497:17:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11534:4:7","nodeType":"YulLiteral","src":"11534:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"11540:1:7","nodeType":"YulLiteral","src":"11540:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11527:6:7","nodeType":"YulIdentifier","src":"11527:6:7"},"nativeSrc":"11527:15:7","nodeType":"YulFunctionCall","src":"11527:15:7"},"nativeSrc":"11527:15:7","nodeType":"YulExpressionStatement","src":"11527:15:7"}]},"evmVersion":"prague","externalReferences":[{"declaration":1263,"isOffset":false,"isSlot":false,"src":"11049:6:7","valueSize":1},{"declaration":1257,"isOffset":false,"isSlot":false,"src":"10530:4:7","valueSize":1},{"declaration":1269,"isOffset":false,"isSlot":false,"src":"10491:8:7","valueSize":1},{"declaration":1266,"isOffset":false,"isSlot":false,"src":"10649:7:7","valueSize":1},{"declaration":1266,"isOffset":false,"isSlot":false,"src":"10892:7:7","valueSize":1},{"declaration":1266,"isOffset":false,"isSlot":false,"src":"11039:7:7","valueSize":1},{"declaration":1266,"isOffset":false,"isSlot":false,"src":"11389:7:7","valueSize":1},{"declaration":1266,"isOffset":false,"isSlot":false,"src":"11404:7:7","valueSize":1},{"declaration":1259,"isOffset":false,"isSlot":false,"src":"10583:2:7","valueSize":1},{"declaration":1255,"isOffset":false,"isSlot":false,"src":"10672:5:7","valueSize":1},{"declaration":1255,"isOffset":false,"isSlot":false,"src":"11458:5:7","valueSize":1},{"declaration":1261,"isOffset":false,"isSlot":false,"src":"10630:5:7","valueSize":1}],"flags":["memory-safe"],"id":1274,"nodeType":"InlineAssembly","src":"10404:1148:7"}]},"documentation":{"id":1252,"nodeType":"StructuredDocumentation","src":"9623:537:7","text":" @dev Imitates a Solidity `token.transferFrom(from, to, value)` call, relaxing the requirement on the return\n value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param from The sender of the tokens\n @param to The recipient of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":1276,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransferFrom","nameLocation":"10174:17:7","nodeType":"FunctionDefinition","parameters":{"id":1264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"token","nameLocation":"10208:5:7","nodeType":"VariableDeclaration","scope":1276,"src":"10201:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":1254,"nodeType":"UserDefinedTypeName","pathNode":{"id":1253,"name":"IERC20","nameLocations":["10201:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"10201:6:7"},"referencedDeclaration":819,"src":"10201:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1257,"mutability":"mutable","name":"from","nameLocation":"10231:4:7","nodeType":"VariableDeclaration","scope":1276,"src":"10223:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1256,"name":"address","nodeType":"ElementaryTypeName","src":"10223:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1259,"mutability":"mutable","name":"to","nameLocation":"10253:2:7","nodeType":"VariableDeclaration","scope":1276,"src":"10245:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1258,"name":"address","nodeType":"ElementaryTypeName","src":"10245:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1261,"mutability":"mutable","name":"value","nameLocation":"10273:5:7","nodeType":"VariableDeclaration","scope":1276,"src":"10265:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1260,"name":"uint256","nodeType":"ElementaryTypeName","src":"10265:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1263,"mutability":"mutable","name":"bubble","nameLocation":"10293:6:7","nodeType":"VariableDeclaration","scope":1276,"src":"10288:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1262,"name":"bool","nodeType":"ElementaryTypeName","src":"10288:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10191:114:7"},"returnParameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1266,"mutability":"mutable","name":"success","nameLocation":"10328:7:7","nodeType":"VariableDeclaration","scope":1276,"src":"10323:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1265,"name":"bool","nodeType":"ElementaryTypeName","src":"10323:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10322:14:7"},"scope":1300,"src":"10165:1393:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1298,"nodeType":"Block","src":"12171:1140:7","statements":[{"assignments":[1292],"declarations":[{"constant":false,"id":1292,"mutability":"mutable","name":"selector","nameLocation":"12188:8:7","nodeType":"VariableDeclaration","scope":1298,"src":"12181:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1291,"name":"bytes4","nodeType":"ElementaryTypeName","src":"12181:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":1296,"initialValue":{"expression":{"expression":{"id":1293,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"12199:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$819_$","typeString":"type(contract IERC20)"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12206:7:7","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"12199:14:7","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function IERC20.approve(address,uint256) returns (bool)"}},"id":1295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12214:8:7","memberName":"selector","nodeType":"MemberAccess","src":"12199:23:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"12181:41:7"},{"AST":{"nativeSrc":"12258:1047:7","nodeType":"YulBlock","src":"12258:1047:7","statements":[{"nativeSrc":"12272:22:7","nodeType":"YulVariableDeclaration","src":"12272:22:7","value":{"arguments":[{"kind":"number","nativeSrc":"12289:4:7","nodeType":"YulLiteral","src":"12289:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"12283:5:7","nodeType":"YulIdentifier","src":"12283:5:7"},"nativeSrc":"12283:11:7","nodeType":"YulFunctionCall","src":"12283:11:7"},"variables":[{"name":"fmp","nativeSrc":"12276:3:7","nodeType":"YulTypedName","src":"12276:3:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12314:4:7","nodeType":"YulLiteral","src":"12314:4:7","type":"","value":"0x00"},{"name":"selector","nativeSrc":"12320:8:7","nodeType":"YulIdentifier","src":"12320:8:7"}],"functionName":{"name":"mstore","nativeSrc":"12307:6:7","nodeType":"YulIdentifier","src":"12307:6:7"},"nativeSrc":"12307:22:7","nodeType":"YulFunctionCall","src":"12307:22:7"},"nativeSrc":"12307:22:7","nodeType":"YulExpressionStatement","src":"12307:22:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12349:4:7","nodeType":"YulLiteral","src":"12349:4:7","type":"","value":"0x04"},{"arguments":[{"name":"spender","nativeSrc":"12359:7:7","nodeType":"YulIdentifier","src":"12359:7:7"},{"arguments":[{"kind":"number","nativeSrc":"12372:2:7","nodeType":"YulLiteral","src":"12372:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"12380:1:7","nodeType":"YulLiteral","src":"12380:1:7","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12376:3:7","nodeType":"YulIdentifier","src":"12376:3:7"},"nativeSrc":"12376:6:7","nodeType":"YulFunctionCall","src":"12376:6:7"}],"functionName":{"name":"shr","nativeSrc":"12368:3:7","nodeType":"YulIdentifier","src":"12368:3:7"},"nativeSrc":"12368:15:7","nodeType":"YulFunctionCall","src":"12368:15:7"}],"functionName":{"name":"and","nativeSrc":"12355:3:7","nodeType":"YulIdentifier","src":"12355:3:7"},"nativeSrc":"12355:29:7","nodeType":"YulFunctionCall","src":"12355:29:7"}],"functionName":{"name":"mstore","nativeSrc":"12342:6:7","nodeType":"YulIdentifier","src":"12342:6:7"},"nativeSrc":"12342:43:7","nodeType":"YulFunctionCall","src":"12342:43:7"},"nativeSrc":"12342:43:7","nodeType":"YulExpressionStatement","src":"12342:43:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12405:4:7","nodeType":"YulLiteral","src":"12405:4:7","type":"","value":"0x24"},{"name":"value","nativeSrc":"12411:5:7","nodeType":"YulIdentifier","src":"12411:5:7"}],"functionName":{"name":"mstore","nativeSrc":"12398:6:7","nodeType":"YulIdentifier","src":"12398:6:7"},"nativeSrc":"12398:19:7","nodeType":"YulFunctionCall","src":"12398:19:7"},"nativeSrc":"12398:19:7","nodeType":"YulExpressionStatement","src":"12398:19:7"},{"nativeSrc":"12430:56:7","nodeType":"YulAssignment","src":"12430:56:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"12446:3:7","nodeType":"YulIdentifier","src":"12446:3:7"},"nativeSrc":"12446:5:7","nodeType":"YulFunctionCall","src":"12446:5:7"},{"name":"token","nativeSrc":"12453:5:7","nodeType":"YulIdentifier","src":"12453:5:7"},{"kind":"number","nativeSrc":"12460:1:7","nodeType":"YulLiteral","src":"12460:1:7","type":"","value":"0"},{"kind":"number","nativeSrc":"12463:4:7","nodeType":"YulLiteral","src":"12463:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12469:4:7","nodeType":"YulLiteral","src":"12469:4:7","type":"","value":"0x44"},{"kind":"number","nativeSrc":"12475:4:7","nodeType":"YulLiteral","src":"12475:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12481:4:7","nodeType":"YulLiteral","src":"12481:4:7","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"12441:4:7","nodeType":"YulIdentifier","src":"12441:4:7"},"nativeSrc":"12441:45:7","nodeType":"YulFunctionCall","src":"12441:45:7"},"variableNames":[{"name":"success","nativeSrc":"12430:7:7","nodeType":"YulIdentifier","src":"12430:7:7"}]},{"body":{"nativeSrc":"12703:562:7","nodeType":"YulBlock","src":"12703:562:7","statements":[{"body":{"nativeSrc":"12838:133:7","nodeType":"YulBlock","src":"12838:133:7","statements":[{"expression":{"arguments":[{"name":"fmp","nativeSrc":"12875:3:7","nodeType":"YulIdentifier","src":"12875:3:7"},{"kind":"number","nativeSrc":"12880:4:7","nodeType":"YulLiteral","src":"12880:4:7","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12886:14:7","nodeType":"YulIdentifier","src":"12886:14:7"},"nativeSrc":"12886:16:7","nodeType":"YulFunctionCall","src":"12886:16:7"}],"functionName":{"name":"returndatacopy","nativeSrc":"12860:14:7","nodeType":"YulIdentifier","src":"12860:14:7"},"nativeSrc":"12860:43:7","nodeType":"YulFunctionCall","src":"12860:43:7"},"nativeSrc":"12860:43:7","nodeType":"YulExpressionStatement","src":"12860:43:7"},{"expression":{"arguments":[{"name":"fmp","nativeSrc":"12931:3:7","nodeType":"YulIdentifier","src":"12931:3:7"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12936:14:7","nodeType":"YulIdentifier","src":"12936:14:7"},"nativeSrc":"12936:16:7","nodeType":"YulFunctionCall","src":"12936:16:7"}],"functionName":{"name":"revert","nativeSrc":"12924:6:7","nodeType":"YulIdentifier","src":"12924:6:7"},"nativeSrc":"12924:29:7","nodeType":"YulFunctionCall","src":"12924:29:7"},"nativeSrc":"12924:29:7","nodeType":"YulExpressionStatement","src":"12924:29:7"}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"12820:7:7","nodeType":"YulIdentifier","src":"12820:7:7"}],"functionName":{"name":"iszero","nativeSrc":"12813:6:7","nodeType":"YulIdentifier","src":"12813:6:7"},"nativeSrc":"12813:15:7","nodeType":"YulFunctionCall","src":"12813:15:7"},{"name":"bubble","nativeSrc":"12830:6:7","nodeType":"YulIdentifier","src":"12830:6:7"}],"functionName":{"name":"and","nativeSrc":"12809:3:7","nodeType":"YulIdentifier","src":"12809:3:7"},"nativeSrc":"12809:28:7","nodeType":"YulFunctionCall","src":"12809:28:7"},"nativeSrc":"12806:165:7","nodeType":"YulIf","src":"12806:165:7"},{"nativeSrc":"13170:81:7","nodeType":"YulAssignment","src":"13170:81:7","value":{"arguments":[{"name":"success","nativeSrc":"13185:7:7","nodeType":"YulIdentifier","src":"13185:7:7"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"13205:14:7","nodeType":"YulIdentifier","src":"13205:14:7"},"nativeSrc":"13205:16:7","nodeType":"YulFunctionCall","src":"13205:16:7"}],"functionName":{"name":"iszero","nativeSrc":"13198:6:7","nodeType":"YulIdentifier","src":"13198:6:7"},"nativeSrc":"13198:24:7","nodeType":"YulFunctionCall","src":"13198:24:7"},{"arguments":[{"arguments":[{"name":"token","nativeSrc":"13239:5:7","nodeType":"YulIdentifier","src":"13239:5:7"}],"functionName":{"name":"extcodesize","nativeSrc":"13227:11:7","nodeType":"YulIdentifier","src":"13227:11:7"},"nativeSrc":"13227:18:7","nodeType":"YulFunctionCall","src":"13227:18:7"},{"kind":"number","nativeSrc":"13247:1:7","nodeType":"YulLiteral","src":"13247:1:7","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"13224:2:7","nodeType":"YulIdentifier","src":"13224:2:7"},"nativeSrc":"13224:25:7","nodeType":"YulFunctionCall","src":"13224:25:7"}],"functionName":{"name":"and","nativeSrc":"13194:3:7","nodeType":"YulIdentifier","src":"13194:3:7"},"nativeSrc":"13194:56:7","nodeType":"YulFunctionCall","src":"13194:56:7"}],"functionName":{"name":"and","nativeSrc":"13181:3:7","nodeType":"YulIdentifier","src":"13181:3:7"},"nativeSrc":"13181:70:7","nodeType":"YulFunctionCall","src":"13181:70:7"},"variableNames":[{"name":"success","nativeSrc":"13170:7:7","nodeType":"YulIdentifier","src":"13170:7:7"}]}]},"condition":{"arguments":[{"arguments":[{"name":"success","nativeSrc":"12673:7:7","nodeType":"YulIdentifier","src":"12673:7:7"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12691:4:7","nodeType":"YulLiteral","src":"12691:4:7","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"12685:5:7","nodeType":"YulIdentifier","src":"12685:5:7"},"nativeSrc":"12685:11:7","nodeType":"YulFunctionCall","src":"12685:11:7"},{"kind":"number","nativeSrc":"12698:1:7","nodeType":"YulLiteral","src":"12698:1:7","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"12682:2:7","nodeType":"YulIdentifier","src":"12682:2:7"},"nativeSrc":"12682:18:7","nodeType":"YulFunctionCall","src":"12682:18:7"}],"functionName":{"name":"and","nativeSrc":"12669:3:7","nodeType":"YulIdentifier","src":"12669:3:7"},"nativeSrc":"12669:32:7","nodeType":"YulFunctionCall","src":"12669:32:7"}],"functionName":{"name":"iszero","nativeSrc":"12662:6:7","nodeType":"YulIdentifier","src":"12662:6:7"},"nativeSrc":"12662:40:7","nodeType":"YulFunctionCall","src":"12662:40:7"},"nativeSrc":"12659:606:7","nodeType":"YulIf","src":"12659:606:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13285:4:7","nodeType":"YulLiteral","src":"13285:4:7","type":"","value":"0x40"},{"name":"fmp","nativeSrc":"13291:3:7","nodeType":"YulIdentifier","src":"13291:3:7"}],"functionName":{"name":"mstore","nativeSrc":"13278:6:7","nodeType":"YulIdentifier","src":"13278:6:7"},"nativeSrc":"13278:17:7","nodeType":"YulFunctionCall","src":"13278:17:7"},"nativeSrc":"13278:17:7","nodeType":"YulExpressionStatement","src":"13278:17:7"}]},"evmVersion":"prague","externalReferences":[{"declaration":1286,"isOffset":false,"isSlot":false,"src":"12830:6:7","valueSize":1},{"declaration":1292,"isOffset":false,"isSlot":false,"src":"12320:8:7","valueSize":1},{"declaration":1282,"isOffset":false,"isSlot":false,"src":"12359:7:7","valueSize":1},{"declaration":1289,"isOffset":false,"isSlot":false,"src":"12430:7:7","valueSize":1},{"declaration":1289,"isOffset":false,"isSlot":false,"src":"12673:7:7","valueSize":1},{"declaration":1289,"isOffset":false,"isSlot":false,"src":"12820:7:7","valueSize":1},{"declaration":1289,"isOffset":false,"isSlot":false,"src":"13170:7:7","valueSize":1},{"declaration":1289,"isOffset":false,"isSlot":false,"src":"13185:7:7","valueSize":1},{"declaration":1280,"isOffset":false,"isSlot":false,"src":"12453:5:7","valueSize":1},{"declaration":1280,"isOffset":false,"isSlot":false,"src":"13239:5:7","valueSize":1},{"declaration":1284,"isOffset":false,"isSlot":false,"src":"12411:5:7","valueSize":1}],"flags":["memory-safe"],"id":1297,"nodeType":"InlineAssembly","src":"12233:1072:7"}]},"documentation":{"id":1277,"nodeType":"StructuredDocumentation","src":"11564:490:7","text":" @dev Imitates a Solidity `token.approve(spender, value)` call, relaxing the requirement on the return value:\n the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param spender The spender of the tokens\n @param value The amount of token to transfer\n @param bubble Behavior switch if the transfer call reverts: bubble the revert reason or return a false boolean."},"id":1299,"implemented":true,"kind":"function","modifiers":[],"name":"_safeApprove","nameLocation":"12068:12:7","nodeType":"FunctionDefinition","parameters":{"id":1287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1280,"mutability":"mutable","name":"token","nameLocation":"12088:5:7","nodeType":"VariableDeclaration","scope":1299,"src":"12081:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"},"typeName":{"id":1279,"nodeType":"UserDefinedTypeName","pathNode":{"id":1278,"name":"IERC20","nameLocations":["12081:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":819,"src":"12081:6:7"},"referencedDeclaration":819,"src":"12081:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$819","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"spender","nameLocation":"12103:7:7","nodeType":"VariableDeclaration","scope":1299,"src":"12095:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1281,"name":"address","nodeType":"ElementaryTypeName","src":"12095:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1284,"mutability":"mutable","name":"value","nameLocation":"12120:5:7","nodeType":"VariableDeclaration","scope":1299,"src":"12112:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1283,"name":"uint256","nodeType":"ElementaryTypeName","src":"12112:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1286,"mutability":"mutable","name":"bubble","nameLocation":"12132:6:7","nodeType":"VariableDeclaration","scope":1299,"src":"12127:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1285,"name":"bool","nodeType":"ElementaryTypeName","src":"12127:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12080:59:7"},"returnParameters":{"id":1290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1289,"mutability":"mutable","name":"success","nameLocation":"12162:7:7","nodeType":"VariableDeclaration","scope":1299,"src":"12157:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1288,"name":"bool","nodeType":"ElementaryTypeName","src":"12157:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12156:14:7"},"scope":1300,"src":"12059:1252:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1301,"src":"698:12615:7","usedErrors":[857,866],"usedEvents":[]}],"src":"115:13199:7"},"id":7},"npm/@openzeppelin/contracts@5.5.0/utils/Context.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/Context.sol","exportedSymbols":{"Context":[1330]},"id":1331,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1302,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:8"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1303,"nodeType":"StructuredDocumentation","src":"127:496:8","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1330,"linearizedBaseContracts":[1330],"name":"Context","nameLocation":"642:7:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":1311,"nodeType":"Block","src":"718:34:8","statements":[{"expression":{"expression":{"id":1308,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:8","memberName":"sender","nodeType":"MemberAccess","src":"735:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1307,"id":1310,"nodeType":"Return","src":"728:17:8"}]},"id":1312,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:8","nodeType":"FunctionDefinition","parameters":{"id":1304,"nodeType":"ParameterList","parameters":[],"src":"675:2:8"},"returnParameters":{"id":1307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1312,"src":"709:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1305,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:8"},"scope":1330,"src":"656:96:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1320,"nodeType":"Block","src":"825:32:8","statements":[{"expression":{"expression":{"id":1317,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:8","memberName":"data","nodeType":"MemberAccess","src":"842:8:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1316,"id":1319,"nodeType":"Return","src":"835:15:8"}]},"id":1321,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:8","nodeType":"FunctionDefinition","parameters":{"id":1313,"nodeType":"ParameterList","parameters":[],"src":"775:2:8"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1321,"src":"809:14:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1314,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:8"},"scope":1330,"src":"758:99:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1328,"nodeType":"Block","src":"935:25:8","statements":[{"expression":{"hexValue":"30","id":1326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1325,"id":1327,"nodeType":"Return","src":"945:8:8"}]},"id":1329,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:8","nodeType":"FunctionDefinition","parameters":{"id":1322,"nodeType":"ParameterList","parameters":[],"src":"892:2:8"},"returnParameters":{"id":1325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1329,"src":"926:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1323,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:8"},"scope":1330,"src":"863:97:8","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1331,"src":"624:338:8","usedErrors":[],"usedEvents":[]}],"src":"101:862:8"},"id":8},"npm/@openzeppelin/contracts@5.5.0/utils/Panic.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/Panic.sol","exportedSymbols":{"Panic":[1382]},"id":1383,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1332,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":1333,"nodeType":"StructuredDocumentation","src":"125:489:9","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":1382,"linearizedBaseContracts":[1382],"name":"Panic","nameLocation":"665:5:9","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":1334,"nodeType":"StructuredDocumentation","src":"677:36:9","text":"@dev generic / unspecified error"},"id":1337,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:9","nodeType":"VariableDeclaration","scope":1382,"src":"718:40:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1335,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":1338,"nodeType":"StructuredDocumentation","src":"764:37:9","text":"@dev used by the assert() builtin"},"id":1341,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:9","nodeType":"VariableDeclaration","scope":1382,"src":"806:39:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1339,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":1340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":1342,"nodeType":"StructuredDocumentation","src":"851:41:9","text":"@dev arithmetic underflow or overflow"},"id":1345,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:9","nodeType":"VariableDeclaration","scope":1382,"src":"897:47:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1343,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":1344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:9","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":1346,"nodeType":"StructuredDocumentation","src":"950:35:9","text":"@dev division or modulo by zero"},"id":1349,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:9","nodeType":"VariableDeclaration","scope":1382,"src":"990:49:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1347,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":1348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:9","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":1350,"nodeType":"StructuredDocumentation","src":"1045:30:9","text":"@dev enum conversion error"},"id":1353,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:9","nodeType":"VariableDeclaration","scope":1382,"src":"1080:54:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":1352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:9","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":1354,"nodeType":"StructuredDocumentation","src":"1140:36:9","text":"@dev invalid encoding in storage"},"id":1357,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:9","nodeType":"VariableDeclaration","scope":1382,"src":"1181:55:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":1356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:9","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":1358,"nodeType":"StructuredDocumentation","src":"1242:24:9","text":"@dev empty array pop"},"id":1361,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:9","nodeType":"VariableDeclaration","scope":1382,"src":"1271:48:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1359,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":1360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:9","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":1362,"nodeType":"StructuredDocumentation","src":"1325:35:9","text":"@dev array out of bounds access"},"id":1365,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:9","nodeType":"VariableDeclaration","scope":1382,"src":"1365:52:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1363,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":1364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:9","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":1366,"nodeType":"StructuredDocumentation","src":"1423:65:9","text":"@dev resource error (too large allocation or too large array)"},"id":1369,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:9","nodeType":"VariableDeclaration","scope":1382,"src":"1493:47:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":1368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:9","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":1370,"nodeType":"StructuredDocumentation","src":"1546:42:9","text":"@dev calling invalid internal function"},"id":1373,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:9","nodeType":"VariableDeclaration","scope":1382,"src":"1593:58:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1371,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:9","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":1380,"nodeType":"Block","src":"1819:151:9","statements":[{"AST":{"nativeSrc":"1854:110:9","nodeType":"YulBlock","src":"1854:110:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:9","nodeType":"YulLiteral","src":"1875:4:9","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:9","nodeType":"YulLiteral","src":"1881:10:9","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:9","nodeType":"YulIdentifier","src":"1868:6:9"},"nativeSrc":"1868:24:9","nodeType":"YulFunctionCall","src":"1868:24:9"},"nativeSrc":"1868:24:9","nodeType":"YulExpressionStatement","src":"1868:24:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:9","nodeType":"YulLiteral","src":"1912:4:9","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:9","nodeType":"YulIdentifier","src":"1918:4:9"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:9","nodeType":"YulIdentifier","src":"1905:6:9"},"nativeSrc":"1905:18:9","nodeType":"YulFunctionCall","src":"1905:18:9"},"nativeSrc":"1905:18:9","nodeType":"YulExpressionStatement","src":"1905:18:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:9","nodeType":"YulLiteral","src":"1943:4:9","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:9","nodeType":"YulLiteral","src":"1949:4:9","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:9","nodeType":"YulIdentifier","src":"1936:6:9"},"nativeSrc":"1936:18:9","nodeType":"YulFunctionCall","src":"1936:18:9"},"nativeSrc":"1936:18:9","nodeType":"YulExpressionStatement","src":"1936:18:9"}]},"evmVersion":"prague","externalReferences":[{"declaration":1376,"isOffset":false,"isSlot":false,"src":"1918:4:9","valueSize":1}],"flags":["memory-safe"],"id":1379,"nodeType":"InlineAssembly","src":"1829:135:9"}]},"documentation":{"id":1374,"nodeType":"StructuredDocumentation","src":"1658:113:9","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":1381,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:9","nodeType":"FunctionDefinition","parameters":{"id":1377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1376,"mutability":"mutable","name":"code","nameLocation":"1799:4:9","nodeType":"VariableDeclaration","scope":1381,"src":"1791:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1375,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:9"},"returnParameters":{"id":1378,"nodeType":"ParameterList","parameters":[],"src":"1819:0:9"},"scope":1382,"src":"1776:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1383,"src":"657:1315:9","usedErrors":[],"usedEvents":[]}],"src":"99:1874:9"},"id":9},"npm/@openzeppelin/contracts@5.5.0/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[1394]},"id":1395,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1384,"literals":["solidity",">=","0.4",".16"],"nodeType":"PragmaDirective","src":"115:25:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1385,"nodeType":"StructuredDocumentation","src":"142:280:10","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":1394,"linearizedBaseContracts":[1394],"name":"IERC165","nameLocation":"433:7:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1386,"nodeType":"StructuredDocumentation","src":"447:340:10","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":1393,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"801:17:10","nodeType":"FunctionDefinition","parameters":{"id":1389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1388,"mutability":"mutable","name":"interfaceId","nameLocation":"826:11:10","nodeType":"VariableDeclaration","scope":1393,"src":"819:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1387,"name":"bytes4","nodeType":"ElementaryTypeName","src":"819:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"818:20:10"},"returnParameters":{"id":1392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1393,"src":"862:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1390,"name":"bool","nodeType":"ElementaryTypeName","src":"862:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"861:6:10"},"scope":1394,"src":"792:76:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1395,"src":"423:447:10","usedErrors":[],"usedEvents":[]}],"src":"115:756:10"},"id":10},"npm/@openzeppelin/contracts@5.5.0/utils/math/Math.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/Math.sol","exportedSymbols":{"Math":[3036],"Panic":[1382],"SafeCast":[4801]},"id":3037,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1396,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:11"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/Panic.sol","file":"../Panic.sol","id":1398,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3037,"sourceUnit":1383,"src":"129:35:11","symbolAliases":[{"foreign":{"id":1397,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"137:5:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":1400,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3037,"sourceUnit":4802,"src":"165:40:11","symbolAliases":[{"foreign":{"id":1399,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"173:8:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1401,"nodeType":"StructuredDocumentation","src":"207:73:11","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3036,"linearizedBaseContracts":[3036],"name":"Math","nameLocation":"289:4:11","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":1406,"members":[{"id":1402,"name":"Floor","nameLocation":"324:5:11","nodeType":"EnumValue","src":"324:5:11"},{"id":1403,"name":"Ceil","nameLocation":"367:4:11","nodeType":"EnumValue","src":"367:4:11"},{"id":1404,"name":"Trunc","nameLocation":"409:5:11","nodeType":"EnumValue","src":"409:5:11"},{"id":1405,"name":"Expand","nameLocation":"439:6:11","nodeType":"EnumValue","src":"439:6:11"}],"name":"Rounding","nameLocation":"305:8:11","nodeType":"EnumDefinition","src":"300:169:11"},{"body":{"id":1419,"nodeType":"Block","src":"731:112:11","statements":[{"AST":{"nativeSrc":"766:71:11","nodeType":"YulBlock","src":"766:71:11","statements":[{"nativeSrc":"780:16:11","nodeType":"YulAssignment","src":"780:16:11","value":{"arguments":[{"name":"a","nativeSrc":"791:1:11","nodeType":"YulIdentifier","src":"791:1:11"},{"name":"b","nativeSrc":"794:1:11","nodeType":"YulIdentifier","src":"794:1:11"}],"functionName":{"name":"add","nativeSrc":"787:3:11","nodeType":"YulIdentifier","src":"787:3:11"},"nativeSrc":"787:9:11","nodeType":"YulFunctionCall","src":"787:9:11"},"variableNames":[{"name":"low","nativeSrc":"780:3:11","nodeType":"YulIdentifier","src":"780:3:11"}]},{"nativeSrc":"809:18:11","nodeType":"YulAssignment","src":"809:18:11","value":{"arguments":[{"name":"low","nativeSrc":"820:3:11","nodeType":"YulIdentifier","src":"820:3:11"},{"name":"a","nativeSrc":"825:1:11","nodeType":"YulIdentifier","src":"825:1:11"}],"functionName":{"name":"lt","nativeSrc":"817:2:11","nodeType":"YulIdentifier","src":"817:2:11"},"nativeSrc":"817:10:11","nodeType":"YulFunctionCall","src":"817:10:11"},"variableNames":[{"name":"high","nativeSrc":"809:4:11","nodeType":"YulIdentifier","src":"809:4:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1409,"isOffset":false,"isSlot":false,"src":"791:1:11","valueSize":1},{"declaration":1409,"isOffset":false,"isSlot":false,"src":"825:1:11","valueSize":1},{"declaration":1411,"isOffset":false,"isSlot":false,"src":"794:1:11","valueSize":1},{"declaration":1414,"isOffset":false,"isSlot":false,"src":"809:4:11","valueSize":1},{"declaration":1416,"isOffset":false,"isSlot":false,"src":"780:3:11","valueSize":1},{"declaration":1416,"isOffset":false,"isSlot":false,"src":"820:3:11","valueSize":1}],"flags":["memory-safe"],"id":1418,"nodeType":"InlineAssembly","src":"741:96:11"}]},"documentation":{"id":1407,"nodeType":"StructuredDocumentation","src":"475:163:11","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":1420,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:11","nodeType":"FunctionDefinition","parameters":{"id":1412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1409,"mutability":"mutable","name":"a","nameLocation":"667:1:11","nodeType":"VariableDeclaration","scope":1420,"src":"659:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1408,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1411,"mutability":"mutable","name":"b","nameLocation":"678:1:11","nodeType":"VariableDeclaration","scope":1420,"src":"670:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:11"},"returnParameters":{"id":1417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1414,"mutability":"mutable","name":"high","nameLocation":"712:4:11","nodeType":"VariableDeclaration","scope":1420,"src":"704:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1416,"mutability":"mutable","name":"low","nameLocation":"726:3:11","nodeType":"VariableDeclaration","scope":1420,"src":"718:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1415,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:11"},"scope":3036,"src":"643:200:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1433,"nodeType":"Block","src":"1115:462:11","statements":[{"AST":{"nativeSrc":"1437:134:11","nodeType":"YulBlock","src":"1437:134:11","statements":[{"nativeSrc":"1451:30:11","nodeType":"YulVariableDeclaration","src":"1451:30:11","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:11","nodeType":"YulIdentifier","src":"1468:1:11"},{"name":"b","nativeSrc":"1471:1:11","nodeType":"YulIdentifier","src":"1471:1:11"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:11","nodeType":"YulLiteral","src":"1478:1:11","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:11","nodeType":"YulIdentifier","src":"1474:3:11"},"nativeSrc":"1474:6:11","nodeType":"YulFunctionCall","src":"1474:6:11"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:11","nodeType":"YulIdentifier","src":"1461:6:11"},"nativeSrc":"1461:20:11","nodeType":"YulFunctionCall","src":"1461:20:11"},"variables":[{"name":"mm","nativeSrc":"1455:2:11","nodeType":"YulTypedName","src":"1455:2:11","type":""}]},{"nativeSrc":"1494:16:11","nodeType":"YulAssignment","src":"1494:16:11","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:11","nodeType":"YulIdentifier","src":"1505:1:11"},{"name":"b","nativeSrc":"1508:1:11","nodeType":"YulIdentifier","src":"1508:1:11"}],"functionName":{"name":"mul","nativeSrc":"1501:3:11","nodeType":"YulIdentifier","src":"1501:3:11"},"nativeSrc":"1501:9:11","nodeType":"YulFunctionCall","src":"1501:9:11"},"variableNames":[{"name":"low","nativeSrc":"1494:3:11","nodeType":"YulIdentifier","src":"1494:3:11"}]},{"nativeSrc":"1523:38:11","nodeType":"YulAssignment","src":"1523:38:11","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:11","nodeType":"YulIdentifier","src":"1539:2:11"},{"name":"low","nativeSrc":"1543:3:11","nodeType":"YulIdentifier","src":"1543:3:11"}],"functionName":{"name":"sub","nativeSrc":"1535:3:11","nodeType":"YulIdentifier","src":"1535:3:11"},"nativeSrc":"1535:12:11","nodeType":"YulFunctionCall","src":"1535:12:11"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:11","nodeType":"YulIdentifier","src":"1552:2:11"},{"name":"low","nativeSrc":"1556:3:11","nodeType":"YulIdentifier","src":"1556:3:11"}],"functionName":{"name":"lt","nativeSrc":"1549:2:11","nodeType":"YulIdentifier","src":"1549:2:11"},"nativeSrc":"1549:11:11","nodeType":"YulFunctionCall","src":"1549:11:11"}],"functionName":{"name":"sub","nativeSrc":"1531:3:11","nodeType":"YulIdentifier","src":"1531:3:11"},"nativeSrc":"1531:30:11","nodeType":"YulFunctionCall","src":"1531:30:11"},"variableNames":[{"name":"high","nativeSrc":"1523:4:11","nodeType":"YulIdentifier","src":"1523:4:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1423,"isOffset":false,"isSlot":false,"src":"1468:1:11","valueSize":1},{"declaration":1423,"isOffset":false,"isSlot":false,"src":"1505:1:11","valueSize":1},{"declaration":1425,"isOffset":false,"isSlot":false,"src":"1471:1:11","valueSize":1},{"declaration":1425,"isOffset":false,"isSlot":false,"src":"1508:1:11","valueSize":1},{"declaration":1428,"isOffset":false,"isSlot":false,"src":"1523:4:11","valueSize":1},{"declaration":1430,"isOffset":false,"isSlot":false,"src":"1494:3:11","valueSize":1},{"declaration":1430,"isOffset":false,"isSlot":false,"src":"1543:3:11","valueSize":1},{"declaration":1430,"isOffset":false,"isSlot":false,"src":"1556:3:11","valueSize":1}],"flags":["memory-safe"],"id":1432,"nodeType":"InlineAssembly","src":"1412:159:11"}]},"documentation":{"id":1421,"nodeType":"StructuredDocumentation","src":"849:173:11","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":1434,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:11","nodeType":"FunctionDefinition","parameters":{"id":1426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1423,"mutability":"mutable","name":"a","nameLocation":"1051:1:11","nodeType":"VariableDeclaration","scope":1434,"src":"1043:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1422,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1425,"mutability":"mutable","name":"b","nameLocation":"1062:1:11","nodeType":"VariableDeclaration","scope":1434,"src":"1054:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1424,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:11"},"returnParameters":{"id":1431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1428,"mutability":"mutable","name":"high","nameLocation":"1096:4:11","nodeType":"VariableDeclaration","scope":1434,"src":"1088:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1427,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1430,"mutability":"mutable","name":"low","nameLocation":"1110:3:11","nodeType":"VariableDeclaration","scope":1434,"src":"1102:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1429,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:11"},"scope":3036,"src":"1027:550:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1468,"nodeType":"Block","src":"1784:149:11","statements":[{"id":1467,"nodeType":"UncheckedBlock","src":"1794:133:11","statements":[{"assignments":[1447],"declarations":[{"constant":false,"id":1447,"mutability":"mutable","name":"c","nameLocation":"1826:1:11","nodeType":"VariableDeclaration","scope":1467,"src":"1818:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1451,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1448,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"1830:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1449,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1439,"src":"1834:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:11"},{"expression":{"id":1456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1452,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"1849:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1453,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"1859:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"1864:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1457,"nodeType":"ExpressionStatement","src":"1849:16:11"},{"expression":{"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1458,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1444,"src":"1879:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1459,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"1888:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1462,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"1908:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1460,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"1892:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"1892:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1466,"nodeType":"ExpressionStatement","src":"1879:37:11"}]}]},"documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"1583:105:11","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":1469,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:11","nodeType":"FunctionDefinition","parameters":{"id":1440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1437,"mutability":"mutable","name":"a","nameLocation":"1717:1:11","nodeType":"VariableDeclaration","scope":1469,"src":"1709:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1436,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1439,"mutability":"mutable","name":"b","nameLocation":"1728:1:11","nodeType":"VariableDeclaration","scope":1469,"src":"1720:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1438,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:11"},"returnParameters":{"id":1445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1442,"mutability":"mutable","name":"success","nameLocation":"1759:7:11","nodeType":"VariableDeclaration","scope":1469,"src":"1754:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1441,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1444,"mutability":"mutable","name":"result","nameLocation":"1776:6:11","nodeType":"VariableDeclaration","scope":1469,"src":"1768:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:11"},"scope":3036,"src":"1693:240:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1503,"nodeType":"Block","src":"2143:149:11","statements":[{"id":1502,"nodeType":"UncheckedBlock","src":"2153:133:11","statements":[{"assignments":[1482],"declarations":[{"constant":false,"id":1482,"mutability":"mutable","name":"c","nameLocation":"2185:1:11","nodeType":"VariableDeclaration","scope":1502,"src":"2177:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1481,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1486,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1483,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"2189:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1484,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"2193:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:11"},{"expression":{"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1487,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"2208:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1488,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"2218:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1489,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"2223:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1492,"nodeType":"ExpressionStatement","src":"2208:16:11"},{"expression":{"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1493,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"2238:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1494,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1482,"src":"2247:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1497,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1477,"src":"2267:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1495,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"2251:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"2251:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1501,"nodeType":"ExpressionStatement","src":"2238:37:11"}]}]},"documentation":{"id":1470,"nodeType":"StructuredDocumentation","src":"1939:108:11","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":1504,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:11","nodeType":"FunctionDefinition","parameters":{"id":1475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1472,"mutability":"mutable","name":"a","nameLocation":"2076:1:11","nodeType":"VariableDeclaration","scope":1504,"src":"2068:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1471,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1474,"mutability":"mutable","name":"b","nameLocation":"2087:1:11","nodeType":"VariableDeclaration","scope":1504,"src":"2079:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1473,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:11"},"returnParameters":{"id":1480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1477,"mutability":"mutable","name":"success","nameLocation":"2118:7:11","nodeType":"VariableDeclaration","scope":1504,"src":"2113:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1476,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1479,"mutability":"mutable","name":"result","nameLocation":"2135:6:11","nodeType":"VariableDeclaration","scope":1504,"src":"2127:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1478,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:11"},"scope":3036,"src":"2052:240:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1533,"nodeType":"Block","src":"2505:391:11","statements":[{"id":1532,"nodeType":"UncheckedBlock","src":"2515:375:11","statements":[{"assignments":[1517],"declarations":[{"constant":false,"id":1517,"mutability":"mutable","name":"c","nameLocation":"2547:1:11","nodeType":"VariableDeclaration","scope":1532,"src":"2539:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1516,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1521,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1518,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"2551:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1519,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2555:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:11"},{"AST":{"nativeSrc":"2595:188:11","nodeType":"YulBlock","src":"2595:188:11","statements":[{"nativeSrc":"2727:42:11","nodeType":"YulAssignment","src":"2727:42:11","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:11","nodeType":"YulIdentifier","src":"2748:1:11"},{"name":"a","nativeSrc":"2751:1:11","nodeType":"YulIdentifier","src":"2751:1:11"}],"functionName":{"name":"div","nativeSrc":"2744:3:11","nodeType":"YulIdentifier","src":"2744:3:11"},"nativeSrc":"2744:9:11","nodeType":"YulFunctionCall","src":"2744:9:11"},{"name":"b","nativeSrc":"2755:1:11","nodeType":"YulIdentifier","src":"2755:1:11"}],"functionName":{"name":"eq","nativeSrc":"2741:2:11","nodeType":"YulIdentifier","src":"2741:2:11"},"nativeSrc":"2741:16:11","nodeType":"YulFunctionCall","src":"2741:16:11"},{"arguments":[{"name":"a","nativeSrc":"2766:1:11","nodeType":"YulIdentifier","src":"2766:1:11"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:11","nodeType":"YulIdentifier","src":"2759:6:11"},"nativeSrc":"2759:9:11","nodeType":"YulFunctionCall","src":"2759:9:11"}],"functionName":{"name":"or","nativeSrc":"2738:2:11","nodeType":"YulIdentifier","src":"2738:2:11"},"nativeSrc":"2738:31:11","nodeType":"YulFunctionCall","src":"2738:31:11"},"variableNames":[{"name":"success","nativeSrc":"2727:7:11","nodeType":"YulIdentifier","src":"2727:7:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1507,"isOffset":false,"isSlot":false,"src":"2751:1:11","valueSize":1},{"declaration":1507,"isOffset":false,"isSlot":false,"src":"2766:1:11","valueSize":1},{"declaration":1509,"isOffset":false,"isSlot":false,"src":"2755:1:11","valueSize":1},{"declaration":1517,"isOffset":false,"isSlot":false,"src":"2748:1:11","valueSize":1},{"declaration":1512,"isOffset":false,"isSlot":false,"src":"2727:7:11","valueSize":1}],"flags":["memory-safe"],"id":1522,"nodeType":"InlineAssembly","src":"2570:213:11"},{"expression":{"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1523,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"2842:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1524,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"2851:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1527,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"2871:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1525,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"2855:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"2855:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1531,"nodeType":"ExpressionStatement","src":"2842:37:11"}]}]},"documentation":{"id":1505,"nodeType":"StructuredDocumentation","src":"2298:111:11","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":1534,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:11","nodeType":"FunctionDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1507,"mutability":"mutable","name":"a","nameLocation":"2438:1:11","nodeType":"VariableDeclaration","scope":1534,"src":"2430:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1506,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1509,"mutability":"mutable","name":"b","nameLocation":"2449:1:11","nodeType":"VariableDeclaration","scope":1534,"src":"2441:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1508,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:11"},"returnParameters":{"id":1515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1512,"mutability":"mutable","name":"success","nameLocation":"2480:7:11","nodeType":"VariableDeclaration","scope":1534,"src":"2475:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1511,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"result","nameLocation":"2497:6:11","nodeType":"VariableDeclaration","scope":1534,"src":"2489:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:11"},"scope":3036,"src":"2414:482:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1554,"nodeType":"Block","src":"3111:231:11","statements":[{"id":1553,"nodeType":"UncheckedBlock","src":"3121:215:11","statements":[{"expression":{"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1546,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1542,"src":"3145:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1547,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"3155:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1551,"nodeType":"ExpressionStatement","src":"3145:15:11"},{"AST":{"nativeSrc":"3199:127:11","nodeType":"YulBlock","src":"3199:127:11","statements":[{"nativeSrc":"3293:19:11","nodeType":"YulAssignment","src":"3293:19:11","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:11","nodeType":"YulIdentifier","src":"3307:1:11"},{"name":"b","nativeSrc":"3310:1:11","nodeType":"YulIdentifier","src":"3310:1:11"}],"functionName":{"name":"div","nativeSrc":"3303:3:11","nodeType":"YulIdentifier","src":"3303:3:11"},"nativeSrc":"3303:9:11","nodeType":"YulFunctionCall","src":"3303:9:11"},"variableNames":[{"name":"result","nativeSrc":"3293:6:11","nodeType":"YulIdentifier","src":"3293:6:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1537,"isOffset":false,"isSlot":false,"src":"3307:1:11","valueSize":1},{"declaration":1539,"isOffset":false,"isSlot":false,"src":"3310:1:11","valueSize":1},{"declaration":1544,"isOffset":false,"isSlot":false,"src":"3293:6:11","valueSize":1}],"flags":["memory-safe"],"id":1552,"nodeType":"InlineAssembly","src":"3174:152:11"}]}]},"documentation":{"id":1535,"nodeType":"StructuredDocumentation","src":"2902:113:11","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":1555,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:11","nodeType":"FunctionDefinition","parameters":{"id":1540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1537,"mutability":"mutable","name":"a","nameLocation":"3044:1:11","nodeType":"VariableDeclaration","scope":1555,"src":"3036:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1539,"mutability":"mutable","name":"b","nameLocation":"3055:1:11","nodeType":"VariableDeclaration","scope":1555,"src":"3047:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1538,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:11"},"returnParameters":{"id":1545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1542,"mutability":"mutable","name":"success","nameLocation":"3086:7:11","nodeType":"VariableDeclaration","scope":1555,"src":"3081:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1541,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1544,"mutability":"mutable","name":"result","nameLocation":"3103:6:11","nodeType":"VariableDeclaration","scope":1555,"src":"3095:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1543,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:11"},"scope":3036,"src":"3020:322:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1575,"nodeType":"Block","src":"3567:231:11","statements":[{"id":1574,"nodeType":"UncheckedBlock","src":"3577:215:11","statements":[{"expression":{"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1567,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"3601:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1568,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1560,"src":"3611:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1572,"nodeType":"ExpressionStatement","src":"3601:15:11"},{"AST":{"nativeSrc":"3655:127:11","nodeType":"YulBlock","src":"3655:127:11","statements":[{"nativeSrc":"3749:19:11","nodeType":"YulAssignment","src":"3749:19:11","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:11","nodeType":"YulIdentifier","src":"3763:1:11"},{"name":"b","nativeSrc":"3766:1:11","nodeType":"YulIdentifier","src":"3766:1:11"}],"functionName":{"name":"mod","nativeSrc":"3759:3:11","nodeType":"YulIdentifier","src":"3759:3:11"},"nativeSrc":"3759:9:11","nodeType":"YulFunctionCall","src":"3759:9:11"},"variableNames":[{"name":"result","nativeSrc":"3749:6:11","nodeType":"YulIdentifier","src":"3749:6:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1558,"isOffset":false,"isSlot":false,"src":"3763:1:11","valueSize":1},{"declaration":1560,"isOffset":false,"isSlot":false,"src":"3766:1:11","valueSize":1},{"declaration":1565,"isOffset":false,"isSlot":false,"src":"3749:6:11","valueSize":1}],"flags":["memory-safe"],"id":1573,"nodeType":"InlineAssembly","src":"3630:152:11"}]}]},"documentation":{"id":1556,"nodeType":"StructuredDocumentation","src":"3348:123:11","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":1576,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:11","nodeType":"FunctionDefinition","parameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"a","nameLocation":"3500:1:11","nodeType":"VariableDeclaration","scope":1576,"src":"3492:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1560,"mutability":"mutable","name":"b","nameLocation":"3511:1:11","nodeType":"VariableDeclaration","scope":1576,"src":"3503:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1559,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:11"},"returnParameters":{"id":1566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1563,"mutability":"mutable","name":"success","nameLocation":"3542:7:11","nodeType":"VariableDeclaration","scope":1576,"src":"3537:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1562,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1565,"mutability":"mutable","name":"result","nameLocation":"3559:6:11","nodeType":"VariableDeclaration","scope":1576,"src":"3551:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1564,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:11"},"scope":3036,"src":"3476:322:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1605,"nodeType":"Block","src":"3989:122:11","statements":[{"assignments":[1587,1589],"declarations":[{"constant":false,"id":1587,"mutability":"mutable","name":"success","nameLocation":"4005:7:11","nodeType":"VariableDeclaration","scope":1605,"src":"4000:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1586,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1589,"mutability":"mutable","name":"result","nameLocation":"4022:6:11","nodeType":"VariableDeclaration","scope":1605,"src":"4014:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1588,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1594,"initialValue":{"arguments":[{"id":1591,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1579,"src":"4039:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1592,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1581,"src":"4042:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1590,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1469,"src":"4032:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":1593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:11"},{"expression":{"arguments":[{"id":1596,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"4069:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1597,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4078:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":1600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1599,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1598,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:11","memberName":"max","nodeType":"MemberAccess","src":"4086:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1595,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"4061:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1585,"id":1604,"nodeType":"Return","src":"4054:50:11"}]},"documentation":{"id":1577,"nodeType":"StructuredDocumentation","src":"3804:103:11","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":1606,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:11","nodeType":"FunctionDefinition","parameters":{"id":1582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1579,"mutability":"mutable","name":"a","nameLocation":"3943:1:11","nodeType":"VariableDeclaration","scope":1606,"src":"3935:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1578,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1581,"mutability":"mutable","name":"b","nameLocation":"3954:1:11","nodeType":"VariableDeclaration","scope":1606,"src":"3946:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1580,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:11"},"returnParameters":{"id":1585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1606,"src":"3980:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1583,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:11"},"scope":3036,"src":"3912:199:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1625,"nodeType":"Block","src":"4294:73:11","statements":[{"assignments":[null,1617],"declarations":[null,{"constant":false,"id":1617,"mutability":"mutable","name":"result","nameLocation":"4315:6:11","nodeType":"VariableDeclaration","scope":1625,"src":"4307:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1622,"initialValue":{"arguments":[{"id":1619,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1609,"src":"4332:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1620,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"4335:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1618,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1504,"src":"4325:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":1621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:11"},{"expression":{"id":1623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"4354:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1615,"id":1624,"nodeType":"Return","src":"4347:13:11"}]},"documentation":{"id":1607,"nodeType":"StructuredDocumentation","src":"4117:95:11","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":1626,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:11","nodeType":"FunctionDefinition","parameters":{"id":1612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"a","nameLocation":"4248:1:11","nodeType":"VariableDeclaration","scope":1626,"src":"4240:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1608,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1611,"mutability":"mutable","name":"b","nameLocation":"4259:1:11","nodeType":"VariableDeclaration","scope":1626,"src":"4251:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1610,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:11"},"returnParameters":{"id":1615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1626,"src":"4285:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1613,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:11"},"scope":3036,"src":"4217:150:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1655,"nodeType":"Block","src":"4564:122:11","statements":[{"assignments":[1637,1639],"declarations":[{"constant":false,"id":1637,"mutability":"mutable","name":"success","nameLocation":"4580:7:11","nodeType":"VariableDeclaration","scope":1655,"src":"4575:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1636,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1639,"mutability":"mutable","name":"result","nameLocation":"4597:6:11","nodeType":"VariableDeclaration","scope":1655,"src":"4589:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1638,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1644,"initialValue":{"arguments":[{"id":1641,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1629,"src":"4614:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1642,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"4617:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1640,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1534,"src":"4607:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:11"},{"expression":{"arguments":[{"id":1646,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"4644:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1647,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"4653:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":1650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1649,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:11","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1648,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:11","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:11","memberName":"max","nodeType":"MemberAccess","src":"4661:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1645,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"4636:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1635,"id":1654,"nodeType":"Return","src":"4629:50:11"}]},"documentation":{"id":1627,"nodeType":"StructuredDocumentation","src":"4373:109:11","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":1656,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:11","nodeType":"FunctionDefinition","parameters":{"id":1632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"a","nameLocation":"4518:1:11","nodeType":"VariableDeclaration","scope":1656,"src":"4510:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1628,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1631,"mutability":"mutable","name":"b","nameLocation":"4529:1:11","nodeType":"VariableDeclaration","scope":1656,"src":"4521:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1630,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:11"},"returnParameters":{"id":1635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1656,"src":"4555:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:11"},"scope":3036,"src":"4487:199:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1682,"nodeType":"Block","src":"5174:207:11","statements":[{"id":1681,"nodeType":"UncheckedBlock","src":"5184:191:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1668,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"5322:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1669,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1661,"src":"5328:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1670,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1663,"src":"5332:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5328:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1672,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5327:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":1675,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"5353:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1673,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"5337:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5346:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"5337:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5327:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1678,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5326:38:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5322:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1667,"id":1680,"nodeType":"Return","src":"5315:49:11"}]}]},"documentation":{"id":1657,"nodeType":"StructuredDocumentation","src":"4692:390:11","text":" @dev Branchless ternary evaluation for `condition ? a : b`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `condition ? a : b`) to only compute\n one branch when needed, making this function more expensive."},"id":1683,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5096:7:11","nodeType":"FunctionDefinition","parameters":{"id":1664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1659,"mutability":"mutable","name":"condition","nameLocation":"5109:9:11","nodeType":"VariableDeclaration","scope":1683,"src":"5104:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1658,"name":"bool","nodeType":"ElementaryTypeName","src":"5104:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1661,"mutability":"mutable","name":"a","nameLocation":"5128:1:11","nodeType":"VariableDeclaration","scope":1683,"src":"5120:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1660,"name":"uint256","nodeType":"ElementaryTypeName","src":"5120:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1663,"mutability":"mutable","name":"b","nameLocation":"5139:1:11","nodeType":"VariableDeclaration","scope":1683,"src":"5131:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5103:38:11"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1683,"src":"5165:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"5165:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5164:9:11"},"scope":3036,"src":"5087:294:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1701,"nodeType":"Block","src":"5518:44:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1694,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1686,"src":"5543:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1695,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"5547:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5543:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1697,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1686,"src":"5550:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1698,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"5553:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1693,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"5535:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1692,"id":1700,"nodeType":"Return","src":"5528:27:11"}]},"documentation":{"id":1684,"nodeType":"StructuredDocumentation","src":"5387:59:11","text":" @dev Returns the largest of two numbers."},"id":1702,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5460:3:11","nodeType":"FunctionDefinition","parameters":{"id":1689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1686,"mutability":"mutable","name":"a","nameLocation":"5472:1:11","nodeType":"VariableDeclaration","scope":1702,"src":"5464:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1685,"name":"uint256","nodeType":"ElementaryTypeName","src":"5464:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1688,"mutability":"mutable","name":"b","nameLocation":"5483:1:11","nodeType":"VariableDeclaration","scope":1702,"src":"5475:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1687,"name":"uint256","nodeType":"ElementaryTypeName","src":"5475:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5463:22:11"},"returnParameters":{"id":1692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1702,"src":"5509:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1690,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:11"},"scope":3036,"src":"5451:111:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1720,"nodeType":"Block","src":"5700:44:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1713,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"5725:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1714,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"5729:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5725:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1716,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1705,"src":"5732:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1717,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"5735:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1712,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"5717:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5717:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1711,"id":1719,"nodeType":"Return","src":"5710:27:11"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"5568:60:11","text":" @dev Returns the smallest of two numbers."},"id":1721,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5642:3:11","nodeType":"FunctionDefinition","parameters":{"id":1708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"a","nameLocation":"5654:1:11","nodeType":"VariableDeclaration","scope":1721,"src":"5646:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"5646:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1707,"mutability":"mutable","name":"b","nameLocation":"5665:1:11","nodeType":"VariableDeclaration","scope":1721,"src":"5657:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1706,"name":"uint256","nodeType":"ElementaryTypeName","src":"5657:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5645:22:11"},"returnParameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1721,"src":"5691:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1709,"name":"uint256","nodeType":"ElementaryTypeName","src":"5691:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5690:9:11"},"scope":3036,"src":"5633:111:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1743,"nodeType":"Block","src":"5928:82:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1731,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1724,"src":"5983:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1732,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"5987:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5983:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5982:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1735,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1724,"src":"5993:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1736,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"5997:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5993:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5992:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6002:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5992:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5982:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1730,"id":1742,"nodeType":"Return","src":"5975:28:11"}]},"documentation":{"id":1722,"nodeType":"StructuredDocumentation","src":"5750:102:11","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5866:7:11","nodeType":"FunctionDefinition","parameters":{"id":1727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1724,"mutability":"mutable","name":"a","nameLocation":"5882:1:11","nodeType":"VariableDeclaration","scope":1744,"src":"5874:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1723,"name":"uint256","nodeType":"ElementaryTypeName","src":"5874:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1726,"mutability":"mutable","name":"b","nameLocation":"5893:1:11","nodeType":"VariableDeclaration","scope":1744,"src":"5885:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"5885:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5873:22:11"},"returnParameters":{"id":1730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1744,"src":"5919:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"5919:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5918:9:11"},"scope":3036,"src":"5857:153:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1784,"nodeType":"Block","src":"6302:633:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1754,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"6316:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6321:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6316:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1765,"nodeType":"IfStatement","src":"6312:150:11","trueBody":{"id":1764,"nodeType":"Block","src":"6324:138:11","statements":[{"expression":{"arguments":[{"expression":{"id":1760,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"6428:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6434:16:11","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"6428:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1757,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"6416:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6422:5:11","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"6416:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6416:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1763,"nodeType":"ExpressionStatement","src":"6416:35:11"}]}},{"id":1783,"nodeType":"UncheckedBlock","src":"6845:84:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1768,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"6892:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6896:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6892:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1766,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"6876:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6885:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"6876:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6876:22:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1772,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"6903:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6907:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6903:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1775,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6902:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1776,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"6912:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6902:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6916:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6902:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1780,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6901:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6876:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1753,"id":1782,"nodeType":"Return","src":"6869:49:11"}]}]},"documentation":{"id":1745,"nodeType":"StructuredDocumentation","src":"6016:210:11","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":1785,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6240:7:11","nodeType":"FunctionDefinition","parameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1747,"mutability":"mutable","name":"a","nameLocation":"6256:1:11","nodeType":"VariableDeclaration","scope":1785,"src":"6248:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"6248:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1749,"mutability":"mutable","name":"b","nameLocation":"6267:1:11","nodeType":"VariableDeclaration","scope":1785,"src":"6259:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1748,"name":"uint256","nodeType":"ElementaryTypeName","src":"6259:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6247:22:11"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1785,"src":"6293:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1751,"name":"uint256","nodeType":"ElementaryTypeName","src":"6293:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6292:9:11"},"scope":3036,"src":"6231:704:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1920,"nodeType":"Block","src":"7356:3585:11","statements":[{"id":1919,"nodeType":"UncheckedBlock","src":"7366:3569:11","statements":[{"assignments":[1798,1800],"declarations":[{"constant":false,"id":1798,"mutability":"mutable","name":"high","nameLocation":"7399:4:11","nodeType":"VariableDeclaration","scope":1919,"src":"7391:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1797,"name":"uint256","nodeType":"ElementaryTypeName","src":"7391:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1800,"mutability":"mutable","name":"low","nameLocation":"7413:3:11","nodeType":"VariableDeclaration","scope":1919,"src":"7405:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1799,"name":"uint256","nodeType":"ElementaryTypeName","src":"7405:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1805,"initialValue":{"arguments":[{"id":1802,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1788,"src":"7427:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1803,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"7430:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1801,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"7420:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7420:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7390:42:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1806,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"7514:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7522:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7514:9:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1814,"nodeType":"IfStatement","src":"7510:365:11","trueBody":{"id":1813,"nodeType":"Block","src":"7525:350:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1809,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"7843:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1810,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"7849:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7843:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1796,"id":1812,"nodeType":"Return","src":"7836:24:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1815,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"7985:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1816,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"8000:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7985:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1833,"nodeType":"IfStatement","src":"7981:142:11","trueBody":{"id":1832,"nodeType":"Block","src":"8006:117:11","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1822,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"8044:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8059:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8044:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1825,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"8062:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8068:16:11","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"8062:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1827,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"8086:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8092:14:11","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1345,"src":"8086:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1821,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"8036:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8036:71:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1818,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"8024:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8030:5:11","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"8024:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8024:84:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1831,"nodeType":"ExpressionStatement","src":"8024:84:11"}]}},{"assignments":[1835],"declarations":[{"constant":false,"id":1835,"mutability":"mutable","name":"remainder","nameLocation":"8383:9:11","nodeType":"VariableDeclaration","scope":1919,"src":"8375:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1834,"name":"uint256","nodeType":"ElementaryTypeName","src":"8375:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1836,"nodeType":"VariableDeclarationStatement","src":"8375:17:11"},{"AST":{"nativeSrc":"8431:283:11","nodeType":"YulBlock","src":"8431:283:11","statements":[{"nativeSrc":"8500:38:11","nodeType":"YulAssignment","src":"8500:38:11","value":{"arguments":[{"name":"x","nativeSrc":"8520:1:11","nodeType":"YulIdentifier","src":"8520:1:11"},{"name":"y","nativeSrc":"8523:1:11","nodeType":"YulIdentifier","src":"8523:1:11"},{"name":"denominator","nativeSrc":"8526:11:11","nodeType":"YulIdentifier","src":"8526:11:11"}],"functionName":{"name":"mulmod","nativeSrc":"8513:6:11","nodeType":"YulIdentifier","src":"8513:6:11"},"nativeSrc":"8513:25:11","nodeType":"YulFunctionCall","src":"8513:25:11"},"variableNames":[{"name":"remainder","nativeSrc":"8500:9:11","nodeType":"YulIdentifier","src":"8500:9:11"}]},{"nativeSrc":"8620:37:11","nodeType":"YulAssignment","src":"8620:37:11","value":{"arguments":[{"name":"high","nativeSrc":"8632:4:11","nodeType":"YulIdentifier","src":"8632:4:11"},{"arguments":[{"name":"remainder","nativeSrc":"8641:9:11","nodeType":"YulIdentifier","src":"8641:9:11"},{"name":"low","nativeSrc":"8652:3:11","nodeType":"YulIdentifier","src":"8652:3:11"}],"functionName":{"name":"gt","nativeSrc":"8638:2:11","nodeType":"YulIdentifier","src":"8638:2:11"},"nativeSrc":"8638:18:11","nodeType":"YulFunctionCall","src":"8638:18:11"}],"functionName":{"name":"sub","nativeSrc":"8628:3:11","nodeType":"YulIdentifier","src":"8628:3:11"},"nativeSrc":"8628:29:11","nodeType":"YulFunctionCall","src":"8628:29:11"},"variableNames":[{"name":"high","nativeSrc":"8620:4:11","nodeType":"YulIdentifier","src":"8620:4:11"}]},{"nativeSrc":"8674:26:11","nodeType":"YulAssignment","src":"8674:26:11","value":{"arguments":[{"name":"low","nativeSrc":"8685:3:11","nodeType":"YulIdentifier","src":"8685:3:11"},{"name":"remainder","nativeSrc":"8690:9:11","nodeType":"YulIdentifier","src":"8690:9:11"}],"functionName":{"name":"sub","nativeSrc":"8681:3:11","nodeType":"YulIdentifier","src":"8681:3:11"},"nativeSrc":"8681:19:11","nodeType":"YulFunctionCall","src":"8681:19:11"},"variableNames":[{"name":"low","nativeSrc":"8674:3:11","nodeType":"YulIdentifier","src":"8674:3:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1792,"isOffset":false,"isSlot":false,"src":"8526:11:11","valueSize":1},{"declaration":1798,"isOffset":false,"isSlot":false,"src":"8620:4:11","valueSize":1},{"declaration":1798,"isOffset":false,"isSlot":false,"src":"8632:4:11","valueSize":1},{"declaration":1800,"isOffset":false,"isSlot":false,"src":"8652:3:11","valueSize":1},{"declaration":1800,"isOffset":false,"isSlot":false,"src":"8674:3:11","valueSize":1},{"declaration":1800,"isOffset":false,"isSlot":false,"src":"8685:3:11","valueSize":1},{"declaration":1835,"isOffset":false,"isSlot":false,"src":"8500:9:11","valueSize":1},{"declaration":1835,"isOffset":false,"isSlot":false,"src":"8641:9:11","valueSize":1},{"declaration":1835,"isOffset":false,"isSlot":false,"src":"8690:9:11","valueSize":1},{"declaration":1788,"isOffset":false,"isSlot":false,"src":"8520:1:11","valueSize":1},{"declaration":1790,"isOffset":false,"isSlot":false,"src":"8523:1:11","valueSize":1}],"flags":["memory-safe"],"id":1837,"nodeType":"InlineAssembly","src":"8406:308:11"},{"assignments":[1839],"declarations":[{"constant":false,"id":1839,"mutability":"mutable","name":"twos","nameLocation":"8926:4:11","nodeType":"VariableDeclaration","scope":1919,"src":"8918:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1838,"name":"uint256","nodeType":"ElementaryTypeName","src":"8918:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1846,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1840,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"8933:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":1841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8948:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1842,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"8952:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8948:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1844,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8947:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8933:31:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8918:46:11"},{"AST":{"nativeSrc":"9003:359:11","nodeType":"YulBlock","src":"9003:359:11","statements":[{"nativeSrc":"9068:37:11","nodeType":"YulAssignment","src":"9068:37:11","value":{"arguments":[{"name":"denominator","nativeSrc":"9087:11:11","nodeType":"YulIdentifier","src":"9087:11:11"},{"name":"twos","nativeSrc":"9100:4:11","nodeType":"YulIdentifier","src":"9100:4:11"}],"functionName":{"name":"div","nativeSrc":"9083:3:11","nodeType":"YulIdentifier","src":"9083:3:11"},"nativeSrc":"9083:22:11","nodeType":"YulFunctionCall","src":"9083:22:11"},"variableNames":[{"name":"denominator","nativeSrc":"9068:11:11","nodeType":"YulIdentifier","src":"9068:11:11"}]},{"nativeSrc":"9169:21:11","nodeType":"YulAssignment","src":"9169:21:11","value":{"arguments":[{"name":"low","nativeSrc":"9180:3:11","nodeType":"YulIdentifier","src":"9180:3:11"},{"name":"twos","nativeSrc":"9185:4:11","nodeType":"YulIdentifier","src":"9185:4:11"}],"functionName":{"name":"div","nativeSrc":"9176:3:11","nodeType":"YulIdentifier","src":"9176:3:11"},"nativeSrc":"9176:14:11","nodeType":"YulFunctionCall","src":"9176:14:11"},"variableNames":[{"name":"low","nativeSrc":"9169:3:11","nodeType":"YulIdentifier","src":"9169:3:11"}]},{"nativeSrc":"9309:39:11","nodeType":"YulAssignment","src":"9309:39:11","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9329:1:11","nodeType":"YulLiteral","src":"9329:1:11","type":"","value":"0"},{"name":"twos","nativeSrc":"9332:4:11","nodeType":"YulIdentifier","src":"9332:4:11"}],"functionName":{"name":"sub","nativeSrc":"9325:3:11","nodeType":"YulIdentifier","src":"9325:3:11"},"nativeSrc":"9325:12:11","nodeType":"YulFunctionCall","src":"9325:12:11"},{"name":"twos","nativeSrc":"9339:4:11","nodeType":"YulIdentifier","src":"9339:4:11"}],"functionName":{"name":"div","nativeSrc":"9321:3:11","nodeType":"YulIdentifier","src":"9321:3:11"},"nativeSrc":"9321:23:11","nodeType":"YulFunctionCall","src":"9321:23:11"},{"kind":"number","nativeSrc":"9346:1:11","nodeType":"YulLiteral","src":"9346:1:11","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9317:3:11","nodeType":"YulIdentifier","src":"9317:3:11"},"nativeSrc":"9317:31:11","nodeType":"YulFunctionCall","src":"9317:31:11"},"variableNames":[{"name":"twos","nativeSrc":"9309:4:11","nodeType":"YulIdentifier","src":"9309:4:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":1792,"isOffset":false,"isSlot":false,"src":"9068:11:11","valueSize":1},{"declaration":1792,"isOffset":false,"isSlot":false,"src":"9087:11:11","valueSize":1},{"declaration":1800,"isOffset":false,"isSlot":false,"src":"9169:3:11","valueSize":1},{"declaration":1800,"isOffset":false,"isSlot":false,"src":"9180:3:11","valueSize":1},{"declaration":1839,"isOffset":false,"isSlot":false,"src":"9100:4:11","valueSize":1},{"declaration":1839,"isOffset":false,"isSlot":false,"src":"9185:4:11","valueSize":1},{"declaration":1839,"isOffset":false,"isSlot":false,"src":"9309:4:11","valueSize":1},{"declaration":1839,"isOffset":false,"isSlot":false,"src":"9332:4:11","valueSize":1},{"declaration":1839,"isOffset":false,"isSlot":false,"src":"9339:4:11","valueSize":1}],"flags":["memory-safe"],"id":1847,"nodeType":"InlineAssembly","src":"8978:384:11"},{"expression":{"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1848,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"9425:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1849,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1798,"src":"9432:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1850,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"9439:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9432:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9425:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1853,"nodeType":"ExpressionStatement","src":"9425:18:11"},{"assignments":[1855],"declarations":[{"constant":false,"id":1855,"mutability":"mutable","name":"inverse","nameLocation":"9786:7:11","nodeType":"VariableDeclaration","scope":1919,"src":"9778:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"9778:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1862,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9797:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1857,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"9801:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9797:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9796:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9816:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9796:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9778:39:11"},{"expression":{"id":1869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1863,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10034:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10045:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1865,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10049:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1866,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10063:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10049:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10034:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1870,"nodeType":"ExpressionStatement","src":"10034:36:11"},{"expression":{"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1871,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10104:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10115:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1873,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10119:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1874,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10133:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10119:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10115:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10104:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1878,"nodeType":"ExpressionStatement","src":"10104:36:11"},{"expression":{"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1879,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10176:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10187:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1881,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10191:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1882,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10205:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10191:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10187:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10176:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1886,"nodeType":"ExpressionStatement","src":"10176:36:11"},{"expression":{"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1887,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10247:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10258:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1889,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10262:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1890,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10276:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10262:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10258:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10247:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1894,"nodeType":"ExpressionStatement","src":"10247:36:11"},{"expression":{"id":1901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1895,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10320:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10331:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1897,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10335:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1898,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10349:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10335:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10331:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10320:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1902,"nodeType":"ExpressionStatement","src":"10320:36:11"},{"expression":{"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1903,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10394:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10405:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"10409:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1906,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10423:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10409:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10405:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10394:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1910,"nodeType":"ExpressionStatement","src":"10394:36:11"},{"expression":{"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1911,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"10875:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1912,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"10884:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1913,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"10890:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10884:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10875:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1916,"nodeType":"ExpressionStatement","src":"10875:22:11"},{"expression":{"id":1917,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"10918:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1796,"id":1918,"nodeType":"Return","src":"10911:13:11"}]}]},"documentation":{"id":1786,"nodeType":"StructuredDocumentation","src":"6941:312:11","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":1921,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7267:6:11","nodeType":"FunctionDefinition","parameters":{"id":1793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1788,"mutability":"mutable","name":"x","nameLocation":"7282:1:11","nodeType":"VariableDeclaration","scope":1921,"src":"7274:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1787,"name":"uint256","nodeType":"ElementaryTypeName","src":"7274:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1790,"mutability":"mutable","name":"y","nameLocation":"7293:1:11","nodeType":"VariableDeclaration","scope":1921,"src":"7285:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1789,"name":"uint256","nodeType":"ElementaryTypeName","src":"7285:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1792,"mutability":"mutable","name":"denominator","nameLocation":"7304:11:11","nodeType":"VariableDeclaration","scope":1921,"src":"7296:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1791,"name":"uint256","nodeType":"ElementaryTypeName","src":"7296:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7273:43:11"},"returnParameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1795,"mutability":"mutable","name":"result","nameLocation":"7348:6:11","nodeType":"VariableDeclaration","scope":1921,"src":"7340:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1794,"name":"uint256","nodeType":"ElementaryTypeName","src":"7340:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7339:16:11"},"scope":3036,"src":"7258:3683:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1957,"nodeType":"Block","src":"11180:128:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1937,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"11204:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1938,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"11207:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1939,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1928,"src":"11210:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1936,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1921,1958],"referencedDeclaration":1921,"src":"11197:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11197:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1944,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"11258:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":1943,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"11241:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1406_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11241:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1947,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"11278:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1948,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"11281:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1949,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1928,"src":"11284:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1946,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11271:6:11","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11271:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11299:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11271:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11241:59:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":1941,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"11225:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11234:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"11225:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:76:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11197:104:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1935,"id":1956,"nodeType":"Return","src":"11190:111:11"}]},"documentation":{"id":1922,"nodeType":"StructuredDocumentation","src":"10947:118:11","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1958,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11079:6:11","nodeType":"FunctionDefinition","parameters":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1924,"mutability":"mutable","name":"x","nameLocation":"11094:1:11","nodeType":"VariableDeclaration","scope":1958,"src":"11086:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1923,"name":"uint256","nodeType":"ElementaryTypeName","src":"11086:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1926,"mutability":"mutable","name":"y","nameLocation":"11105:1:11","nodeType":"VariableDeclaration","scope":1958,"src":"11097:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"11097:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1928,"mutability":"mutable","name":"denominator","nameLocation":"11116:11:11","nodeType":"VariableDeclaration","scope":1958,"src":"11108:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1927,"name":"uint256","nodeType":"ElementaryTypeName","src":"11108:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1931,"mutability":"mutable","name":"rounding","nameLocation":"11138:8:11","nodeType":"VariableDeclaration","scope":1958,"src":"11129:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":1930,"nodeType":"UserDefinedTypeName","pathNode":{"id":1929,"name":"Rounding","nameLocations":["11129:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"11129:8:11"},"referencedDeclaration":1406,"src":"11129:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11085:62:11"},"returnParameters":{"id":1935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1958,"src":"11171:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"11171:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11170:9:11"},"scope":3036,"src":"11070:238:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2007,"nodeType":"Block","src":"11516:245:11","statements":[{"id":2006,"nodeType":"UncheckedBlock","src":"11526:229:11","statements":[{"assignments":[1971,1973],"declarations":[{"constant":false,"id":1971,"mutability":"mutable","name":"high","nameLocation":"11559:4:11","nodeType":"VariableDeclaration","scope":2006,"src":"11551:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1970,"name":"uint256","nodeType":"ElementaryTypeName","src":"11551:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1973,"mutability":"mutable","name":"low","nameLocation":"11573:3:11","nodeType":"VariableDeclaration","scope":2006,"src":"11565:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1972,"name":"uint256","nodeType":"ElementaryTypeName","src":"11565:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1978,"initialValue":{"arguments":[{"id":1975,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"11587:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1976,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"11590:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1974,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"11580:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11580:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11550:42:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1979,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1971,"src":"11610:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1981,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"11623:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11618:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11610:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1992,"nodeType":"IfStatement","src":"11606:86:11","trueBody":{"id":1991,"nodeType":"Block","src":"11626:66:11","statements":[{"expression":{"arguments":[{"expression":{"id":1987,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"11656:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11662:14:11","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1345,"src":"11656:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1984,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"11644:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":1986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11650:5:11","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"11644:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11644:33:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1990,"nodeType":"ExpressionStatement","src":"11644:33:11"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1993,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1971,"src":"11713:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":1996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":1994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11722:3:11","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1995,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"11728:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11722:7:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":1997,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11721:9:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11713:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1999,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11712:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2000,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1973,"src":"11735:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2001,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1965,"src":"11742:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11735:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11712:32:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1969,"id":2005,"nodeType":"Return","src":"11705:39:11"}]}]},"documentation":{"id":1959,"nodeType":"StructuredDocumentation","src":"11314:111:11","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":2008,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11439:6:11","nodeType":"FunctionDefinition","parameters":{"id":1966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"x","nameLocation":"11454:1:11","nodeType":"VariableDeclaration","scope":2008,"src":"11446:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1960,"name":"uint256","nodeType":"ElementaryTypeName","src":"11446:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1963,"mutability":"mutable","name":"y","nameLocation":"11465:1:11","nodeType":"VariableDeclaration","scope":2008,"src":"11457:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1962,"name":"uint256","nodeType":"ElementaryTypeName","src":"11457:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1965,"mutability":"mutable","name":"n","nameLocation":"11474:1:11","nodeType":"VariableDeclaration","scope":2008,"src":"11468:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1964,"name":"uint8","nodeType":"ElementaryTypeName","src":"11468:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11445:31:11"},"returnParameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"result","nameLocation":"11508:6:11","nodeType":"VariableDeclaration","scope":2008,"src":"11500:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"11500:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11499:16:11"},"scope":3036,"src":"11430:331:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2046,"nodeType":"Block","src":"11979:113:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2024,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"12003:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2025,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"12006:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2026,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"12009:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2023,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[2008,2047],"referencedDeclaration":2008,"src":"11996:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":2027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11996:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2031,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"12047:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":2030,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"12030:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1406_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12030:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2034,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"12067:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2035,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"12070:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12073:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2037,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"12078:1:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12073:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2033,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12060:6:11","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12060:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12083:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12060:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12030:54:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2028,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"12014:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12023:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"12014:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:71:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11996:89:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2022,"id":2045,"nodeType":"Return","src":"11989:96:11"}]},"documentation":{"id":2009,"nodeType":"StructuredDocumentation","src":"11767:109:11","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":2047,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11890:6:11","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2011,"mutability":"mutable","name":"x","nameLocation":"11905:1:11","nodeType":"VariableDeclaration","scope":2047,"src":"11897:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2010,"name":"uint256","nodeType":"ElementaryTypeName","src":"11897:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2013,"mutability":"mutable","name":"y","nameLocation":"11916:1:11","nodeType":"VariableDeclaration","scope":2047,"src":"11908:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2012,"name":"uint256","nodeType":"ElementaryTypeName","src":"11908:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2015,"mutability":"mutable","name":"n","nameLocation":"11925:1:11","nodeType":"VariableDeclaration","scope":2047,"src":"11919:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2014,"name":"uint8","nodeType":"ElementaryTypeName","src":"11919:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2018,"mutability":"mutable","name":"rounding","nameLocation":"11937:8:11","nodeType":"VariableDeclaration","scope":2047,"src":"11928:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":2017,"nodeType":"UserDefinedTypeName","pathNode":{"id":2016,"name":"Rounding","nameLocations":["11928:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"11928:8:11"},"referencedDeclaration":1406,"src":"11928:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11896:50:11"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2047,"src":"11970:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2020,"name":"uint256","nodeType":"ElementaryTypeName","src":"11970:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11969:9:11"},"scope":3036,"src":"11881:211:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2143,"nodeType":"Block","src":"12726:1849:11","statements":[{"id":2142,"nodeType":"UncheckedBlock","src":"12736:1833:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2057,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"12764:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12769:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12764:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2062,"nodeType":"IfStatement","src":"12760:20:11","trueBody":{"expression":{"hexValue":"30","id":2060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12779:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2056,"id":2061,"nodeType":"Return","src":"12772:8:11"}},{"assignments":[2064],"declarations":[{"constant":false,"id":2064,"mutability":"mutable","name":"remainder","nameLocation":"13259:9:11","nodeType":"VariableDeclaration","scope":2142,"src":"13251:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2063,"name":"uint256","nodeType":"ElementaryTypeName","src":"13251:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2068,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"13271:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":2066,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"13275:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13271:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13251:25:11"},{"assignments":[2070],"declarations":[{"constant":false,"id":2070,"mutability":"mutable","name":"gcd","nameLocation":"13298:3:11","nodeType":"VariableDeclaration","scope":2142,"src":"13290:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2069,"name":"uint256","nodeType":"ElementaryTypeName","src":"13290:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2072,"initialValue":{"id":2071,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"13304:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13290:15:11"},{"assignments":[2074],"declarations":[{"constant":false,"id":2074,"mutability":"mutable","name":"x","nameLocation":"13448:1:11","nodeType":"VariableDeclaration","scope":2142,"src":"13441:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2073,"name":"int256","nodeType":"ElementaryTypeName","src":"13441:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2076,"initialValue":{"hexValue":"30","id":2075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13441:12:11"},{"assignments":[2078],"declarations":[{"constant":false,"id":2078,"mutability":"mutable","name":"y","nameLocation":"13474:1:11","nodeType":"VariableDeclaration","scope":2142,"src":"13467:8:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2077,"name":"int256","nodeType":"ElementaryTypeName","src":"13467:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2080,"initialValue":{"hexValue":"31","id":2079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13478:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13467:12:11"},{"body":{"id":2117,"nodeType":"Block","src":"13517:882:11","statements":[{"assignments":[2085],"declarations":[{"constant":false,"id":2085,"mutability":"mutable","name":"quotient","nameLocation":"13543:8:11","nodeType":"VariableDeclaration","scope":2117,"src":"13535:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2084,"name":"uint256","nodeType":"ElementaryTypeName","src":"13535:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2089,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2086,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"13554:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2087,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"13560:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13554:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13535:34:11"},{"expression":{"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2090,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"13589:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2091,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"13594:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2092,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13588:16:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":2093,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"13694:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2094,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"13939:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2095,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"13945:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2096,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"13957:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13945:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13939:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:376:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13588:395:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2101,"nodeType":"ExpressionStatement","src":"13588:395:11"},{"expression":{"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2102,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"14003:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":2103,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"14006:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2104,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14002:6:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":2105,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"14088:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2106,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"14342:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2107,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"14346:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":2110,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"14357:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14350:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2108,"name":"int256","nodeType":"ElementaryTypeName","src":"14350:6:11","typeDescriptions":{}}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14350:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14346:20:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14342:24:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14011:373:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"14002:382:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2116,"nodeType":"ExpressionStatement","src":"14002:382:11"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2081,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"13501:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13514:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13501:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2118,"nodeType":"WhileStatement","src":"13494:905:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2119,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2070,"src":"14417:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14424:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14417:8:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2124,"nodeType":"IfStatement","src":"14413:22:11","trueBody":{"expression":{"hexValue":"30","id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14434:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2056,"id":2123,"nodeType":"Return","src":"14427:8:11"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2126,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"14486:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14490:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14486:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2129,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"14493:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14505:2:11","subExpression":{"id":2132,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"14506:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14497:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2130,"name":"uint256","nodeType":"ElementaryTypeName","src":"14497:7:11","typeDescriptions":{}}},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14497:11:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14493:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":2138,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"14518:1:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":2137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14510:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2136,"name":"uint256","nodeType":"ElementaryTypeName","src":"14510:7:11","typeDescriptions":{}}},"id":2139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14510:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2125,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"14478:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":2140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14478:43:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2056,"id":2141,"nodeType":"Return","src":"14471:50:11"}]}]},"documentation":{"id":2048,"nodeType":"StructuredDocumentation","src":"12098:553:11","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":2144,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12665:6:11","nodeType":"FunctionDefinition","parameters":{"id":2053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"a","nameLocation":"12680:1:11","nodeType":"VariableDeclaration","scope":2144,"src":"12672:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2049,"name":"uint256","nodeType":"ElementaryTypeName","src":"12672:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2052,"mutability":"mutable","name":"n","nameLocation":"12691:1:11","nodeType":"VariableDeclaration","scope":2144,"src":"12683:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2051,"name":"uint256","nodeType":"ElementaryTypeName","src":"12683:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12671:22:11"},"returnParameters":{"id":2056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2144,"src":"12717:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2054,"name":"uint256","nodeType":"ElementaryTypeName","src":"12717:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12716:9:11"},"scope":3036,"src":"12656:1919:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2164,"nodeType":"Block","src":"15175:82:11","statements":[{"id":2163,"nodeType":"UncheckedBlock","src":"15185:66:11","statements":[{"expression":{"arguments":[{"id":2156,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"15228:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2157,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"15231:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":2158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15235:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15231:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2160,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"15238:1:11","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":2154,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"15216:4:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3036_$","typeString":"type(library Math)"}},"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15221:6:11","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":2201,"src":"15216:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15216:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2153,"id":2162,"nodeType":"Return","src":"15209:31:11"}]}]},"documentation":{"id":2145,"nodeType":"StructuredDocumentation","src":"14581:514:11","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":2165,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15109:11:11","nodeType":"FunctionDefinition","parameters":{"id":2150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2147,"mutability":"mutable","name":"a","nameLocation":"15129:1:11","nodeType":"VariableDeclaration","scope":2165,"src":"15121:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2146,"name":"uint256","nodeType":"ElementaryTypeName","src":"15121:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2149,"mutability":"mutable","name":"p","nameLocation":"15140:1:11","nodeType":"VariableDeclaration","scope":2165,"src":"15132:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2148,"name":"uint256","nodeType":"ElementaryTypeName","src":"15132:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15120:22:11"},"returnParameters":{"id":2153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2165,"src":"15166:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2151,"name":"uint256","nodeType":"ElementaryTypeName","src":"15166:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15165:9:11"},"scope":3036,"src":"15100:157:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2200,"nodeType":"Block","src":"16027:174:11","statements":[{"assignments":[2178,2180],"declarations":[{"constant":false,"id":2178,"mutability":"mutable","name":"success","nameLocation":"16043:7:11","nodeType":"VariableDeclaration","scope":2200,"src":"16038:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2177,"name":"bool","nodeType":"ElementaryTypeName","src":"16038:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2180,"mutability":"mutable","name":"result","nameLocation":"16060:6:11","nodeType":"VariableDeclaration","scope":2200,"src":"16052:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2179,"name":"uint256","nodeType":"ElementaryTypeName","src":"16052:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2186,"initialValue":{"arguments":[{"id":2182,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"16080:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2183,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"16083:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2184,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"16086:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2181,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[2225,2307],"referencedDeclaration":2225,"src":"16070:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":2185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16070:18:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16037:51:11"},{"condition":{"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16102:8:11","subExpression":{"id":2187,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"16103:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2197,"nodeType":"IfStatement","src":"16098:74:11","trueBody":{"id":2196,"nodeType":"Block","src":"16112:60:11","statements":[{"expression":{"arguments":[{"expression":{"id":2192,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"16138:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":2193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16144:16:11","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"16138:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2189,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"16126:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16132:5:11","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"16126:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16126:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2195,"nodeType":"ExpressionStatement","src":"16126:35:11"}]}},{"expression":{"id":2198,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"16188:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2176,"id":2199,"nodeType":"Return","src":"16181:13:11"}]},"documentation":{"id":2166,"nodeType":"StructuredDocumentation","src":"15263:678:11","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":2201,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15955:6:11","nodeType":"FunctionDefinition","parameters":{"id":2173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2168,"mutability":"mutable","name":"b","nameLocation":"15970:1:11","nodeType":"VariableDeclaration","scope":2201,"src":"15962:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2167,"name":"uint256","nodeType":"ElementaryTypeName","src":"15962:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2170,"mutability":"mutable","name":"e","nameLocation":"15981:1:11","nodeType":"VariableDeclaration","scope":2201,"src":"15973:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2169,"name":"uint256","nodeType":"ElementaryTypeName","src":"15973:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2172,"mutability":"mutable","name":"m","nameLocation":"15992:1:11","nodeType":"VariableDeclaration","scope":2201,"src":"15984:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"15984:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15961:33:11"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2201,"src":"16018:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"16018:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16017:9:11"},"scope":3036,"src":"15946:255:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2224,"nodeType":"Block","src":"17055:1493:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2215,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"17069:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17074:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17069:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2222,"nodeType":"IfStatement","src":"17065:29:11","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17085:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17092:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17084:10:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2214,"id":2221,"nodeType":"Return","src":"17077:17:11"}},{"AST":{"nativeSrc":"17129:1413:11","nodeType":"YulBlock","src":"17129:1413:11","statements":[{"nativeSrc":"17143:22:11","nodeType":"YulVariableDeclaration","src":"17143:22:11","value":{"arguments":[{"kind":"number","nativeSrc":"17160:4:11","nodeType":"YulLiteral","src":"17160:4:11","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17154:5:11","nodeType":"YulIdentifier","src":"17154:5:11"},"nativeSrc":"17154:11:11","nodeType":"YulFunctionCall","src":"17154:11:11"},"variables":[{"name":"ptr","nativeSrc":"17147:3:11","nodeType":"YulTypedName","src":"17147:3:11","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18073:3:11","nodeType":"YulIdentifier","src":"18073:3:11"},{"kind":"number","nativeSrc":"18078:4:11","nodeType":"YulLiteral","src":"18078:4:11","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18066:6:11","nodeType":"YulIdentifier","src":"18066:6:11"},"nativeSrc":"18066:17:11","nodeType":"YulFunctionCall","src":"18066:17:11"},"nativeSrc":"18066:17:11","nodeType":"YulExpressionStatement","src":"18066:17:11"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18107:3:11","nodeType":"YulIdentifier","src":"18107:3:11"},{"kind":"number","nativeSrc":"18112:4:11","nodeType":"YulLiteral","src":"18112:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18103:3:11","nodeType":"YulIdentifier","src":"18103:3:11"},"nativeSrc":"18103:14:11","nodeType":"YulFunctionCall","src":"18103:14:11"},{"kind":"number","nativeSrc":"18119:4:11","nodeType":"YulLiteral","src":"18119:4:11","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18096:6:11","nodeType":"YulIdentifier","src":"18096:6:11"},"nativeSrc":"18096:28:11","nodeType":"YulFunctionCall","src":"18096:28:11"},"nativeSrc":"18096:28:11","nodeType":"YulExpressionStatement","src":"18096:28:11"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18148:3:11","nodeType":"YulIdentifier","src":"18148:3:11"},{"kind":"number","nativeSrc":"18153:4:11","nodeType":"YulLiteral","src":"18153:4:11","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18144:3:11","nodeType":"YulIdentifier","src":"18144:3:11"},"nativeSrc":"18144:14:11","nodeType":"YulFunctionCall","src":"18144:14:11"},{"kind":"number","nativeSrc":"18160:4:11","nodeType":"YulLiteral","src":"18160:4:11","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18137:6:11","nodeType":"YulIdentifier","src":"18137:6:11"},"nativeSrc":"18137:28:11","nodeType":"YulFunctionCall","src":"18137:28:11"},"nativeSrc":"18137:28:11","nodeType":"YulExpressionStatement","src":"18137:28:11"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18189:3:11","nodeType":"YulIdentifier","src":"18189:3:11"},{"kind":"number","nativeSrc":"18194:4:11","nodeType":"YulLiteral","src":"18194:4:11","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18185:3:11","nodeType":"YulIdentifier","src":"18185:3:11"},"nativeSrc":"18185:14:11","nodeType":"YulFunctionCall","src":"18185:14:11"},{"name":"b","nativeSrc":"18201:1:11","nodeType":"YulIdentifier","src":"18201:1:11"}],"functionName":{"name":"mstore","nativeSrc":"18178:6:11","nodeType":"YulIdentifier","src":"18178:6:11"},"nativeSrc":"18178:25:11","nodeType":"YulFunctionCall","src":"18178:25:11"},"nativeSrc":"18178:25:11","nodeType":"YulExpressionStatement","src":"18178:25:11"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18227:3:11","nodeType":"YulIdentifier","src":"18227:3:11"},{"kind":"number","nativeSrc":"18232:4:11","nodeType":"YulLiteral","src":"18232:4:11","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18223:3:11","nodeType":"YulIdentifier","src":"18223:3:11"},"nativeSrc":"18223:14:11","nodeType":"YulFunctionCall","src":"18223:14:11"},{"name":"e","nativeSrc":"18239:1:11","nodeType":"YulIdentifier","src":"18239:1:11"}],"functionName":{"name":"mstore","nativeSrc":"18216:6:11","nodeType":"YulIdentifier","src":"18216:6:11"},"nativeSrc":"18216:25:11","nodeType":"YulFunctionCall","src":"18216:25:11"},"nativeSrc":"18216:25:11","nodeType":"YulExpressionStatement","src":"18216:25:11"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18265:3:11","nodeType":"YulIdentifier","src":"18265:3:11"},{"kind":"number","nativeSrc":"18270:4:11","nodeType":"YulLiteral","src":"18270:4:11","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18261:3:11","nodeType":"YulIdentifier","src":"18261:3:11"},"nativeSrc":"18261:14:11","nodeType":"YulFunctionCall","src":"18261:14:11"},{"name":"m","nativeSrc":"18277:1:11","nodeType":"YulIdentifier","src":"18277:1:11"}],"functionName":{"name":"mstore","nativeSrc":"18254:6:11","nodeType":"YulIdentifier","src":"18254:6:11"},"nativeSrc":"18254:25:11","nodeType":"YulFunctionCall","src":"18254:25:11"},"nativeSrc":"18254:25:11","nodeType":"YulExpressionStatement","src":"18254:25:11"},{"nativeSrc":"18441:57:11","nodeType":"YulAssignment","src":"18441:57:11","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18463:3:11","nodeType":"YulIdentifier","src":"18463:3:11"},"nativeSrc":"18463:5:11","nodeType":"YulFunctionCall","src":"18463:5:11"},{"kind":"number","nativeSrc":"18470:4:11","nodeType":"YulLiteral","src":"18470:4:11","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18476:3:11","nodeType":"YulIdentifier","src":"18476:3:11"},{"kind":"number","nativeSrc":"18481:4:11","nodeType":"YulLiteral","src":"18481:4:11","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18487:4:11","nodeType":"YulLiteral","src":"18487:4:11","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18493:4:11","nodeType":"YulLiteral","src":"18493:4:11","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18452:10:11","nodeType":"YulIdentifier","src":"18452:10:11"},"nativeSrc":"18452:46:11","nodeType":"YulFunctionCall","src":"18452:46:11"},"variableNames":[{"name":"success","nativeSrc":"18441:7:11","nodeType":"YulIdentifier","src":"18441:7:11"}]},{"nativeSrc":"18511:21:11","nodeType":"YulAssignment","src":"18511:21:11","value":{"arguments":[{"kind":"number","nativeSrc":"18527:4:11","nodeType":"YulLiteral","src":"18527:4:11","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18521:5:11","nodeType":"YulIdentifier","src":"18521:5:11"},"nativeSrc":"18521:11:11","nodeType":"YulFunctionCall","src":"18521:11:11"},"variableNames":[{"name":"result","nativeSrc":"18511:6:11","nodeType":"YulIdentifier","src":"18511:6:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":2204,"isOffset":false,"isSlot":false,"src":"18201:1:11","valueSize":1},{"declaration":2206,"isOffset":false,"isSlot":false,"src":"18239:1:11","valueSize":1},{"declaration":2208,"isOffset":false,"isSlot":false,"src":"18277:1:11","valueSize":1},{"declaration":2213,"isOffset":false,"isSlot":false,"src":"18511:6:11","valueSize":1},{"declaration":2211,"isOffset":false,"isSlot":false,"src":"18441:7:11","valueSize":1}],"flags":["memory-safe"],"id":2223,"nodeType":"InlineAssembly","src":"17104:1438:11"}]},"documentation":{"id":2202,"nodeType":"StructuredDocumentation","src":"16207:738:11","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":2225,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16959:9:11","nodeType":"FunctionDefinition","parameters":{"id":2209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2204,"mutability":"mutable","name":"b","nameLocation":"16977:1:11","nodeType":"VariableDeclaration","scope":2225,"src":"16969:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2203,"name":"uint256","nodeType":"ElementaryTypeName","src":"16969:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2206,"mutability":"mutable","name":"e","nameLocation":"16988:1:11","nodeType":"VariableDeclaration","scope":2225,"src":"16980:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2205,"name":"uint256","nodeType":"ElementaryTypeName","src":"16980:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2208,"mutability":"mutable","name":"m","nameLocation":"16999:1:11","nodeType":"VariableDeclaration","scope":2225,"src":"16991:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2207,"name":"uint256","nodeType":"ElementaryTypeName","src":"16991:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16968:33:11"},"returnParameters":{"id":2214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2211,"mutability":"mutable","name":"success","nameLocation":"17030:7:11","nodeType":"VariableDeclaration","scope":2225,"src":"17025:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2210,"name":"bool","nodeType":"ElementaryTypeName","src":"17025:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2213,"mutability":"mutable","name":"result","nameLocation":"17047:6:11","nodeType":"VariableDeclaration","scope":2225,"src":"17039:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"17039:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17024:30:11"},"scope":3036,"src":"16950:1598:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2260,"nodeType":"Block","src":"18745:179:11","statements":[{"assignments":[2238,2240],"declarations":[{"constant":false,"id":2238,"mutability":"mutable","name":"success","nameLocation":"18761:7:11","nodeType":"VariableDeclaration","scope":2260,"src":"18756:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2237,"name":"bool","nodeType":"ElementaryTypeName","src":"18756:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2240,"mutability":"mutable","name":"result","nameLocation":"18783:6:11","nodeType":"VariableDeclaration","scope":2260,"src":"18770:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2239,"name":"bytes","nodeType":"ElementaryTypeName","src":"18770:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2246,"initialValue":{"arguments":[{"id":2242,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2228,"src":"18803:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2243,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2230,"src":"18806:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2244,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"18809:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2241,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[2225,2307],"referencedDeclaration":2307,"src":"18793:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18793:18:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18755:56:11"},{"condition":{"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18825:8:11","subExpression":{"id":2247,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"18826:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2257,"nodeType":"IfStatement","src":"18821:74:11","trueBody":{"id":2256,"nodeType":"Block","src":"18835:60:11","statements":[{"expression":{"arguments":[{"expression":{"id":2252,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"18861:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18867:16:11","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1349,"src":"18861:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2249,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"18849:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1382_$","typeString":"type(library Panic)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18855:5:11","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"18849:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18849:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2255,"nodeType":"ExpressionStatement","src":"18849:35:11"}]}},{"expression":{"id":2258,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"18911:6:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2236,"id":2259,"nodeType":"Return","src":"18904:13:11"}]},"documentation":{"id":2226,"nodeType":"StructuredDocumentation","src":"18554:85:11","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":2261,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18653:6:11","nodeType":"FunctionDefinition","parameters":{"id":2233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2228,"mutability":"mutable","name":"b","nameLocation":"18673:1:11","nodeType":"VariableDeclaration","scope":2261,"src":"18660:14:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2227,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2230,"mutability":"mutable","name":"e","nameLocation":"18689:1:11","nodeType":"VariableDeclaration","scope":2261,"src":"18676:14:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2229,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2232,"mutability":"mutable","name":"m","nameLocation":"18705:1:11","nodeType":"VariableDeclaration","scope":2261,"src":"18692:14:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2231,"name":"bytes","nodeType":"ElementaryTypeName","src":"18692:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18659:48:11"},"returnParameters":{"id":2236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2261,"src":"18731:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2234,"name":"bytes","nodeType":"ElementaryTypeName","src":"18731:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18730:14:11"},"scope":3036,"src":"18644:280:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2306,"nodeType":"Block","src":"19178:771:11","statements":[{"condition":{"arguments":[{"id":2276,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"19203:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2275,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"19192:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":2277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19192:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2285,"nodeType":"IfStatement","src":"19188:47:11","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19215:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":2281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19232:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19222:9:11","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2279,"name":"bytes","nodeType":"ElementaryTypeName","src":"19226:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19222:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2283,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19214:21:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":2274,"id":2284,"nodeType":"Return","src":"19207:28:11"}},{"assignments":[2287],"declarations":[{"constant":false,"id":2287,"mutability":"mutable","name":"mLen","nameLocation":"19254:4:11","nodeType":"VariableDeclaration","scope":2306,"src":"19246:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2286,"name":"uint256","nodeType":"ElementaryTypeName","src":"19246:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2290,"initialValue":{"expression":{"id":2288,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"19261:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19263:6:11","memberName":"length","nodeType":"MemberAccess","src":"19261:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19246:23:11"},{"expression":{"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2291,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"19351:6:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2294,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"19377:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19379:6:11","memberName":"length","nodeType":"MemberAccess","src":"19377:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2296,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"19387:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19389:6:11","memberName":"length","nodeType":"MemberAccess","src":"19387:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2298,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"19397:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2299,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"19403:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2300,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"19406:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2301,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"19409:1:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2292,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19360:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19364:12:11","memberName":"encodePacked","nodeType":"MemberAccess","src":"19360:16:11","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19360:51:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19351:60:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2304,"nodeType":"ExpressionStatement","src":"19351:60:11"},{"AST":{"nativeSrc":"19447:496:11","nodeType":"YulBlock","src":"19447:496:11","statements":[{"nativeSrc":"19461:32:11","nodeType":"YulVariableDeclaration","src":"19461:32:11","value":{"arguments":[{"name":"result","nativeSrc":"19480:6:11","nodeType":"YulIdentifier","src":"19480:6:11"},{"kind":"number","nativeSrc":"19488:4:11","nodeType":"YulLiteral","src":"19488:4:11","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19476:3:11","nodeType":"YulIdentifier","src":"19476:3:11"},"nativeSrc":"19476:17:11","nodeType":"YulFunctionCall","src":"19476:17:11"},"variables":[{"name":"dataPtr","nativeSrc":"19465:7:11","nodeType":"YulTypedName","src":"19465:7:11","type":""}]},{"nativeSrc":"19583:73:11","nodeType":"YulAssignment","src":"19583:73:11","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19605:3:11","nodeType":"YulIdentifier","src":"19605:3:11"},"nativeSrc":"19605:5:11","nodeType":"YulFunctionCall","src":"19605:5:11"},{"kind":"number","nativeSrc":"19612:4:11","nodeType":"YulLiteral","src":"19612:4:11","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19618:7:11","nodeType":"YulIdentifier","src":"19618:7:11"},{"arguments":[{"name":"result","nativeSrc":"19633:6:11","nodeType":"YulIdentifier","src":"19633:6:11"}],"functionName":{"name":"mload","nativeSrc":"19627:5:11","nodeType":"YulIdentifier","src":"19627:5:11"},"nativeSrc":"19627:13:11","nodeType":"YulFunctionCall","src":"19627:13:11"},{"name":"dataPtr","nativeSrc":"19642:7:11","nodeType":"YulIdentifier","src":"19642:7:11"},{"name":"mLen","nativeSrc":"19651:4:11","nodeType":"YulIdentifier","src":"19651:4:11"}],"functionName":{"name":"staticcall","nativeSrc":"19594:10:11","nodeType":"YulIdentifier","src":"19594:10:11"},"nativeSrc":"19594:62:11","nodeType":"YulFunctionCall","src":"19594:62:11"},"variableNames":[{"name":"success","nativeSrc":"19583:7:11","nodeType":"YulIdentifier","src":"19583:7:11"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19812:6:11","nodeType":"YulIdentifier","src":"19812:6:11"},{"name":"mLen","nativeSrc":"19820:4:11","nodeType":"YulIdentifier","src":"19820:4:11"}],"functionName":{"name":"mstore","nativeSrc":"19805:6:11","nodeType":"YulIdentifier","src":"19805:6:11"},"nativeSrc":"19805:20:11","nodeType":"YulFunctionCall","src":"19805:20:11"},"nativeSrc":"19805:20:11","nodeType":"YulExpressionStatement","src":"19805:20:11"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19908:4:11","nodeType":"YulLiteral","src":"19908:4:11","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19918:7:11","nodeType":"YulIdentifier","src":"19918:7:11"},{"name":"mLen","nativeSrc":"19927:4:11","nodeType":"YulIdentifier","src":"19927:4:11"}],"functionName":{"name":"add","nativeSrc":"19914:3:11","nodeType":"YulIdentifier","src":"19914:3:11"},"nativeSrc":"19914:18:11","nodeType":"YulFunctionCall","src":"19914:18:11"}],"functionName":{"name":"mstore","nativeSrc":"19901:6:11","nodeType":"YulIdentifier","src":"19901:6:11"},"nativeSrc":"19901:32:11","nodeType":"YulFunctionCall","src":"19901:32:11"},"nativeSrc":"19901:32:11","nodeType":"YulExpressionStatement","src":"19901:32:11"}]},"evmVersion":"prague","externalReferences":[{"declaration":2287,"isOffset":false,"isSlot":false,"src":"19651:4:11","valueSize":1},{"declaration":2287,"isOffset":false,"isSlot":false,"src":"19820:4:11","valueSize":1},{"declaration":2287,"isOffset":false,"isSlot":false,"src":"19927:4:11","valueSize":1},{"declaration":2273,"isOffset":false,"isSlot":false,"src":"19480:6:11","valueSize":1},{"declaration":2273,"isOffset":false,"isSlot":false,"src":"19633:6:11","valueSize":1},{"declaration":2273,"isOffset":false,"isSlot":false,"src":"19812:6:11","valueSize":1},{"declaration":2271,"isOffset":false,"isSlot":false,"src":"19583:7:11","valueSize":1}],"flags":["memory-safe"],"id":2305,"nodeType":"InlineAssembly","src":"19422:521:11"}]},"documentation":{"id":2262,"nodeType":"StructuredDocumentation","src":"18930:88:11","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":2307,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19032:9:11","nodeType":"FunctionDefinition","parameters":{"id":2269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2264,"mutability":"mutable","name":"b","nameLocation":"19064:1:11","nodeType":"VariableDeclaration","scope":2307,"src":"19051:14:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2263,"name":"bytes","nodeType":"ElementaryTypeName","src":"19051:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2266,"mutability":"mutable","name":"e","nameLocation":"19088:1:11","nodeType":"VariableDeclaration","scope":2307,"src":"19075:14:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2265,"name":"bytes","nodeType":"ElementaryTypeName","src":"19075:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2268,"mutability":"mutable","name":"m","nameLocation":"19112:1:11","nodeType":"VariableDeclaration","scope":2307,"src":"19099:14:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2267,"name":"bytes","nodeType":"ElementaryTypeName","src":"19099:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19041:78:11"},"returnParameters":{"id":2274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2271,"mutability":"mutable","name":"success","nameLocation":"19148:7:11","nodeType":"VariableDeclaration","scope":2307,"src":"19143:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2270,"name":"bool","nodeType":"ElementaryTypeName","src":"19143:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2273,"mutability":"mutable","name":"result","nameLocation":"19170:6:11","nodeType":"VariableDeclaration","scope":2307,"src":"19157:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2272,"name":"bytes","nodeType":"ElementaryTypeName","src":"19157:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19142:35:11"},"scope":3036,"src":"19023:926:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2339,"nodeType":"Block","src":"20104:176:11","statements":[{"body":{"id":2335,"nodeType":"Block","src":"20161:92:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2326,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"20179:9:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2328,"indexExpression":{"id":2327,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"20189:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20179:12:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20195:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20179:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2334,"nodeType":"IfStatement","src":"20175:68:11","trueBody":{"id":2333,"nodeType":"Block","src":"20198:45:11","statements":[{"expression":{"hexValue":"66616c7365","id":2331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20223:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2314,"id":2332,"nodeType":"Return","src":"20216:12:11"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2319,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"20134:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2320,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"20138:9:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20148:6:11","memberName":"length","nodeType":"MemberAccess","src":"20138:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20134:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2336,"initializationExpression":{"assignments":[2316],"declarations":[{"constant":false,"id":2316,"mutability":"mutable","name":"i","nameLocation":"20127:1:11","nodeType":"VariableDeclaration","scope":2336,"src":"20119:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2315,"name":"uint256","nodeType":"ElementaryTypeName","src":"20119:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2318,"initialValue":{"hexValue":"30","id":2317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20131:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20119:13:11"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20156:3:11","subExpression":{"id":2323,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"20158:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2325,"nodeType":"ExpressionStatement","src":"20156:3:11"},"nodeType":"ForStatement","src":"20114:139:11"},{"expression":{"hexValue":"74727565","id":2337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20269:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2314,"id":2338,"nodeType":"Return","src":"20262:11:11"}]},"documentation":{"id":2308,"nodeType":"StructuredDocumentation","src":"19955:72:11","text":" @dev Returns whether the provided byte array is zero."},"id":2340,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20041:10:11","nodeType":"FunctionDefinition","parameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2310,"mutability":"mutable","name":"byteArray","nameLocation":"20065:9:11","nodeType":"VariableDeclaration","scope":2340,"src":"20052:22:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2309,"name":"bytes","nodeType":"ElementaryTypeName","src":"20052:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20051:24:11"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2340,"src":"20098:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2312,"name":"bool","nodeType":"ElementaryTypeName","src":"20098:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20097:6:11"},"scope":3036,"src":"20032:248:11","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2558,"nodeType":"Block","src":"20640:5124:11","statements":[{"id":2557,"nodeType":"UncheckedBlock","src":"20650:5108:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2348,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"20744:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":2349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20749:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20744:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2354,"nodeType":"IfStatement","src":"20740:53:11","trueBody":{"id":2353,"nodeType":"Block","src":"20752:41:11","statements":[{"expression":{"id":2351,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"20777:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2347,"id":2352,"nodeType":"Return","src":"20770:8:11"}]}},{"assignments":[2356],"declarations":[{"constant":false,"id":2356,"mutability":"mutable","name":"aa","nameLocation":"21728:2:11","nodeType":"VariableDeclaration","scope":2557,"src":"21720:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2355,"name":"uint256","nodeType":"ElementaryTypeName","src":"21720:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2358,"initialValue":{"id":2357,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"21733:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21720:14:11"},{"assignments":[2360],"declarations":[{"constant":false,"id":2360,"mutability":"mutable","name":"xn","nameLocation":"21756:2:11","nodeType":"VariableDeclaration","scope":2557,"src":"21748:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2359,"name":"uint256","nodeType":"ElementaryTypeName","src":"21748:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2362,"initialValue":{"hexValue":"31","id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21761:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21748:14:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2363,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"21781:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":2366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21788:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":2365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21793:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21788:8:11","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":2367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21787:10:11","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21781:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2378,"nodeType":"IfStatement","src":"21777:92:11","trueBody":{"id":2377,"nodeType":"Block","src":"21799:70:11","statements":[{"expression":{"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2369,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"21817:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21824:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21817:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2372,"nodeType":"ExpressionStatement","src":"21817:10:11"},{"expression":{"id":2375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2373,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"21845:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":2374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21852:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21845:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2376,"nodeType":"ExpressionStatement","src":"21845:9:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2379,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"21886:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":2382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21893:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":2381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21898:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21893:7:11","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":2383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21892:9:11","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21886:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2394,"nodeType":"IfStatement","src":"21882:90:11","trueBody":{"id":2393,"nodeType":"Block","src":"21903:69:11","statements":[{"expression":{"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2385,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"21921:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21928:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21921:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2388,"nodeType":"ExpressionStatement","src":"21921:9:11"},{"expression":{"id":2391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2389,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"21948:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":2390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21955:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21948:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2392,"nodeType":"ExpressionStatement","src":"21948:9:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2395,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"21989:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":2398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21996:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22001:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21996:7:11","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":2399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21995:9:11","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21989:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2410,"nodeType":"IfStatement","src":"21985:90:11","trueBody":{"id":2409,"nodeType":"Block","src":"22006:69:11","statements":[{"expression":{"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2401,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22024:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22031:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22024:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2404,"nodeType":"ExpressionStatement","src":"22024:9:11"},{"expression":{"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2405,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22051:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":2406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22058:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22051:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2408,"nodeType":"ExpressionStatement","src":"22051:9:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2411,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22092:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22099:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":2413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22104:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22099:7:11","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":2415,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22098:9:11","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22092:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2426,"nodeType":"IfStatement","src":"22088:89:11","trueBody":{"id":2425,"nodeType":"Block","src":"22109:68:11","statements":[{"expression":{"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2417,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22127:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22134:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22127:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2420,"nodeType":"ExpressionStatement","src":"22127:9:11"},{"expression":{"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2421,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22154:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":2422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22161:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22154:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2424,"nodeType":"ExpressionStatement","src":"22154:8:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2427,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22194:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":2430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22201:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22206:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22201:6:11","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":2431,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22200:8:11","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22194:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2442,"nodeType":"IfStatement","src":"22190:87:11","trueBody":{"id":2441,"nodeType":"Block","src":"22210:67:11","statements":[{"expression":{"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2433,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22228:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22235:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22228:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2436,"nodeType":"ExpressionStatement","src":"22228:8:11"},{"expression":{"id":2439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2437,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22254:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22261:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22254:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2440,"nodeType":"ExpressionStatement","src":"22254:8:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2443,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22294:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":2446,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22301:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22306:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22301:6:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":2447,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22300:8:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22294:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2458,"nodeType":"IfStatement","src":"22290:87:11","trueBody":{"id":2457,"nodeType":"Block","src":"22310:67:11","statements":[{"expression":{"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2449,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22328:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22335:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22328:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2452,"nodeType":"ExpressionStatement","src":"22328:8:11"},{"expression":{"id":2455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2453,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22354:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":2454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22361:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22354:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2456,"nodeType":"ExpressionStatement","src":"22354:8:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2459,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"22394:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":2462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22401:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22406:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22401:6:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":2463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22400:8:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22394:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2470,"nodeType":"IfStatement","src":"22390:61:11","trueBody":{"id":2469,"nodeType":"Block","src":"22410:41:11","statements":[{"expression":{"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2465,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22428:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22435:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22428:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2468,"nodeType":"ExpressionStatement","src":"22428:8:11"}]}},{"expression":{"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2471,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22871:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22877:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2473,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"22881:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22877:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2475,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22876:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22888:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22876:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22871:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2479,"nodeType":"ExpressionStatement","src":"22871:18:11"},{"expression":{"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2480,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24776:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2481,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24782:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2482,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"24787:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2483,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24791:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24787:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24782:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24781:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24798:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24781:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24776:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2490,"nodeType":"ExpressionStatement","src":"24776:23:11"},{"expression":{"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2491,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24885:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2492,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24891:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2493,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"24896:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2494,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24900:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24896:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24891:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24890:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24907:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24890:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24885:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2501,"nodeType":"ExpressionStatement","src":"24885:23:11"},{"expression":{"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2502,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"24996:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2503,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25002:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2504,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"25007:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2505,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25011:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25007:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25002:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2508,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25001:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25018:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25001:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24996:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2512,"nodeType":"ExpressionStatement","src":"24996:23:11"},{"expression":{"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2513,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25105:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2514,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25111:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2515,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"25116:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2516,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25120:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25116:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25111:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2519,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25110:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25127:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25110:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25105:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2523,"nodeType":"ExpressionStatement","src":"25105:23:11"},{"expression":{"id":2533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2524,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25215:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2525,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25221:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2526,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"25226:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2527,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25230:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25226:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25221:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2530,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25220:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25237:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25220:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25215:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2534,"nodeType":"ExpressionStatement","src":"25215:23:11"},{"expression":{"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2535,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25325:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2536,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25331:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2537,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"25336:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2538,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25340:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25336:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25331:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2541,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25330:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25347:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25330:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25325:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2545,"nodeType":"ExpressionStatement","src":"25325:23:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2546,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25714:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2549,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25735:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2550,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"25740:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2551,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"25744:2:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25740:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25735:11:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2547,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"25719:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25728:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"25719:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25719:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25714:33:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2347,"id":2556,"nodeType":"Return","src":"25707:40:11"}]}]},"documentation":{"id":2341,"nodeType":"StructuredDocumentation","src":"20286:292:11","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":2559,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20592:4:11","nodeType":"FunctionDefinition","parameters":{"id":2344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2343,"mutability":"mutable","name":"a","nameLocation":"20605:1:11","nodeType":"VariableDeclaration","scope":2559,"src":"20597:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2342,"name":"uint256","nodeType":"ElementaryTypeName","src":"20597:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20596:11:11"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2559,"src":"20631:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2345,"name":"uint256","nodeType":"ElementaryTypeName","src":"20631:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20630:9:11"},"scope":3036,"src":"20583:5181:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2592,"nodeType":"Block","src":"25937:171:11","statements":[{"id":2591,"nodeType":"UncheckedBlock","src":"25947:155:11","statements":[{"assignments":[2571],"declarations":[{"constant":false,"id":2571,"mutability":"mutable","name":"result","nameLocation":"25979:6:11","nodeType":"VariableDeclaration","scope":2591,"src":"25971:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2570,"name":"uint256","nodeType":"ElementaryTypeName","src":"25971:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2575,"initialValue":{"arguments":[{"id":2573,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"25993:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2572,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2559,2593],"referencedDeclaration":2559,"src":"25988:4:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25988:7:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25971:24:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2576,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"26016:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2580,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"26058:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":2579,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"26041:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1406_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26041:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"26071:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2583,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"26080:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26071:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2585,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2562,"src":"26089:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26071:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26041:49:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2577,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"26025:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26034:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"26025:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26016:75:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2569,"id":2590,"nodeType":"Return","src":"26009:82:11"}]}]},"documentation":{"id":2560,"nodeType":"StructuredDocumentation","src":"25770:86:11","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":2593,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25870:4:11","nodeType":"FunctionDefinition","parameters":{"id":2566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2562,"mutability":"mutable","name":"a","nameLocation":"25883:1:11","nodeType":"VariableDeclaration","scope":2593,"src":"25875:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2561,"name":"uint256","nodeType":"ElementaryTypeName","src":"25875:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"rounding","nameLocation":"25895:8:11","nodeType":"VariableDeclaration","scope":2593,"src":"25886:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":2564,"nodeType":"UserDefinedTypeName","pathNode":{"id":2563,"name":"Rounding","nameLocations":["25886:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"25886:8:11"},"referencedDeclaration":1406,"src":"25886:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25874:30:11"},"returnParameters":{"id":2569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2593,"src":"25928:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2567,"name":"uint256","nodeType":"ElementaryTypeName","src":"25928:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25927:9:11"},"scope":3036,"src":"25861:247:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2683,"nodeType":"Block","src":"26297:2334:11","statements":[{"expression":{"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2601,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26379:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2604,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"26399:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":2605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26403:34:11","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26399:38:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2602,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"26383:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26392:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"26383:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26383:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":2608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26442:1:11","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26383:60:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26379:64:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2611,"nodeType":"ExpressionStatement","src":"26379:64:11"},{"expression":{"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2612,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26519:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2615,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"26541:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2616,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26546:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26541:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26540:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":2619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26551:18:11","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26540:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2613,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"26524:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26533:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"26524:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26524:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":2622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26574:1:11","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26524:51:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26519:56:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2625,"nodeType":"ExpressionStatement","src":"26519:56:11"},{"expression":{"id":2638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2626,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26650:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2629,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"26672:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2630,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26677:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26672:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26671:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":2633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26682:10:11","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26671:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2627,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"26655:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26664:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"26655:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26655:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26697:1:11","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26655:43:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26650:48:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2639,"nodeType":"ExpressionStatement","src":"26650:48:11"},{"expression":{"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2640,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26773:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2643,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"26795:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2644,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26800:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26795:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2646,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26794:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":2647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26805:6:11","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26794:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2641,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"26778:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26787:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"26778:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26778:34:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26816:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26778:39:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26773:44:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2653,"nodeType":"ExpressionStatement","src":"26773:44:11"},{"expression":{"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2654,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26890:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2657,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"26912:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2658,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"26917:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26912:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26911:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":2661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26922:4:11","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26911:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2655,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"26895:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26904:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"26895:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26895:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26931:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26895:37:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26890:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2667,"nodeType":"ExpressionStatement","src":"26890:42:11"},{"expression":{"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2668,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"27004:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2671,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"27026:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2672,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2599,"src":"27031:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27026:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2674,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27025:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":2675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27036:3:11","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27025:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2669,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"27009:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27018:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"27009:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27009:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27044:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"27009:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27004:41:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2681,"nodeType":"ExpressionStatement","src":"27004:41:11"},{"AST":{"nativeSrc":"28506:119:11","nodeType":"YulBlock","src":"28506:119:11","statements":[{"nativeSrc":"28520:95:11","nodeType":"YulAssignment","src":"28520:95:11","value":{"arguments":[{"name":"r","nativeSrc":"28528:1:11","nodeType":"YulIdentifier","src":"28528:1:11"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28540:1:11","nodeType":"YulIdentifier","src":"28540:1:11"},{"name":"x","nativeSrc":"28543:1:11","nodeType":"YulIdentifier","src":"28543:1:11"}],"functionName":{"name":"shr","nativeSrc":"28536:3:11","nodeType":"YulIdentifier","src":"28536:3:11"},"nativeSrc":"28536:9:11","nodeType":"YulFunctionCall","src":"28536:9:11"},{"kind":"number","nativeSrc":"28547:66:11","nodeType":"YulLiteral","src":"28547:66:11","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28531:4:11","nodeType":"YulIdentifier","src":"28531:4:11"},"nativeSrc":"28531:83:11","nodeType":"YulFunctionCall","src":"28531:83:11"}],"functionName":{"name":"or","nativeSrc":"28525:2:11","nodeType":"YulIdentifier","src":"28525:2:11"},"nativeSrc":"28525:90:11","nodeType":"YulFunctionCall","src":"28525:90:11"},"variableNames":[{"name":"r","nativeSrc":"28520:1:11","nodeType":"YulIdentifier","src":"28520:1:11"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":2599,"isOffset":false,"isSlot":false,"src":"28520:1:11","valueSize":1},{"declaration":2599,"isOffset":false,"isSlot":false,"src":"28528:1:11","valueSize":1},{"declaration":2599,"isOffset":false,"isSlot":false,"src":"28540:1:11","valueSize":1},{"declaration":2596,"isOffset":false,"isSlot":false,"src":"28543:1:11","valueSize":1}],"flags":["memory-safe"],"id":2682,"nodeType":"InlineAssembly","src":"28481:144:11"}]},"documentation":{"id":2594,"nodeType":"StructuredDocumentation","src":"26114:119:11","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":2684,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26247:4:11","nodeType":"FunctionDefinition","parameters":{"id":2597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2596,"mutability":"mutable","name":"x","nameLocation":"26260:1:11","nodeType":"VariableDeclaration","scope":2684,"src":"26252:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2595,"name":"uint256","nodeType":"ElementaryTypeName","src":"26252:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26251:11:11"},"returnParameters":{"id":2600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2599,"mutability":"mutable","name":"r","nameLocation":"26294:1:11","nodeType":"VariableDeclaration","scope":2684,"src":"26286:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2598,"name":"uint256","nodeType":"ElementaryTypeName","src":"26286:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26285:11:11"},"scope":3036,"src":"26238:2393:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2717,"nodeType":"Block","src":"28864:175:11","statements":[{"id":2716,"nodeType":"UncheckedBlock","src":"28874:159:11","statements":[{"assignments":[2696],"declarations":[{"constant":false,"id":2696,"mutability":"mutable","name":"result","nameLocation":"28906:6:11","nodeType":"VariableDeclaration","scope":2716,"src":"28898:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2695,"name":"uint256","nodeType":"ElementaryTypeName","src":"28898:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2700,"initialValue":{"arguments":[{"id":2698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2687,"src":"28920:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2697,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2684,2718],"referencedDeclaration":2684,"src":"28915:4:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28915:11:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28898:28:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2701,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"28947:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2705,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"28989:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":2704,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"28972:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1406_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28972:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29002:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2708,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"29007:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29002:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2687,"src":"29016:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29002:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28972:49:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2702,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"28956:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28965:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"28956:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28947:75:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2694,"id":2715,"nodeType":"Return","src":"28940:82:11"}]}]},"documentation":{"id":2685,"nodeType":"StructuredDocumentation","src":"28637:142:11","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2718,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28793:4:11","nodeType":"FunctionDefinition","parameters":{"id":2691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2687,"mutability":"mutable","name":"value","nameLocation":"28806:5:11","nodeType":"VariableDeclaration","scope":2718,"src":"28798:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2686,"name":"uint256","nodeType":"ElementaryTypeName","src":"28798:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2690,"mutability":"mutable","name":"rounding","nameLocation":"28822:8:11","nodeType":"VariableDeclaration","scope":2718,"src":"28813:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":2689,"nodeType":"UserDefinedTypeName","pathNode":{"id":2688,"name":"Rounding","nameLocations":["28813:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"28813:8:11"},"referencedDeclaration":1406,"src":"28813:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28797:34:11"},"returnParameters":{"id":2694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2718,"src":"28855:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2692,"name":"uint256","nodeType":"ElementaryTypeName","src":"28855:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28854:9:11"},"scope":3036,"src":"28784:255:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2846,"nodeType":"Block","src":"29232:854:11","statements":[{"assignments":[2727],"declarations":[{"constant":false,"id":2727,"mutability":"mutable","name":"result","nameLocation":"29250:6:11","nodeType":"VariableDeclaration","scope":2846,"src":"29242:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2726,"name":"uint256","nodeType":"ElementaryTypeName","src":"29242:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2729,"initialValue":{"hexValue":"30","id":2728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29259:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29242:18:11"},{"id":2843,"nodeType":"UncheckedBlock","src":"29270:787:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29298:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29307:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29313:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29307:8:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29298:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2746,"nodeType":"IfStatement","src":"29294:103:11","trueBody":{"id":2745,"nodeType":"Block","src":"29317:80:11","statements":[{"expression":{"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29335:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29350:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29344:8:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29335:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2740,"nodeType":"ExpressionStatement","src":"29335:17:11"},{"expression":{"id":2743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"29370:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29380:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29370:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2744,"nodeType":"ExpressionStatement","src":"29370:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2747,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29414:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29423:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29429:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29423:8:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29414:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2763,"nodeType":"IfStatement","src":"29410:103:11","trueBody":{"id":2762,"nodeType":"Block","src":"29433:80:11","statements":[{"expression":{"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29451:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29460:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29466:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29460:8:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29451:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2757,"nodeType":"ExpressionStatement","src":"29451:17:11"},{"expression":{"id":2760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2758,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"29486:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29496:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29486:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2761,"nodeType":"ExpressionStatement","src":"29486:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2764,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29530:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29539:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29545:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29539:8:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29530:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2780,"nodeType":"IfStatement","src":"29526:103:11","trueBody":{"id":2779,"nodeType":"Block","src":"29549:80:11","statements":[{"expression":{"id":2773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29567:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29576:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29582:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29576:8:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29567:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2774,"nodeType":"ExpressionStatement","src":"29567:17:11"},{"expression":{"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2775,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"29602:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29612:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29602:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2778,"nodeType":"ExpressionStatement","src":"29602:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2781,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29646:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29655:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29661:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29655:7:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29646:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2797,"nodeType":"IfStatement","src":"29642:100:11","trueBody":{"id":2796,"nodeType":"Block","src":"29664:78:11","statements":[{"expression":{"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2786,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29682:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29691:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29697:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29691:7:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29682:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2791,"nodeType":"ExpressionStatement","src":"29682:16:11"},{"expression":{"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2792,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"29716:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29726:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29716:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2795,"nodeType":"ExpressionStatement","src":"29716:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2798,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29759:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29768:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29774:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29768:7:11","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29759:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2814,"nodeType":"IfStatement","src":"29755:100:11","trueBody":{"id":2813,"nodeType":"Block","src":"29777:78:11","statements":[{"expression":{"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29795:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29804:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29810:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29804:7:11","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29795:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2808,"nodeType":"ExpressionStatement","src":"29795:16:11"},{"expression":{"id":2811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2809,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"29829:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29839:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29829:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2812,"nodeType":"ExpressionStatement","src":"29829:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2815,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29872:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29881:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29887:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29881:7:11","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29872:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2831,"nodeType":"IfStatement","src":"29868:100:11","trueBody":{"id":2830,"nodeType":"Block","src":"29890:78:11","statements":[{"expression":{"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29908:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29917:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29923:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29917:7:11","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29908:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2825,"nodeType":"ExpressionStatement","src":"29908:16:11"},{"expression":{"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2826,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"29942:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29952:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29942:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2829,"nodeType":"ExpressionStatement","src":"29942:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"29985:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29994:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30000:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29994:7:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29985:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2842,"nodeType":"IfStatement","src":"29981:66:11","trueBody":{"id":2841,"nodeType":"Block","src":"30003:44:11","statements":[{"expression":{"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2837,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"30021:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30031:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30021:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2840,"nodeType":"ExpressionStatement","src":"30021:11:11"}]}}]},{"expression":{"id":2844,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"30073:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2725,"id":2845,"nodeType":"Return","src":"30066:13:11"}]},"documentation":{"id":2719,"nodeType":"StructuredDocumentation","src":"29045:120:11","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":2847,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29179:5:11","nodeType":"FunctionDefinition","parameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"mutability":"mutable","name":"value","nameLocation":"29193:5:11","nodeType":"VariableDeclaration","scope":2847,"src":"29185:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2720,"name":"uint256","nodeType":"ElementaryTypeName","src":"29185:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29184:15:11"},"returnParameters":{"id":2725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2847,"src":"29223:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2723,"name":"uint256","nodeType":"ElementaryTypeName","src":"29223:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29222:9:11"},"scope":3036,"src":"29170:916:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2880,"nodeType":"Block","src":"30321:177:11","statements":[{"id":2879,"nodeType":"UncheckedBlock","src":"30331:161:11","statements":[{"assignments":[2859],"declarations":[{"constant":false,"id":2859,"mutability":"mutable","name":"result","nameLocation":"30363:6:11","nodeType":"VariableDeclaration","scope":2879,"src":"30355:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2858,"name":"uint256","nodeType":"ElementaryTypeName","src":"30355:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2863,"initialValue":{"arguments":[{"id":2861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"30378:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2860,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2847,2881],"referencedDeclaration":2847,"src":"30372:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30372:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30355:29:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2864,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"30405:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2868,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2853,"src":"30447:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":2867,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"30430:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1406_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30430:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30460:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2871,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"30466:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30460:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"30475:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30460:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30430:50:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2865,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"30414:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30423:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"30414:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:67:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30405:76:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2857,"id":2878,"nodeType":"Return","src":"30398:83:11"}]}]},"documentation":{"id":2848,"nodeType":"StructuredDocumentation","src":"30092:143:11","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2881,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30249:5:11","nodeType":"FunctionDefinition","parameters":{"id":2854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2850,"mutability":"mutable","name":"value","nameLocation":"30263:5:11","nodeType":"VariableDeclaration","scope":2881,"src":"30255:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2849,"name":"uint256","nodeType":"ElementaryTypeName","src":"30255:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2853,"mutability":"mutable","name":"rounding","nameLocation":"30279:8:11","nodeType":"VariableDeclaration","scope":2881,"src":"30270:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":2852,"nodeType":"UserDefinedTypeName","pathNode":{"id":2851,"name":"Rounding","nameLocations":["30270:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"30270:8:11"},"referencedDeclaration":1406,"src":"30270:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30254:34:11"},"returnParameters":{"id":2857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2881,"src":"30312:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2855,"name":"uint256","nodeType":"ElementaryTypeName","src":"30312:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30311:9:11"},"scope":3036,"src":"30240:258:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2957,"nodeType":"Block","src":"30816:675:11","statements":[{"expression":{"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2889,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"30898:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2892,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"30918:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":2893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30922:34:11","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30918:38:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2890,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"30902:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30911:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"30902:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30902:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":2896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30961:1:11","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30902:60:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30898:64:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2899,"nodeType":"ExpressionStatement","src":"30898:64:11"},{"expression":{"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2900,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31038:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2903,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"31060:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2904,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31065:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31060:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2906,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31059:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":2907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31070:18:11","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31059:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2901,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"31043:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31052:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"31043:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31043:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":2910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31093:1:11","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31043:51:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31038:56:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2913,"nodeType":"ExpressionStatement","src":"31038:56:11"},{"expression":{"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2914,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31169:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2917,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"31191:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2918,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31196:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31191:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2920,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31190:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":2921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31201:10:11","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31190:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2915,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"31174:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31183:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"31174:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31174:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":2924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31216:1:11","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31174:43:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31169:48:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2927,"nodeType":"ExpressionStatement","src":"31169:48:11"},{"expression":{"id":2940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2928,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31292:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2931,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"31314:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2932,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31319:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31314:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2934,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31313:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":2935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31324:6:11","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31313:17:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2929,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"31297:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31306:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"31297:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31297:34:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":2938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31335:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31297:39:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31292:44:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2941,"nodeType":"ExpressionStatement","src":"31292:44:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2942,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31442:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":2943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31447:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31442:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31441:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2948,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"31469:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":2949,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"31474:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31469:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2951,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31468:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":2952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31479:4:11","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31468:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2946,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"31452:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31461:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"31452:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31452:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31441:43:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2888,"id":2956,"nodeType":"Return","src":"31434:50:11"}]},"documentation":{"id":2882,"nodeType":"StructuredDocumentation","src":"30504:246:11","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":2958,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30764:6:11","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2884,"mutability":"mutable","name":"x","nameLocation":"30779:1:11","nodeType":"VariableDeclaration","scope":2958,"src":"30771:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2883,"name":"uint256","nodeType":"ElementaryTypeName","src":"30771:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30770:11:11"},"returnParameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"r","nameLocation":"30813:1:11","nodeType":"VariableDeclaration","scope":2958,"src":"30805:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"30805:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30804:11:11"},"scope":3036,"src":"30755:736:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2994,"nodeType":"Block","src":"31728:184:11","statements":[{"id":2993,"nodeType":"UncheckedBlock","src":"31738:168:11","statements":[{"assignments":[2970],"declarations":[{"constant":false,"id":2970,"mutability":"mutable","name":"result","nameLocation":"31770:6:11","nodeType":"VariableDeclaration","scope":2993,"src":"31762:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2969,"name":"uint256","nodeType":"ElementaryTypeName","src":"31762:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2974,"initialValue":{"arguments":[{"id":2972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"31786:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2971,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2958,2995],"referencedDeclaration":2958,"src":"31779:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31779:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31762:30:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2975,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2970,"src":"31813:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2979,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2964,"src":"31855:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":2978,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"31838:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$1406_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31838:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2982,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2970,"src":"31874:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31884:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31874:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2985,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31873:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31868:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2961,"src":"31889:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31868:26:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31838:56:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":2976,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"31822:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$4801_$","typeString":"type(library SafeCast)"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31831:6:11","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":4800,"src":"31822:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:73:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31813:82:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2968,"id":2992,"nodeType":"Return","src":"31806:89:11"}]}]},"documentation":{"id":2959,"nodeType":"StructuredDocumentation","src":"31497:144:11","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2995,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31655:6:11","nodeType":"FunctionDefinition","parameters":{"id":2965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"value","nameLocation":"31670:5:11","nodeType":"VariableDeclaration","scope":2995,"src":"31662:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2960,"name":"uint256","nodeType":"ElementaryTypeName","src":"31662:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2964,"mutability":"mutable","name":"rounding","nameLocation":"31686:8:11","nodeType":"VariableDeclaration","scope":2995,"src":"31677:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":2963,"nodeType":"UserDefinedTypeName","pathNode":{"id":2962,"name":"Rounding","nameLocations":["31677:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"31677:8:11"},"referencedDeclaration":1406,"src":"31677:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31661:34:11"},"returnParameters":{"id":2968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2995,"src":"31719:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2966,"name":"uint256","nodeType":"ElementaryTypeName","src":"31719:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31718:9:11"},"scope":3036,"src":"31646:266:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3013,"nodeType":"Block","src":"32110:48:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3006,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2999,"src":"32133:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}],"id":3005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32127:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3004,"name":"uint8","nodeType":"ElementaryTypeName","src":"32127:5:11","typeDescriptions":{}}},"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32127:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":3008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32145:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32127:19:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32150:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32127:24:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3003,"id":3012,"nodeType":"Return","src":"32120:31:11"}]},"documentation":{"id":2996,"nodeType":"StructuredDocumentation","src":"31918:113:11","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":3014,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32045:16:11","nodeType":"FunctionDefinition","parameters":{"id":3000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2999,"mutability":"mutable","name":"rounding","nameLocation":"32071:8:11","nodeType":"VariableDeclaration","scope":3014,"src":"32062:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"},"typeName":{"id":2998,"nodeType":"UserDefinedTypeName","pathNode":{"id":2997,"name":"Rounding","nameLocations":["32062:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":1406,"src":"32062:8:11"},"referencedDeclaration":1406,"src":"32062:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1406","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32061:19:11"},"returnParameters":{"id":3003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3014,"src":"32104:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3001,"name":"bool","nodeType":"ElementaryTypeName","src":"32104:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32103:6:11"},"scope":3036,"src":"32036:122:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3034,"nodeType":"Block","src":"32301:59:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3023,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"32326:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32331:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"32326:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"323536","id":3026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32334:3:11","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323535","id":3027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32339:3:11","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":3029,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"32350:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3028,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2684,2718],"referencedDeclaration":2684,"src":"32345:4:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32345:7:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"32339:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3022,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1683,"src":"32318:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32318:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3021,"id":3033,"nodeType":"Return","src":"32311:42:11"}]},"documentation":{"id":3015,"nodeType":"StructuredDocumentation","src":"32164:76:11","text":" @dev Counts the number of leading zero bits in a uint256."},"id":3035,"implemented":true,"kind":"function","modifiers":[],"name":"clz","nameLocation":"32254:3:11","nodeType":"FunctionDefinition","parameters":{"id":3018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3017,"mutability":"mutable","name":"x","nameLocation":"32266:1:11","nodeType":"VariableDeclaration","scope":3035,"src":"32258:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3016,"name":"uint256","nodeType":"ElementaryTypeName","src":"32258:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32257:11:11"},"returnParameters":{"id":3021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3035,"src":"32292:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3019,"name":"uint256","nodeType":"ElementaryTypeName","src":"32292:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32291:9:11"},"scope":3036,"src":"32245:115:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3037,"src":"281:32081:11","usedErrors":[],"usedEvents":[]}],"src":"103:32260:11"},"id":11},"npm/@openzeppelin/contracts@5.5.0/utils/math/SafeCast.sol":{"ast":{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[4801]},"id":4802,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3038,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":3039,"nodeType":"StructuredDocumentation","src":"218:550:12","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":4801,"linearizedBaseContracts":[4801],"name":"SafeCast","nameLocation":"777:8:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3040,"nodeType":"StructuredDocumentation","src":"792:68:12","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":3046,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:12","nodeType":"ErrorDefinition","parameters":{"id":3045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3042,"mutability":"mutable","name":"bits","nameLocation":"908:4:12","nodeType":"VariableDeclaration","scope":3046,"src":"902:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3041,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3044,"mutability":"mutable","name":"value","nameLocation":"922:5:12","nodeType":"VariableDeclaration","scope":3046,"src":"914:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3043,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:12"},"src":"865:64:12"},{"documentation":{"id":3047,"nodeType":"StructuredDocumentation","src":"935:75:12","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":3051,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:12","nodeType":"ErrorDefinition","parameters":{"id":3050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3049,"mutability":"mutable","name":"value","nameLocation":"1056:5:12","nodeType":"VariableDeclaration","scope":3051,"src":"1049:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3048,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:12"},"src":"1015:48:12"},{"documentation":{"id":3052,"nodeType":"StructuredDocumentation","src":"1069:67:12","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":3058,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:12","nodeType":"ErrorDefinition","parameters":{"id":3057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3054,"mutability":"mutable","name":"bits","nameLocation":"1183:4:12","nodeType":"VariableDeclaration","scope":3058,"src":"1177:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3053,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3056,"mutability":"mutable","name":"value","nameLocation":"1196:5:12","nodeType":"VariableDeclaration","scope":3058,"src":"1189:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3055,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:12"},"src":"1141:62:12"},{"documentation":{"id":3059,"nodeType":"StructuredDocumentation","src":"1209:75:12","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":3063,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:12","nodeType":"ErrorDefinition","parameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3061,"mutability":"mutable","name":"value","nameLocation":"1331:5:12","nodeType":"VariableDeclaration","scope":3063,"src":"1323:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3060,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:12"},"src":"1289:49:12"},{"body":{"id":3090,"nodeType":"Block","src":"1695:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"1709:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3073,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":3072,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":3076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:12","memberName":"max","nodeType":"MemberAccess","src":"1717:17:12","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3084,"nodeType":"IfStatement","src":"1705:105:12","trueBody":{"id":3083,"nodeType":"Block","src":"1736:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":3079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:12","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":3080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"1793:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3078,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"1757:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3082,"nodeType":"RevertStatement","src":"1750:49:12"}]}},{"expression":{"arguments":[{"id":3087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3066,"src":"1834:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":3085,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:12","typeDescriptions":{}}},"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":3070,"id":3089,"nodeType":"Return","src":"1819:21:12"}]},"documentation":{"id":3064,"nodeType":"StructuredDocumentation","src":"1344:280:12","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":3091,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:12","nodeType":"FunctionDefinition","parameters":{"id":3067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3066,"mutability":"mutable","name":"value","nameLocation":"1656:5:12","nodeType":"VariableDeclaration","scope":3091,"src":"1648:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3065,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:12"},"returnParameters":{"id":3070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3091,"src":"1686:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":3068,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:12","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:12"},"scope":4801,"src":"1629:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3118,"nodeType":"Block","src":"2204:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"2218:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3101,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":3100,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":3104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:12","memberName":"max","nodeType":"MemberAccess","src":"2226:17:12","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3112,"nodeType":"IfStatement","src":"2214:105:12","trueBody":{"id":3111,"nodeType":"Block","src":"2245:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":3107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:12","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":3108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"2302:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3106,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"2266:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3110,"nodeType":"RevertStatement","src":"2259:49:12"}]}},{"expression":{"arguments":[{"id":3115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"2343:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":3113,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:12","typeDescriptions":{}}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":3098,"id":3117,"nodeType":"Return","src":"2328:21:12"}]},"documentation":{"id":3092,"nodeType":"StructuredDocumentation","src":"1853:280:12","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":3119,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:12","nodeType":"FunctionDefinition","parameters":{"id":3095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3094,"mutability":"mutable","name":"value","nameLocation":"2165:5:12","nodeType":"VariableDeclaration","scope":3119,"src":"2157:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3093,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:12"},"returnParameters":{"id":3098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3119,"src":"2195:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":3096,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:12","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:12"},"scope":4801,"src":"2138:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3146,"nodeType":"Block","src":"2713:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"2727:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3129,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":3128,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:12","memberName":"max","nodeType":"MemberAccess","src":"2735:17:12","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3140,"nodeType":"IfStatement","src":"2723:105:12","trueBody":{"id":3139,"nodeType":"Block","src":"2754:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":3135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:12","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":3136,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"2811:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3134,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"2775:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3138,"nodeType":"RevertStatement","src":"2768:49:12"}]}},{"expression":{"arguments":[{"id":3143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3122,"src":"2852:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":3141,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:12","typeDescriptions":{}}},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":3126,"id":3145,"nodeType":"Return","src":"2837:21:12"}]},"documentation":{"id":3120,"nodeType":"StructuredDocumentation","src":"2362:280:12","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":3147,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:12","nodeType":"FunctionDefinition","parameters":{"id":3123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3122,"mutability":"mutable","name":"value","nameLocation":"2674:5:12","nodeType":"VariableDeclaration","scope":3147,"src":"2666:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3121,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:12"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3147,"src":"2704:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":3124,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:12","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:12"},"scope":4801,"src":"2647:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3174,"nodeType":"Block","src":"3222:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"3236:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3157,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":3156,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:12","memberName":"max","nodeType":"MemberAccess","src":"3244:17:12","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3168,"nodeType":"IfStatement","src":"3232:105:12","trueBody":{"id":3167,"nodeType":"Block","src":"3263:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":3163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:12","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":3164,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"3320:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3162,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"3284:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3166,"nodeType":"RevertStatement","src":"3277:49:12"}]}},{"expression":{"arguments":[{"id":3171,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"3361:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":3169,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:12","typeDescriptions":{}}},"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":3154,"id":3173,"nodeType":"Return","src":"3346:21:12"}]},"documentation":{"id":3148,"nodeType":"StructuredDocumentation","src":"2871:280:12","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":3175,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:12","nodeType":"FunctionDefinition","parameters":{"id":3151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3150,"mutability":"mutable","name":"value","nameLocation":"3183:5:12","nodeType":"VariableDeclaration","scope":3175,"src":"3175:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3149,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:12"},"returnParameters":{"id":3154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3175,"src":"3213:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":3152,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:12","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:12"},"scope":4801,"src":"3156:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3202,"nodeType":"Block","src":"3731:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"3745:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3185,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":3184,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":3188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:12","memberName":"max","nodeType":"MemberAccess","src":"3753:17:12","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3196,"nodeType":"IfStatement","src":"3741:105:12","trueBody":{"id":3195,"nodeType":"Block","src":"3772:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":3191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:12","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":3192,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"3829:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3190,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"3793:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3194,"nodeType":"RevertStatement","src":"3786:49:12"}]}},{"expression":{"arguments":[{"id":3199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3178,"src":"3870:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":3197,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:12","typeDescriptions":{}}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":3182,"id":3201,"nodeType":"Return","src":"3855:21:12"}]},"documentation":{"id":3176,"nodeType":"StructuredDocumentation","src":"3380:280:12","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":3203,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:12","nodeType":"FunctionDefinition","parameters":{"id":3179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3178,"mutability":"mutable","name":"value","nameLocation":"3692:5:12","nodeType":"VariableDeclaration","scope":3203,"src":"3684:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3177,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:12"},"returnParameters":{"id":3182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3203,"src":"3722:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":3180,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:12","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:12"},"scope":4801,"src":"3665:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3230,"nodeType":"Block","src":"4240:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"4254:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3213,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":3212,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":3216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:12","memberName":"max","nodeType":"MemberAccess","src":"4262:17:12","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3224,"nodeType":"IfStatement","src":"4250:105:12","trueBody":{"id":3223,"nodeType":"Block","src":"4281:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":3219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:12","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":3220,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"4338:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3218,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"4302:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3222,"nodeType":"RevertStatement","src":"4295:49:12"}]}},{"expression":{"arguments":[{"id":3227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"4379:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":3225,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:12","typeDescriptions":{}}},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":3210,"id":3229,"nodeType":"Return","src":"4364:21:12"}]},"documentation":{"id":3204,"nodeType":"StructuredDocumentation","src":"3889:280:12","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":3231,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:12","nodeType":"FunctionDefinition","parameters":{"id":3207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3206,"mutability":"mutable","name":"value","nameLocation":"4201:5:12","nodeType":"VariableDeclaration","scope":3231,"src":"4193:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3205,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:12"},"returnParameters":{"id":3210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3231,"src":"4231:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":3208,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:12","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:12"},"scope":4801,"src":"4174:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3258,"nodeType":"Block","src":"4749:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"4763:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3241,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":3240,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:12","memberName":"max","nodeType":"MemberAccess","src":"4771:17:12","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3252,"nodeType":"IfStatement","src":"4759:105:12","trueBody":{"id":3251,"nodeType":"Block","src":"4790:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":3247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:12","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":3248,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"4847:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3246,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"4811:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3250,"nodeType":"RevertStatement","src":"4804:49:12"}]}},{"expression":{"arguments":[{"id":3255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"4888:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":3253,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:12","typeDescriptions":{}}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":3238,"id":3257,"nodeType":"Return","src":"4873:21:12"}]},"documentation":{"id":3232,"nodeType":"StructuredDocumentation","src":"4398:280:12","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":3259,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:12","nodeType":"FunctionDefinition","parameters":{"id":3235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3234,"mutability":"mutable","name":"value","nameLocation":"4710:5:12","nodeType":"VariableDeclaration","scope":3259,"src":"4702:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3233,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:12"},"returnParameters":{"id":3238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3237,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3259,"src":"4740:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":3236,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:12","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:12"},"scope":4801,"src":"4683:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3286,"nodeType":"Block","src":"5258:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3267,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"5272:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3269,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":3268,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":3272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:12","memberName":"max","nodeType":"MemberAccess","src":"5280:17:12","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3280,"nodeType":"IfStatement","src":"5268:105:12","trueBody":{"id":3279,"nodeType":"Block","src":"5299:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":3275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:12","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":3276,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"5356:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3274,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"5320:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3278,"nodeType":"RevertStatement","src":"5313:49:12"}]}},{"expression":{"arguments":[{"id":3283,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"5397:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":3281,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:12","typeDescriptions":{}}},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":3266,"id":3285,"nodeType":"Return","src":"5382:21:12"}]},"documentation":{"id":3260,"nodeType":"StructuredDocumentation","src":"4907:280:12","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":3287,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:12","nodeType":"FunctionDefinition","parameters":{"id":3263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3262,"mutability":"mutable","name":"value","nameLocation":"5219:5:12","nodeType":"VariableDeclaration","scope":3287,"src":"5211:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3261,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:12"},"returnParameters":{"id":3266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3287,"src":"5249:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":3264,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:12","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:12"},"scope":4801,"src":"5192:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3314,"nodeType":"Block","src":"5767:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"5781:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3297,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":3296,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":3300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:12","memberName":"max","nodeType":"MemberAccess","src":"5789:17:12","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3308,"nodeType":"IfStatement","src":"5777:105:12","trueBody":{"id":3307,"nodeType":"Block","src":"5808:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":3303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:12","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":3304,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"5865:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3302,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"5829:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3306,"nodeType":"RevertStatement","src":"5822:49:12"}]}},{"expression":{"arguments":[{"id":3311,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"5906:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":3309,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:12","typeDescriptions":{}}},"id":3312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":3294,"id":3313,"nodeType":"Return","src":"5891:21:12"}]},"documentation":{"id":3288,"nodeType":"StructuredDocumentation","src":"5416:280:12","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":3315,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:12","nodeType":"FunctionDefinition","parameters":{"id":3291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3290,"mutability":"mutable","name":"value","nameLocation":"5728:5:12","nodeType":"VariableDeclaration","scope":3315,"src":"5720:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3289,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:12"},"returnParameters":{"id":3294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3293,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3315,"src":"5758:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":3292,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:12","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:12"},"scope":4801,"src":"5701:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3342,"nodeType":"Block","src":"6276:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"6290:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3325,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":3324,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":3328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:12","memberName":"max","nodeType":"MemberAccess","src":"6298:17:12","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3336,"nodeType":"IfStatement","src":"6286:105:12","trueBody":{"id":3335,"nodeType":"Block","src":"6317:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":3331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:12","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":3332,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"6374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3330,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"6338:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3334,"nodeType":"RevertStatement","src":"6331:49:12"}]}},{"expression":{"arguments":[{"id":3339,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"6415:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":3337,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:12","typeDescriptions":{}}},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":3322,"id":3341,"nodeType":"Return","src":"6400:21:12"}]},"documentation":{"id":3316,"nodeType":"StructuredDocumentation","src":"5925:280:12","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":3343,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:12","nodeType":"FunctionDefinition","parameters":{"id":3319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"mutability":"mutable","name":"value","nameLocation":"6237:5:12","nodeType":"VariableDeclaration","scope":3343,"src":"6229:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3317,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:12"},"returnParameters":{"id":3322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3343,"src":"6267:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":3320,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:12","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:12"},"scope":4801,"src":"6210:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3370,"nodeType":"Block","src":"6785:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"6799:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3353,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":3352,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:12","memberName":"max","nodeType":"MemberAccess","src":"6807:17:12","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3364,"nodeType":"IfStatement","src":"6795:105:12","trueBody":{"id":3363,"nodeType":"Block","src":"6826:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":3359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:12","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":3360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"6883:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3358,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"6847:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3362,"nodeType":"RevertStatement","src":"6840:49:12"}]}},{"expression":{"arguments":[{"id":3367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"6924:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":3365,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:12","typeDescriptions":{}}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":3350,"id":3369,"nodeType":"Return","src":"6909:21:12"}]},"documentation":{"id":3344,"nodeType":"StructuredDocumentation","src":"6434:280:12","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":3371,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:12","nodeType":"FunctionDefinition","parameters":{"id":3347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3346,"mutability":"mutable","name":"value","nameLocation":"6746:5:12","nodeType":"VariableDeclaration","scope":3371,"src":"6738:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3345,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:12"},"returnParameters":{"id":3350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3371,"src":"6776:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":3348,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:12","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:12"},"scope":4801,"src":"6719:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3398,"nodeType":"Block","src":"7294:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3379,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7308:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3381,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":3380,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":3384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:12","memberName":"max","nodeType":"MemberAccess","src":"7316:17:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3392,"nodeType":"IfStatement","src":"7304:105:12","trueBody":{"id":3391,"nodeType":"Block","src":"7335:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":3387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:12","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":3388,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7392:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3386,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"7356:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3390,"nodeType":"RevertStatement","src":"7349:49:12"}]}},{"expression":{"arguments":[{"id":3395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"7433:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3393,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:12","typeDescriptions":{}}},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":3378,"id":3397,"nodeType":"Return","src":"7418:21:12"}]},"documentation":{"id":3372,"nodeType":"StructuredDocumentation","src":"6943:280:12","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":3399,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:12","nodeType":"FunctionDefinition","parameters":{"id":3375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3374,"mutability":"mutable","name":"value","nameLocation":"7255:5:12","nodeType":"VariableDeclaration","scope":3399,"src":"7247:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3373,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:12"},"returnParameters":{"id":3378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3377,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3399,"src":"7285:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":3376,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:12","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:12"},"scope":4801,"src":"7228:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3426,"nodeType":"Block","src":"7803:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"7817:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":3409,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":3408,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":3412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:12","memberName":"max","nodeType":"MemberAccess","src":"7825:17:12","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3420,"nodeType":"IfStatement","src":"7813:105:12","trueBody":{"id":3419,"nodeType":"Block","src":"7844:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":3415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:12","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":3416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"7901:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3414,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"7865:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3418,"nodeType":"RevertStatement","src":"7858:49:12"}]}},{"expression":{"arguments":[{"id":3423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3402,"src":"7942:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":3421,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:12","typeDescriptions":{}}},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":3406,"id":3425,"nodeType":"Return","src":"7927:21:12"}]},"documentation":{"id":3400,"nodeType":"StructuredDocumentation","src":"7452:280:12","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":3427,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:12","nodeType":"FunctionDefinition","parameters":{"id":3403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3402,"mutability":"mutable","name":"value","nameLocation":"7764:5:12","nodeType":"VariableDeclaration","scope":3427,"src":"7756:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3401,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:12"},"returnParameters":{"id":3406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3427,"src":"7794:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":3404,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:12","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:12"},"scope":4801,"src":"7737:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3454,"nodeType":"Block","src":"8312:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3430,"src":"8326:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":3437,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":3436,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":3440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:12","memberName":"max","nodeType":"MemberAccess","src":"8334:17:12","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3448,"nodeType":"IfStatement","src":"8322:105:12","trueBody":{"id":3447,"nodeType":"Block","src":"8353:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":3443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:12","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":3444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3430,"src":"8410:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3442,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"8374:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3446,"nodeType":"RevertStatement","src":"8367:49:12"}]}},{"expression":{"arguments":[{"id":3451,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3430,"src":"8451:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":3449,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:12","typeDescriptions":{}}},"id":3452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":3434,"id":3453,"nodeType":"Return","src":"8436:21:12"}]},"documentation":{"id":3428,"nodeType":"StructuredDocumentation","src":"7961:280:12","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":3455,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:12","nodeType":"FunctionDefinition","parameters":{"id":3431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3430,"mutability":"mutable","name":"value","nameLocation":"8273:5:12","nodeType":"VariableDeclaration","scope":3455,"src":"8265:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3429,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:12"},"returnParameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3455,"src":"8303:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":3432,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:12","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:12"},"scope":4801,"src":"8246:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3482,"nodeType":"Block","src":"8821:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3463,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3458,"src":"8835:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":3465,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":3464,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":3468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:12","memberName":"max","nodeType":"MemberAccess","src":"8843:17:12","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3476,"nodeType":"IfStatement","src":"8831:105:12","trueBody":{"id":3475,"nodeType":"Block","src":"8862:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":3471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:12","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":3472,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3458,"src":"8919:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3470,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"8883:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3474,"nodeType":"RevertStatement","src":"8876:49:12"}]}},{"expression":{"arguments":[{"id":3479,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3458,"src":"8960:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":3477,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:12","typeDescriptions":{}}},"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":3462,"id":3481,"nodeType":"Return","src":"8945:21:12"}]},"documentation":{"id":3456,"nodeType":"StructuredDocumentation","src":"8470:280:12","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":3483,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:12","nodeType":"FunctionDefinition","parameters":{"id":3459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3458,"mutability":"mutable","name":"value","nameLocation":"8782:5:12","nodeType":"VariableDeclaration","scope":3483,"src":"8774:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3457,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:12"},"returnParameters":{"id":3462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3483,"src":"8812:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":3460,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:12","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:12"},"scope":4801,"src":"8755:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3510,"nodeType":"Block","src":"9330:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3491,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"9344:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3493,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":3492,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":3496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:12","memberName":"max","nodeType":"MemberAccess","src":"9352:17:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3504,"nodeType":"IfStatement","src":"9340:105:12","trueBody":{"id":3503,"nodeType":"Block","src":"9371:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":3499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":3500,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"9428:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3498,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"9392:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3502,"nodeType":"RevertStatement","src":"9385:49:12"}]}},{"expression":{"arguments":[{"id":3507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3486,"src":"9469:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":3505,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:12","typeDescriptions":{}}},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":3490,"id":3509,"nodeType":"Return","src":"9454:21:12"}]},"documentation":{"id":3484,"nodeType":"StructuredDocumentation","src":"8979:280:12","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":3511,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:12","nodeType":"FunctionDefinition","parameters":{"id":3487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3486,"mutability":"mutable","name":"value","nameLocation":"9291:5:12","nodeType":"VariableDeclaration","scope":3511,"src":"9283:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3485,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:12"},"returnParameters":{"id":3490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3489,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3511,"src":"9321:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3488,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:12","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:12"},"scope":4801,"src":"9264:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3538,"nodeType":"Block","src":"9839:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"9853:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":3521,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":3520,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":3524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:12","memberName":"max","nodeType":"MemberAccess","src":"9861:17:12","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3532,"nodeType":"IfStatement","src":"9849:105:12","trueBody":{"id":3531,"nodeType":"Block","src":"9880:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":3527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:12","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":3528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"9937:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3526,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"9901:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3530,"nodeType":"RevertStatement","src":"9894:49:12"}]}},{"expression":{"arguments":[{"id":3535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"9978:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":3533,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:12","typeDescriptions":{}}},"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":3518,"id":3537,"nodeType":"Return","src":"9963:21:12"}]},"documentation":{"id":3512,"nodeType":"StructuredDocumentation","src":"9488:280:12","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":3539,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:12","nodeType":"FunctionDefinition","parameters":{"id":3515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3514,"mutability":"mutable","name":"value","nameLocation":"9800:5:12","nodeType":"VariableDeclaration","scope":3539,"src":"9792:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3513,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:12"},"returnParameters":{"id":3518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3517,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3539,"src":"9830:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":3516,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:12","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:12"},"scope":4801,"src":"9773:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3566,"nodeType":"Block","src":"10348:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3547,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"10362:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":3549,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":3548,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":3552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:12","memberName":"max","nodeType":"MemberAccess","src":"10370:17:12","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3560,"nodeType":"IfStatement","src":"10358:105:12","trueBody":{"id":3559,"nodeType":"Block","src":"10389:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:12","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":3556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"10446:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3554,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"10410:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3558,"nodeType":"RevertStatement","src":"10403:49:12"}]}},{"expression":{"arguments":[{"id":3563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3542,"src":"10487:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":3561,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:12","typeDescriptions":{}}},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":3546,"id":3565,"nodeType":"Return","src":"10472:21:12"}]},"documentation":{"id":3540,"nodeType":"StructuredDocumentation","src":"9997:280:12","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":3567,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:12","nodeType":"FunctionDefinition","parameters":{"id":3543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3542,"mutability":"mutable","name":"value","nameLocation":"10309:5:12","nodeType":"VariableDeclaration","scope":3567,"src":"10301:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3541,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:12"},"returnParameters":{"id":3546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3567,"src":"10339:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":3544,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:12","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:12"},"scope":4801,"src":"10282:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3594,"nodeType":"Block","src":"10857:152:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3575,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"10871:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":3577,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":3576,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":3580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:12","memberName":"max","nodeType":"MemberAccess","src":"10879:17:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3588,"nodeType":"IfStatement","src":"10867:105:12","trueBody":{"id":3587,"nodeType":"Block","src":"10898:74:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:12","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":3584,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"10955:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3582,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"10919:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3586,"nodeType":"RevertStatement","src":"10912:49:12"}]}},{"expression":{"arguments":[{"id":3591,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"10996:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":3589,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:12","typeDescriptions":{}}},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":3574,"id":3593,"nodeType":"Return","src":"10981:21:12"}]},"documentation":{"id":3568,"nodeType":"StructuredDocumentation","src":"10506:280:12","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":3595,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:12","nodeType":"FunctionDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3570,"mutability":"mutable","name":"value","nameLocation":"10818:5:12","nodeType":"VariableDeclaration","scope":3595,"src":"10810:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3569,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:12"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3595,"src":"10848:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":3572,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:12","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:12"},"scope":4801,"src":"10791:218:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3622,"nodeType":"Block","src":"11360:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3603,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"11374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":3605,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":3604,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":3608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:12","memberName":"max","nodeType":"MemberAccess","src":"11382:16:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3616,"nodeType":"IfStatement","src":"11370:103:12","trueBody":{"id":3615,"nodeType":"Block","src":"11400:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":3611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:12","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":3612,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"11456:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3610,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"11421:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3614,"nodeType":"RevertStatement","src":"11414:48:12"}]}},{"expression":{"arguments":[{"id":3619,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3598,"src":"11496:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":3617,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:12","typeDescriptions":{}}},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":3602,"id":3621,"nodeType":"Return","src":"11482:20:12"}]},"documentation":{"id":3596,"nodeType":"StructuredDocumentation","src":"11015:276:12","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":3623,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:12","nodeType":"FunctionDefinition","parameters":{"id":3599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3598,"mutability":"mutable","name":"value","nameLocation":"11322:5:12","nodeType":"VariableDeclaration","scope":3623,"src":"11314:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3597,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:12"},"returnParameters":{"id":3602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3623,"src":"11352:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":3600,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:12","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:12"},"scope":4801,"src":"11296:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3650,"nodeType":"Block","src":"11860:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3631,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11874:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":3633,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":3632,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":3636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:12","memberName":"max","nodeType":"MemberAccess","src":"11882:16:12","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3644,"nodeType":"IfStatement","src":"11870:103:12","trueBody":{"id":3643,"nodeType":"Block","src":"11900:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":3639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:12","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":3640,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11956:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3638,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"11921:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3642,"nodeType":"RevertStatement","src":"11914:48:12"}]}},{"expression":{"arguments":[{"id":3647,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"11996:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":3645,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:12","typeDescriptions":{}}},"id":3648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":3630,"id":3649,"nodeType":"Return","src":"11982:20:12"}]},"documentation":{"id":3624,"nodeType":"StructuredDocumentation","src":"11515:276:12","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":3651,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:12","nodeType":"FunctionDefinition","parameters":{"id":3627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3626,"mutability":"mutable","name":"value","nameLocation":"11822:5:12","nodeType":"VariableDeclaration","scope":3651,"src":"11814:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3625,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:12"},"returnParameters":{"id":3630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3651,"src":"11852:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":3628,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:12","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:12"},"scope":4801,"src":"11796:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3678,"nodeType":"Block","src":"12360:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3659,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"12374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":3661,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":3660,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":3664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:12","memberName":"max","nodeType":"MemberAccess","src":"12382:16:12","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3672,"nodeType":"IfStatement","src":"12370:103:12","trueBody":{"id":3671,"nodeType":"Block","src":"12400:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":3667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:12","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":3668,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"12456:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3666,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"12421:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3670,"nodeType":"RevertStatement","src":"12414:48:12"}]}},{"expression":{"arguments":[{"id":3675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"12496:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":3673,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:12","typeDescriptions":{}}},"id":3676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":3658,"id":3677,"nodeType":"Return","src":"12482:20:12"}]},"documentation":{"id":3652,"nodeType":"StructuredDocumentation","src":"12015:276:12","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":3679,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:12","nodeType":"FunctionDefinition","parameters":{"id":3655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3654,"mutability":"mutable","name":"value","nameLocation":"12322:5:12","nodeType":"VariableDeclaration","scope":3679,"src":"12314:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3653,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:12"},"returnParameters":{"id":3658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3679,"src":"12352:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":3656,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:12","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:12"},"scope":4801,"src":"12296:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3706,"nodeType":"Block","src":"12860:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3687,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"12874:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":3689,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":3688,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":3692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:12","memberName":"max","nodeType":"MemberAccess","src":"12882:16:12","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3700,"nodeType":"IfStatement","src":"12870:103:12","trueBody":{"id":3699,"nodeType":"Block","src":"12900:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":3695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:12","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":3696,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"12956:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3694,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"12921:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3698,"nodeType":"RevertStatement","src":"12914:48:12"}]}},{"expression":{"arguments":[{"id":3703,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3682,"src":"12996:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":3701,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:12","typeDescriptions":{}}},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":3686,"id":3705,"nodeType":"Return","src":"12982:20:12"}]},"documentation":{"id":3680,"nodeType":"StructuredDocumentation","src":"12515:276:12","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":3707,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:12","nodeType":"FunctionDefinition","parameters":{"id":3683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3682,"mutability":"mutable","name":"value","nameLocation":"12822:5:12","nodeType":"VariableDeclaration","scope":3707,"src":"12814:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3681,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:12"},"returnParameters":{"id":3686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3707,"src":"12852:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":3684,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:12","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:12"},"scope":4801,"src":"12796:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3734,"nodeType":"Block","src":"13360:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"13374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3717,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":3716,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:12","memberName":"max","nodeType":"MemberAccess","src":"13382:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3728,"nodeType":"IfStatement","src":"13370:103:12","trueBody":{"id":3727,"nodeType":"Block","src":"13400:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":3723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":3724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"13456:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3722,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"13421:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3726,"nodeType":"RevertStatement","src":"13414:48:12"}]}},{"expression":{"arguments":[{"id":3731,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"13496:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3729,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:12","typeDescriptions":{}}},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3714,"id":3733,"nodeType":"Return","src":"13482:20:12"}]},"documentation":{"id":3708,"nodeType":"StructuredDocumentation","src":"13015:276:12","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":3735,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:12","nodeType":"FunctionDefinition","parameters":{"id":3711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3710,"mutability":"mutable","name":"value","nameLocation":"13322:5:12","nodeType":"VariableDeclaration","scope":3735,"src":"13314:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3709,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:12"},"returnParameters":{"id":3714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3713,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3735,"src":"13352:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3712,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:12"},"scope":4801,"src":"13296:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3762,"nodeType":"Block","src":"13860:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3743,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3738,"src":"13874:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":3745,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":3744,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":3748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:12","memberName":"max","nodeType":"MemberAccess","src":"13882:16:12","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3756,"nodeType":"IfStatement","src":"13870:103:12","trueBody":{"id":3755,"nodeType":"Block","src":"13900:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":3751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:12","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":3752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3738,"src":"13956:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3750,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"13921:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3754,"nodeType":"RevertStatement","src":"13914:48:12"}]}},{"expression":{"arguments":[{"id":3759,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3738,"src":"13996:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":3757,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:12","typeDescriptions":{}}},"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":3742,"id":3761,"nodeType":"Return","src":"13982:20:12"}]},"documentation":{"id":3736,"nodeType":"StructuredDocumentation","src":"13515:276:12","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":3763,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:12","nodeType":"FunctionDefinition","parameters":{"id":3739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3738,"mutability":"mutable","name":"value","nameLocation":"13822:5:12","nodeType":"VariableDeclaration","scope":3763,"src":"13814:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3737,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:12"},"returnParameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3741,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3763,"src":"13852:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":3740,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:12","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:12"},"scope":4801,"src":"13796:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3790,"nodeType":"Block","src":"14360:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3771,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"14374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":3773,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":3772,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":3776,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:12","memberName":"max","nodeType":"MemberAccess","src":"14382:16:12","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3784,"nodeType":"IfStatement","src":"14370:103:12","trueBody":{"id":3783,"nodeType":"Block","src":"14400:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":3779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:12","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":3780,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"14456:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3778,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"14421:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3782,"nodeType":"RevertStatement","src":"14414:48:12"}]}},{"expression":{"arguments":[{"id":3787,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3766,"src":"14496:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":3785,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:12","typeDescriptions":{}}},"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":3770,"id":3789,"nodeType":"Return","src":"14482:20:12"}]},"documentation":{"id":3764,"nodeType":"StructuredDocumentation","src":"14015:276:12","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":3791,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:12","nodeType":"FunctionDefinition","parameters":{"id":3767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"mutability":"mutable","name":"value","nameLocation":"14322:5:12","nodeType":"VariableDeclaration","scope":3791,"src":"14314:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3765,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:12"},"returnParameters":{"id":3770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3791,"src":"14352:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":3768,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:12","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:12"},"scope":4801,"src":"14296:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3818,"nodeType":"Block","src":"14860:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3799,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"14874:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":3801,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":3800,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:12","memberName":"max","nodeType":"MemberAccess","src":"14882:16:12","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3812,"nodeType":"IfStatement","src":"14870:103:12","trueBody":{"id":3811,"nodeType":"Block","src":"14900:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":3807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:12","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":3808,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"14956:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3806,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"14921:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3810,"nodeType":"RevertStatement","src":"14914:48:12"}]}},{"expression":{"arguments":[{"id":3815,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"14996:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":3813,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:12","typeDescriptions":{}}},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":3798,"id":3817,"nodeType":"Return","src":"14982:20:12"}]},"documentation":{"id":3792,"nodeType":"StructuredDocumentation","src":"14515:276:12","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":3819,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:12","nodeType":"FunctionDefinition","parameters":{"id":3795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3794,"mutability":"mutable","name":"value","nameLocation":"14822:5:12","nodeType":"VariableDeclaration","scope":3819,"src":"14814:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3793,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:12"},"returnParameters":{"id":3798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3819,"src":"14852:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":3796,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:12","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:12"},"scope":4801,"src":"14796:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3846,"nodeType":"Block","src":"15360:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3829,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":3828,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":3832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:12","memberName":"max","nodeType":"MemberAccess","src":"15382:16:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3840,"nodeType":"IfStatement","src":"15370:103:12","trueBody":{"id":3839,"nodeType":"Block","src":"15400:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":3835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":3836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15456:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3834,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"15421:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3838,"nodeType":"RevertStatement","src":"15414:48:12"}]}},{"expression":{"arguments":[{"id":3843,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15496:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3841,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:12","typeDescriptions":{}}},"id":3844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":3826,"id":3845,"nodeType":"Return","src":"15482:20:12"}]},"documentation":{"id":3820,"nodeType":"StructuredDocumentation","src":"15015:276:12","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":3847,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:12","nodeType":"FunctionDefinition","parameters":{"id":3823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3822,"mutability":"mutable","name":"value","nameLocation":"15322:5:12","nodeType":"VariableDeclaration","scope":3847,"src":"15314:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3821,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:12"},"returnParameters":{"id":3826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3825,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3847,"src":"15352:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3824,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:12"},"scope":4801,"src":"15296:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3874,"nodeType":"Block","src":"15860:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3855,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"15874:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":3857,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":3856,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":3860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:12","memberName":"max","nodeType":"MemberAccess","src":"15882:16:12","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3868,"nodeType":"IfStatement","src":"15870:103:12","trueBody":{"id":3867,"nodeType":"Block","src":"15900:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":3863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:12","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":3864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"15956:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3862,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"15921:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3866,"nodeType":"RevertStatement","src":"15914:48:12"}]}},{"expression":{"arguments":[{"id":3871,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"15996:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":3869,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:12","typeDescriptions":{}}},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":3854,"id":3873,"nodeType":"Return","src":"15982:20:12"}]},"documentation":{"id":3848,"nodeType":"StructuredDocumentation","src":"15515:276:12","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":3875,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:12","nodeType":"FunctionDefinition","parameters":{"id":3851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3850,"mutability":"mutable","name":"value","nameLocation":"15822:5:12","nodeType":"VariableDeclaration","scope":3875,"src":"15814:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3849,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:12"},"returnParameters":{"id":3854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3875,"src":"15852:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":3852,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:12","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:12"},"scope":4801,"src":"15796:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3902,"nodeType":"Block","src":"16360:149:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3883,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"16374:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":3885,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":3884,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:12","memberName":"max","nodeType":"MemberAccess","src":"16382:16:12","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3896,"nodeType":"IfStatement","src":"16370:103:12","trueBody":{"id":3895,"nodeType":"Block","src":"16400:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":3891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:12","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":3892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"16456:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3890,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"16421:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3894,"nodeType":"RevertStatement","src":"16414:48:12"}]}},{"expression":{"arguments":[{"id":3899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3878,"src":"16496:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":3897,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:12","typeDescriptions":{}}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":3882,"id":3901,"nodeType":"Return","src":"16482:20:12"}]},"documentation":{"id":3876,"nodeType":"StructuredDocumentation","src":"16015:276:12","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":3903,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:12","nodeType":"FunctionDefinition","parameters":{"id":3879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3878,"mutability":"mutable","name":"value","nameLocation":"16322:5:12","nodeType":"VariableDeclaration","scope":3903,"src":"16314:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3877,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:12"},"returnParameters":{"id":3882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3903,"src":"16352:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3880,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:12","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:12"},"scope":4801,"src":"16296:213:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3930,"nodeType":"Block","src":"16854:146:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3911,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"16868:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":3914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3913,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":3912,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:12","memberName":"max","nodeType":"MemberAccess","src":"16876:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3924,"nodeType":"IfStatement","src":"16864:101:12","trueBody":{"id":3923,"nodeType":"Block","src":"16893:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":3919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":3920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"16948:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3918,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"16914:30:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3922,"nodeType":"RevertStatement","src":"16907:47:12"}]}},{"expression":{"arguments":[{"id":3927,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3906,"src":"16987:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3925,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:12","typeDescriptions":{}}},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3910,"id":3929,"nodeType":"Return","src":"16974:19:12"}]},"documentation":{"id":3904,"nodeType":"StructuredDocumentation","src":"16515:272:12","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":3931,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:12","nodeType":"FunctionDefinition","parameters":{"id":3907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3906,"mutability":"mutable","name":"value","nameLocation":"16817:5:12","nodeType":"VariableDeclaration","scope":3931,"src":"16809:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3905,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:12"},"returnParameters":{"id":3910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3931,"src":"16847:5:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3908,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:12"},"scope":4801,"src":"16792:208:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3953,"nodeType":"Block","src":"17236:128:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"17250:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":3940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3947,"nodeType":"IfStatement","src":"17246:81:12","trueBody":{"id":3946,"nodeType":"Block","src":"17261:66:12","statements":[{"errorCall":{"arguments":[{"id":3943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"17310:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3942,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3051,"src":"17282:27:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3945,"nodeType":"RevertStatement","src":"17275:41:12"}]}},{"expression":{"arguments":[{"id":3950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"17351:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3948,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:12","typeDescriptions":{}}},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3938,"id":3952,"nodeType":"Return","src":"17336:21:12"}]},"documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"17006:160:12","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":3954,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:12","nodeType":"FunctionDefinition","parameters":{"id":3935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"value","nameLocation":"17197:5:12","nodeType":"VariableDeclaration","scope":3954,"src":"17190:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3933,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:12"},"returnParameters":{"id":3938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3937,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3954,"src":"17227:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3936,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:12"},"scope":4801,"src":"17171:193:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3979,"nodeType":"Block","src":"17761:150:12","statements":[{"expression":{"id":3967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3962,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"17771:10:12","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3965,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3957,"src":"17791:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":3963,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:12","typeDescriptions":{}}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:12","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":3968,"nodeType":"ExpressionStatement","src":"17771:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3969,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3960,"src":"17811:10:12","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3970,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3957,"src":"17825:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3978,"nodeType":"IfStatement","src":"17807:98:12","trueBody":{"id":3977,"nodeType":"Block","src":"17832:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":3973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:12","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":3974,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3957,"src":"17888:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3972,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"17853:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3976,"nodeType":"RevertStatement","src":"17846:48:12"}]}}]},"documentation":{"id":3955,"nodeType":"StructuredDocumentation","src":"17370:312:12","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":3980,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:12","nodeType":"FunctionDefinition","parameters":{"id":3958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3957,"mutability":"mutable","name":"value","nameLocation":"17712:5:12","nodeType":"VariableDeclaration","scope":3980,"src":"17705:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3956,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:12"},"returnParameters":{"id":3961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3960,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:12","nodeType":"VariableDeclaration","scope":3980,"src":"17742:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":3959,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:12","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:12"},"scope":4801,"src":"17687:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4005,"nodeType":"Block","src":"18308:150:12","statements":[{"expression":{"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3988,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"18318:10:12","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"18338:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":3989,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:12","typeDescriptions":{}}},"id":3992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:12","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":3994,"nodeType":"ExpressionStatement","src":"18318:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3995,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3986,"src":"18358:10:12","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"18372:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4004,"nodeType":"IfStatement","src":"18354:98:12","trueBody":{"id":4003,"nodeType":"Block","src":"18379:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":3999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:12","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":4000,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"18435:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3998,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"18400:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4002,"nodeType":"RevertStatement","src":"18393:48:12"}]}}]},"documentation":{"id":3981,"nodeType":"StructuredDocumentation","src":"17917:312:12","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":4006,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:12","nodeType":"FunctionDefinition","parameters":{"id":3984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3983,"mutability":"mutable","name":"value","nameLocation":"18259:5:12","nodeType":"VariableDeclaration","scope":4006,"src":"18252:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3982,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:12"},"returnParameters":{"id":3987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3986,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:12","nodeType":"VariableDeclaration","scope":4006,"src":"18289:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":3985,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:12","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:12"},"scope":4801,"src":"18234:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4031,"nodeType":"Block","src":"18855:150:12","statements":[{"expression":{"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4014,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4012,"src":"18865:10:12","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4017,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"18885:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":4015,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:12","typeDescriptions":{}}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:12","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":4020,"nodeType":"ExpressionStatement","src":"18865:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4021,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4012,"src":"18905:10:12","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"18919:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4030,"nodeType":"IfStatement","src":"18901:98:12","trueBody":{"id":4029,"nodeType":"Block","src":"18926:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":4025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:12","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":4026,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"18982:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4024,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"18947:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4028,"nodeType":"RevertStatement","src":"18940:48:12"}]}}]},"documentation":{"id":4007,"nodeType":"StructuredDocumentation","src":"18464:312:12","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":4032,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:12","nodeType":"FunctionDefinition","parameters":{"id":4010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4009,"mutability":"mutable","name":"value","nameLocation":"18806:5:12","nodeType":"VariableDeclaration","scope":4032,"src":"18799:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4008,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:12"},"returnParameters":{"id":4013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4012,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:12","nodeType":"VariableDeclaration","scope":4032,"src":"18836:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":4011,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:12","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:12"},"scope":4801,"src":"18781:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4057,"nodeType":"Block","src":"19402:150:12","statements":[{"expression":{"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4040,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"19412:10:12","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4035,"src":"19432:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":4041,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:12","typeDescriptions":{}}},"id":4044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:12","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":4046,"nodeType":"ExpressionStatement","src":"19412:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4047,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"19452:10:12","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4048,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4035,"src":"19466:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4056,"nodeType":"IfStatement","src":"19448:98:12","trueBody":{"id":4055,"nodeType":"Block","src":"19473:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":4051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:12","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":4052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4035,"src":"19529:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4050,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"19494:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4054,"nodeType":"RevertStatement","src":"19487:48:12"}]}}]},"documentation":{"id":4033,"nodeType":"StructuredDocumentation","src":"19011:312:12","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":4058,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:12","nodeType":"FunctionDefinition","parameters":{"id":4036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4035,"mutability":"mutable","name":"value","nameLocation":"19353:5:12","nodeType":"VariableDeclaration","scope":4058,"src":"19346:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4034,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:12"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4038,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:12","nodeType":"VariableDeclaration","scope":4058,"src":"19383:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":4037,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:12","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:12"},"scope":4801,"src":"19328:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4083,"nodeType":"Block","src":"19949:150:12","statements":[{"expression":{"id":4071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4066,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"19959:10:12","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"19979:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":4067,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:12","typeDescriptions":{}}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:12","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":4072,"nodeType":"ExpressionStatement","src":"19959:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4073,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"19999:10:12","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"20013:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4082,"nodeType":"IfStatement","src":"19995:98:12","trueBody":{"id":4081,"nodeType":"Block","src":"20020:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":4077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:12","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":4078,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"20076:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4076,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"20041:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4080,"nodeType":"RevertStatement","src":"20034:48:12"}]}}]},"documentation":{"id":4059,"nodeType":"StructuredDocumentation","src":"19558:312:12","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":4084,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:12","nodeType":"FunctionDefinition","parameters":{"id":4062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4061,"mutability":"mutable","name":"value","nameLocation":"19900:5:12","nodeType":"VariableDeclaration","scope":4084,"src":"19893:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4060,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:12"},"returnParameters":{"id":4065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4064,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:12","nodeType":"VariableDeclaration","scope":4084,"src":"19930:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":4063,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:12","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:12"},"scope":4801,"src":"19875:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4109,"nodeType":"Block","src":"20496:150:12","statements":[{"expression":{"id":4097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4092,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4090,"src":"20506:10:12","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"20526:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":4093,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:12","typeDescriptions":{}}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:12","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":4098,"nodeType":"ExpressionStatement","src":"20506:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4099,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4090,"src":"20546:10:12","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4100,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"20560:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4108,"nodeType":"IfStatement","src":"20542:98:12","trueBody":{"id":4107,"nodeType":"Block","src":"20567:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:12","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":4104,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"20623:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4102,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"20588:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4106,"nodeType":"RevertStatement","src":"20581:48:12"}]}}]},"documentation":{"id":4085,"nodeType":"StructuredDocumentation","src":"20105:312:12","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":4110,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:12","nodeType":"FunctionDefinition","parameters":{"id":4088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4087,"mutability":"mutable","name":"value","nameLocation":"20447:5:12","nodeType":"VariableDeclaration","scope":4110,"src":"20440:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4086,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:12"},"returnParameters":{"id":4091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:12","nodeType":"VariableDeclaration","scope":4110,"src":"20477:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":4089,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:12","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:12"},"scope":4801,"src":"20422:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4135,"nodeType":"Block","src":"21043:150:12","statements":[{"expression":{"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4118,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4116,"src":"21053:10:12","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4121,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"21073:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":4119,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:12","typeDescriptions":{}}},"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:12","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":4124,"nodeType":"ExpressionStatement","src":"21053:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4125,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4116,"src":"21093:10:12","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4126,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"21107:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4134,"nodeType":"IfStatement","src":"21089:98:12","trueBody":{"id":4133,"nodeType":"Block","src":"21114:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":4129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:12","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":4130,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"21170:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4128,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"21135:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4132,"nodeType":"RevertStatement","src":"21128:48:12"}]}}]},"documentation":{"id":4111,"nodeType":"StructuredDocumentation","src":"20652:312:12","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":4136,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:12","nodeType":"FunctionDefinition","parameters":{"id":4114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4113,"mutability":"mutable","name":"value","nameLocation":"20994:5:12","nodeType":"VariableDeclaration","scope":4136,"src":"20987:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4112,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:12"},"returnParameters":{"id":4117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4116,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:12","nodeType":"VariableDeclaration","scope":4136,"src":"21024:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":4115,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:12","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:12"},"scope":4801,"src":"20969:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4161,"nodeType":"Block","src":"21590:150:12","statements":[{"expression":{"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4144,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"21600:10:12","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4147,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"21620:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":4145,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:12","typeDescriptions":{}}},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:12","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":4150,"nodeType":"ExpressionStatement","src":"21600:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4151,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"21640:10:12","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4152,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"21654:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4160,"nodeType":"IfStatement","src":"21636:98:12","trueBody":{"id":4159,"nodeType":"Block","src":"21661:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":4155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:12","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":4156,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"21717:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4154,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"21682:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4158,"nodeType":"RevertStatement","src":"21675:48:12"}]}}]},"documentation":{"id":4137,"nodeType":"StructuredDocumentation","src":"21199:312:12","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":4162,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:12","nodeType":"FunctionDefinition","parameters":{"id":4140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4139,"mutability":"mutable","name":"value","nameLocation":"21541:5:12","nodeType":"VariableDeclaration","scope":4162,"src":"21534:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4138,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:12"},"returnParameters":{"id":4143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4142,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:12","nodeType":"VariableDeclaration","scope":4162,"src":"21571:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":4141,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:12","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:12"},"scope":4801,"src":"21516:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4187,"nodeType":"Block","src":"22137:150:12","statements":[{"expression":{"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4170,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4168,"src":"22147:10:12","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4173,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"22167:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":4171,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:12","typeDescriptions":{}}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:12","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":4176,"nodeType":"ExpressionStatement","src":"22147:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4177,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4168,"src":"22187:10:12","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4178,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"22201:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4186,"nodeType":"IfStatement","src":"22183:98:12","trueBody":{"id":4185,"nodeType":"Block","src":"22208:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":4181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:12","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":4182,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"22264:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4180,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"22229:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4184,"nodeType":"RevertStatement","src":"22222:48:12"}]}}]},"documentation":{"id":4163,"nodeType":"StructuredDocumentation","src":"21746:312:12","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":4188,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:12","nodeType":"FunctionDefinition","parameters":{"id":4166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4165,"mutability":"mutable","name":"value","nameLocation":"22088:5:12","nodeType":"VariableDeclaration","scope":4188,"src":"22081:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4164,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:12"},"returnParameters":{"id":4169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4168,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:12","nodeType":"VariableDeclaration","scope":4188,"src":"22118:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":4167,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:12","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:12"},"scope":4801,"src":"22063:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4213,"nodeType":"Block","src":"22684:150:12","statements":[{"expression":{"id":4201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4196,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"22694:10:12","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4199,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4191,"src":"22714:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":4197,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:12","typeDescriptions":{}}},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:12","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":4202,"nodeType":"ExpressionStatement","src":"22694:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4203,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"22734:10:12","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4204,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4191,"src":"22748:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4212,"nodeType":"IfStatement","src":"22730:98:12","trueBody":{"id":4211,"nodeType":"Block","src":"22755:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":4207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:12","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":4208,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4191,"src":"22811:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4206,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"22776:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4210,"nodeType":"RevertStatement","src":"22769:48:12"}]}}]},"documentation":{"id":4189,"nodeType":"StructuredDocumentation","src":"22293:312:12","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":4214,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:12","nodeType":"FunctionDefinition","parameters":{"id":4192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4191,"mutability":"mutable","name":"value","nameLocation":"22635:5:12","nodeType":"VariableDeclaration","scope":4214,"src":"22628:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4190,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:12"},"returnParameters":{"id":4195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4194,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:12","nodeType":"VariableDeclaration","scope":4214,"src":"22665:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":4193,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:12","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:12"},"scope":4801,"src":"22610:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4239,"nodeType":"Block","src":"23231:150:12","statements":[{"expression":{"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4222,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"23241:10:12","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4225,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"23261:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":4223,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:12","typeDescriptions":{}}},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:12","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":4228,"nodeType":"ExpressionStatement","src":"23241:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4229,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"23281:10:12","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"23295:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4238,"nodeType":"IfStatement","src":"23277:98:12","trueBody":{"id":4237,"nodeType":"Block","src":"23302:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":4233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:12","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":4234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4217,"src":"23358:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4232,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"23323:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4236,"nodeType":"RevertStatement","src":"23316:48:12"}]}}]},"documentation":{"id":4215,"nodeType":"StructuredDocumentation","src":"22840:312:12","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":4240,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:12","nodeType":"FunctionDefinition","parameters":{"id":4218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4217,"mutability":"mutable","name":"value","nameLocation":"23182:5:12","nodeType":"VariableDeclaration","scope":4240,"src":"23175:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4216,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:12"},"returnParameters":{"id":4221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4220,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:12","nodeType":"VariableDeclaration","scope":4240,"src":"23212:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":4219,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:12","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:12"},"scope":4801,"src":"23157:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4265,"nodeType":"Block","src":"23778:150:12","statements":[{"expression":{"id":4253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4248,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4246,"src":"23788:10:12","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4243,"src":"23808:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":4249,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:12","typeDescriptions":{}}},"id":4252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:12","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":4254,"nodeType":"ExpressionStatement","src":"23788:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4255,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4246,"src":"23828:10:12","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4243,"src":"23842:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4264,"nodeType":"IfStatement","src":"23824:98:12","trueBody":{"id":4263,"nodeType":"Block","src":"23849:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":4259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:12","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":4260,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4243,"src":"23905:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4258,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"23870:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4262,"nodeType":"RevertStatement","src":"23863:48:12"}]}}]},"documentation":{"id":4241,"nodeType":"StructuredDocumentation","src":"23387:312:12","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":4266,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:12","nodeType":"FunctionDefinition","parameters":{"id":4244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4243,"mutability":"mutable","name":"value","nameLocation":"23729:5:12","nodeType":"VariableDeclaration","scope":4266,"src":"23722:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4242,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:12"},"returnParameters":{"id":4247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4246,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:12","nodeType":"VariableDeclaration","scope":4266,"src":"23759:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":4245,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:12","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:12"},"scope":4801,"src":"23704:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4291,"nodeType":"Block","src":"24325:150:12","statements":[{"expression":{"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4274,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4272,"src":"24335:10:12","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4277,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4269,"src":"24355:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":4275,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:12","typeDescriptions":{}}},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:12","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":4280,"nodeType":"ExpressionStatement","src":"24335:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4281,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4272,"src":"24375:10:12","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4269,"src":"24389:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4290,"nodeType":"IfStatement","src":"24371:98:12","trueBody":{"id":4289,"nodeType":"Block","src":"24396:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":4285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:12","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":4286,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4269,"src":"24452:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4284,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"24417:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4288,"nodeType":"RevertStatement","src":"24410:48:12"}]}}]},"documentation":{"id":4267,"nodeType":"StructuredDocumentation","src":"23934:312:12","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":4292,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:12","nodeType":"FunctionDefinition","parameters":{"id":4270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4269,"mutability":"mutable","name":"value","nameLocation":"24276:5:12","nodeType":"VariableDeclaration","scope":4292,"src":"24269:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4268,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:12"},"returnParameters":{"id":4273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4272,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:12","nodeType":"VariableDeclaration","scope":4292,"src":"24306:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":4271,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:12","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:12"},"scope":4801,"src":"24251:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4317,"nodeType":"Block","src":"24872:150:12","statements":[{"expression":{"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4300,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"24882:10:12","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"24902:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":4301,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:12","typeDescriptions":{}}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:12","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":4306,"nodeType":"ExpressionStatement","src":"24882:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4307,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"24922:10:12","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"24936:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4316,"nodeType":"IfStatement","src":"24918:98:12","trueBody":{"id":4315,"nodeType":"Block","src":"24943:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":4311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:12","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":4312,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"24999:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4310,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"24964:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4314,"nodeType":"RevertStatement","src":"24957:48:12"}]}}]},"documentation":{"id":4293,"nodeType":"StructuredDocumentation","src":"24481:312:12","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":4318,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:12","nodeType":"FunctionDefinition","parameters":{"id":4296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4295,"mutability":"mutable","name":"value","nameLocation":"24823:5:12","nodeType":"VariableDeclaration","scope":4318,"src":"24816:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4294,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:12"},"returnParameters":{"id":4299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4298,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:12","nodeType":"VariableDeclaration","scope":4318,"src":"24853:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":4297,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:12","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:12"},"scope":4801,"src":"24798:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4343,"nodeType":"Block","src":"25419:150:12","statements":[{"expression":{"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4326,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4324,"src":"25429:10:12","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"25449:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":4327,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:12","typeDescriptions":{}}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:12","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":4332,"nodeType":"ExpressionStatement","src":"25429:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4333,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4324,"src":"25469:10:12","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"25483:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4342,"nodeType":"IfStatement","src":"25465:98:12","trueBody":{"id":4341,"nodeType":"Block","src":"25490:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":4337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:12","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":4338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4321,"src":"25546:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4336,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"25511:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4340,"nodeType":"RevertStatement","src":"25504:48:12"}]}}]},"documentation":{"id":4319,"nodeType":"StructuredDocumentation","src":"25028:312:12","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":4344,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:12","nodeType":"FunctionDefinition","parameters":{"id":4322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4321,"mutability":"mutable","name":"value","nameLocation":"25370:5:12","nodeType":"VariableDeclaration","scope":4344,"src":"25363:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4320,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:12"},"returnParameters":{"id":4325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4324,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:12","nodeType":"VariableDeclaration","scope":4344,"src":"25400:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":4323,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:12","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:12"},"scope":4801,"src":"25345:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4369,"nodeType":"Block","src":"25966:150:12","statements":[{"expression":{"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4352,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"25976:10:12","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4355,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4347,"src":"25996:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":4353,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:12","typeDescriptions":{}}},"id":4356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:12","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":4358,"nodeType":"ExpressionStatement","src":"25976:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4359,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4350,"src":"26016:10:12","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4347,"src":"26030:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4368,"nodeType":"IfStatement","src":"26012:98:12","trueBody":{"id":4367,"nodeType":"Block","src":"26037:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":4363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:12","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":4364,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4347,"src":"26093:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4362,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"26058:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4366,"nodeType":"RevertStatement","src":"26051:48:12"}]}}]},"documentation":{"id":4345,"nodeType":"StructuredDocumentation","src":"25575:312:12","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":4370,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:12","nodeType":"FunctionDefinition","parameters":{"id":4348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4347,"mutability":"mutable","name":"value","nameLocation":"25917:5:12","nodeType":"VariableDeclaration","scope":4370,"src":"25910:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4346,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:12"},"returnParameters":{"id":4351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4350,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:12","nodeType":"VariableDeclaration","scope":4370,"src":"25947:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":4349,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:12","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:12"},"scope":4801,"src":"25892:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4395,"nodeType":"Block","src":"26513:150:12","statements":[{"expression":{"id":4383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4378,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"26523:10:12","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"26543:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":4379,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:12","typeDescriptions":{}}},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:12","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":4384,"nodeType":"ExpressionStatement","src":"26523:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4385,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"26563:10:12","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"26577:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4394,"nodeType":"IfStatement","src":"26559:98:12","trueBody":{"id":4393,"nodeType":"Block","src":"26584:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":4389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:12","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":4390,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"26640:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4388,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"26605:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4392,"nodeType":"RevertStatement","src":"26598:48:12"}]}}]},"documentation":{"id":4371,"nodeType":"StructuredDocumentation","src":"26122:312:12","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":4396,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:12","nodeType":"FunctionDefinition","parameters":{"id":4374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4373,"mutability":"mutable","name":"value","nameLocation":"26464:5:12","nodeType":"VariableDeclaration","scope":4396,"src":"26457:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4372,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:12"},"returnParameters":{"id":4377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4376,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:12","nodeType":"VariableDeclaration","scope":4396,"src":"26494:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":4375,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:12","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:12"},"scope":4801,"src":"26439:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4421,"nodeType":"Block","src":"27060:150:12","statements":[{"expression":{"id":4409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4404,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"27070:10:12","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4399,"src":"27090:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":4405,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:12","typeDescriptions":{}}},"id":4408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:12","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":4410,"nodeType":"ExpressionStatement","src":"27070:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4411,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"27110:10:12","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4399,"src":"27124:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4420,"nodeType":"IfStatement","src":"27106:98:12","trueBody":{"id":4419,"nodeType":"Block","src":"27131:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":4415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:12","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":4416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4399,"src":"27187:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4414,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"27152:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4418,"nodeType":"RevertStatement","src":"27145:48:12"}]}}]},"documentation":{"id":4397,"nodeType":"StructuredDocumentation","src":"26669:312:12","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":4422,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:12","nodeType":"FunctionDefinition","parameters":{"id":4400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4399,"mutability":"mutable","name":"value","nameLocation":"27011:5:12","nodeType":"VariableDeclaration","scope":4422,"src":"27004:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4398,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:12"},"returnParameters":{"id":4403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4402,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:12","nodeType":"VariableDeclaration","scope":4422,"src":"27041:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":4401,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:12","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:12"},"scope":4801,"src":"26986:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4447,"nodeType":"Block","src":"27607:150:12","statements":[{"expression":{"id":4435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4430,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"27617:10:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4433,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4425,"src":"27637:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":4431,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:12","typeDescriptions":{}}},"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":4436,"nodeType":"ExpressionStatement","src":"27617:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4437,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"27657:10:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4438,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4425,"src":"27671:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4446,"nodeType":"IfStatement","src":"27653:98:12","trueBody":{"id":4445,"nodeType":"Block","src":"27678:73:12","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:12","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":4442,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4425,"src":"27734:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4440,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"27699:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4444,"nodeType":"RevertStatement","src":"27692:48:12"}]}}]},"documentation":{"id":4423,"nodeType":"StructuredDocumentation","src":"27216:312:12","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":4448,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:12","nodeType":"FunctionDefinition","parameters":{"id":4426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4425,"mutability":"mutable","name":"value","nameLocation":"27558:5:12","nodeType":"VariableDeclaration","scope":4448,"src":"27551:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4424,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:12"},"returnParameters":{"id":4429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4428,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:12","nodeType":"VariableDeclaration","scope":4448,"src":"27588:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":4427,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:12","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:12"},"scope":4801,"src":"27533:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4473,"nodeType":"Block","src":"28147:148:12","statements":[{"expression":{"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4456,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"28157:10:12","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4459,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4451,"src":"28176:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":4457,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:12","typeDescriptions":{}}},"id":4460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:12","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":4462,"nodeType":"ExpressionStatement","src":"28157:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4463,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"28196:10:12","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4451,"src":"28210:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4472,"nodeType":"IfStatement","src":"28192:97:12","trueBody":{"id":4471,"nodeType":"Block","src":"28217:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":4467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:12","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":4468,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4451,"src":"28272:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4466,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"28238:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4470,"nodeType":"RevertStatement","src":"28231:47:12"}]}}]},"documentation":{"id":4449,"nodeType":"StructuredDocumentation","src":"27763:307:12","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":4474,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:12","nodeType":"FunctionDefinition","parameters":{"id":4452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4451,"mutability":"mutable","name":"value","nameLocation":"28099:5:12","nodeType":"VariableDeclaration","scope":4474,"src":"28092:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4450,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:12"},"returnParameters":{"id":4455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4454,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:12","nodeType":"VariableDeclaration","scope":4474,"src":"28129:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":4453,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:12","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:12"},"scope":4801,"src":"28075:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4499,"nodeType":"Block","src":"28685:148:12","statements":[{"expression":{"id":4487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4482,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4480,"src":"28695:10:12","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4477,"src":"28714:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":4483,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:12","typeDescriptions":{}}},"id":4486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:12","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":4488,"nodeType":"ExpressionStatement","src":"28695:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4489,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4480,"src":"28734:10:12","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4490,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4477,"src":"28748:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4498,"nodeType":"IfStatement","src":"28730:97:12","trueBody":{"id":4497,"nodeType":"Block","src":"28755:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":4493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:12","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":4494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4477,"src":"28810:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4492,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"28776:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4496,"nodeType":"RevertStatement","src":"28769:47:12"}]}}]},"documentation":{"id":4475,"nodeType":"StructuredDocumentation","src":"28301:307:12","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":4500,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:12","nodeType":"FunctionDefinition","parameters":{"id":4478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4477,"mutability":"mutable","name":"value","nameLocation":"28637:5:12","nodeType":"VariableDeclaration","scope":4500,"src":"28630:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4476,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:12"},"returnParameters":{"id":4481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4480,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:12","nodeType":"VariableDeclaration","scope":4500,"src":"28667:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":4479,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:12","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:12"},"scope":4801,"src":"28613:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4525,"nodeType":"Block","src":"29223:148:12","statements":[{"expression":{"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4508,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4506,"src":"29233:10:12","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4503,"src":"29252:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":4509,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:12","typeDescriptions":{}}},"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:12","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":4514,"nodeType":"ExpressionStatement","src":"29233:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4515,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4506,"src":"29272:10:12","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4503,"src":"29286:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4524,"nodeType":"IfStatement","src":"29268:97:12","trueBody":{"id":4523,"nodeType":"Block","src":"29293:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":4519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:12","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":4520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4503,"src":"29348:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4518,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"29314:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4522,"nodeType":"RevertStatement","src":"29307:47:12"}]}}]},"documentation":{"id":4501,"nodeType":"StructuredDocumentation","src":"28839:307:12","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":4526,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:12","nodeType":"FunctionDefinition","parameters":{"id":4504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4503,"mutability":"mutable","name":"value","nameLocation":"29175:5:12","nodeType":"VariableDeclaration","scope":4526,"src":"29168:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4502,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:12"},"returnParameters":{"id":4507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4506,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:12","nodeType":"VariableDeclaration","scope":4526,"src":"29205:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":4505,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:12","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:12"},"scope":4801,"src":"29151:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4551,"nodeType":"Block","src":"29761:148:12","statements":[{"expression":{"id":4539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4534,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"29771:10:12","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"29790:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":4535,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:12","typeDescriptions":{}}},"id":4538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:12","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":4540,"nodeType":"ExpressionStatement","src":"29771:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4541,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"29810:10:12","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"29824:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4550,"nodeType":"IfStatement","src":"29806:97:12","trueBody":{"id":4549,"nodeType":"Block","src":"29831:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":4545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:12","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":4546,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4529,"src":"29886:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4544,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"29852:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4548,"nodeType":"RevertStatement","src":"29845:47:12"}]}}]},"documentation":{"id":4527,"nodeType":"StructuredDocumentation","src":"29377:307:12","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":4552,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:12","nodeType":"FunctionDefinition","parameters":{"id":4530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4529,"mutability":"mutable","name":"value","nameLocation":"29713:5:12","nodeType":"VariableDeclaration","scope":4552,"src":"29706:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4528,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:12"},"returnParameters":{"id":4533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4532,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:12","nodeType":"VariableDeclaration","scope":4552,"src":"29743:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":4531,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:12","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:12"},"scope":4801,"src":"29689:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4577,"nodeType":"Block","src":"30299:148:12","statements":[{"expression":{"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4560,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"30309:10:12","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4563,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"30328:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":4561,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:12","typeDescriptions":{}}},"id":4564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:12","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":4566,"nodeType":"ExpressionStatement","src":"30309:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4567,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4558,"src":"30348:10:12","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"30362:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4576,"nodeType":"IfStatement","src":"30344:97:12","trueBody":{"id":4575,"nodeType":"Block","src":"30369:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":4571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":4572,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"30424:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4570,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"30390:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4574,"nodeType":"RevertStatement","src":"30383:47:12"}]}}]},"documentation":{"id":4553,"nodeType":"StructuredDocumentation","src":"29915:307:12","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":4578,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:12","nodeType":"FunctionDefinition","parameters":{"id":4556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4555,"mutability":"mutable","name":"value","nameLocation":"30251:5:12","nodeType":"VariableDeclaration","scope":4578,"src":"30244:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4554,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:12"},"returnParameters":{"id":4559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4558,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:12","nodeType":"VariableDeclaration","scope":4578,"src":"30281:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":4557,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:12","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:12"},"scope":4801,"src":"30227:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4603,"nodeType":"Block","src":"30837:148:12","statements":[{"expression":{"id":4591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4586,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4584,"src":"30847:10:12","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4581,"src":"30866:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":4587,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:12","typeDescriptions":{}}},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:12","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":4592,"nodeType":"ExpressionStatement","src":"30847:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4593,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4584,"src":"30886:10:12","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4594,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4581,"src":"30900:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4602,"nodeType":"IfStatement","src":"30882:97:12","trueBody":{"id":4601,"nodeType":"Block","src":"30907:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":4597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:12","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":4598,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4581,"src":"30962:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4596,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"30928:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4600,"nodeType":"RevertStatement","src":"30921:47:12"}]}}]},"documentation":{"id":4579,"nodeType":"StructuredDocumentation","src":"30453:307:12","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":4604,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:12","nodeType":"FunctionDefinition","parameters":{"id":4582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4581,"mutability":"mutable","name":"value","nameLocation":"30789:5:12","nodeType":"VariableDeclaration","scope":4604,"src":"30782:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4580,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:12"},"returnParameters":{"id":4585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4584,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:12","nodeType":"VariableDeclaration","scope":4604,"src":"30819:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":4583,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:12","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:12"},"scope":4801,"src":"30765:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4629,"nodeType":"Block","src":"31375:148:12","statements":[{"expression":{"id":4617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4612,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"31385:10:12","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"31404:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":4613,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:12","typeDescriptions":{}}},"id":4616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:12","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":4618,"nodeType":"ExpressionStatement","src":"31385:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4619,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"31424:10:12","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"31438:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4628,"nodeType":"IfStatement","src":"31420:97:12","trueBody":{"id":4627,"nodeType":"Block","src":"31445:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":4623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:12","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":4624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"31500:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4622,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"31466:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4626,"nodeType":"RevertStatement","src":"31459:47:12"}]}}]},"documentation":{"id":4605,"nodeType":"StructuredDocumentation","src":"30991:307:12","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":4630,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:12","nodeType":"FunctionDefinition","parameters":{"id":4608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4607,"mutability":"mutable","name":"value","nameLocation":"31327:5:12","nodeType":"VariableDeclaration","scope":4630,"src":"31320:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4606,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:12"},"returnParameters":{"id":4611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4610,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:12","nodeType":"VariableDeclaration","scope":4630,"src":"31357:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":4609,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:12","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:12"},"scope":4801,"src":"31303:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4655,"nodeType":"Block","src":"31913:148:12","statements":[{"expression":{"id":4643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4638,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"31923:10:12","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4633,"src":"31942:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":4639,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:12","typeDescriptions":{}}},"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:12","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":4644,"nodeType":"ExpressionStatement","src":"31923:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4645,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4636,"src":"31962:10:12","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4633,"src":"31976:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4654,"nodeType":"IfStatement","src":"31958:97:12","trueBody":{"id":4653,"nodeType":"Block","src":"31983:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":4649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:12","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":4650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4633,"src":"32038:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4648,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"32004:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4652,"nodeType":"RevertStatement","src":"31997:47:12"}]}}]},"documentation":{"id":4631,"nodeType":"StructuredDocumentation","src":"31529:307:12","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":4656,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:12","nodeType":"FunctionDefinition","parameters":{"id":4634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4633,"mutability":"mutable","name":"value","nameLocation":"31865:5:12","nodeType":"VariableDeclaration","scope":4656,"src":"31858:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4632,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:12"},"returnParameters":{"id":4637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4636,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:12","nodeType":"VariableDeclaration","scope":4656,"src":"31895:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":4635,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:12","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:12"},"scope":4801,"src":"31841:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4681,"nodeType":"Block","src":"32451:148:12","statements":[{"expression":{"id":4669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4664,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4662,"src":"32461:10:12","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"32480:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":4665,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:12","typeDescriptions":{}}},"id":4668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:12","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":4670,"nodeType":"ExpressionStatement","src":"32461:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4671,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4662,"src":"32500:10:12","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"32514:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4680,"nodeType":"IfStatement","src":"32496:97:12","trueBody":{"id":4679,"nodeType":"Block","src":"32521:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":4675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":4676,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"32576:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4674,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"32542:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4678,"nodeType":"RevertStatement","src":"32535:47:12"}]}}]},"documentation":{"id":4657,"nodeType":"StructuredDocumentation","src":"32067:307:12","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":4682,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:12","nodeType":"FunctionDefinition","parameters":{"id":4660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4659,"mutability":"mutable","name":"value","nameLocation":"32403:5:12","nodeType":"VariableDeclaration","scope":4682,"src":"32396:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4658,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:12"},"returnParameters":{"id":4663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4662,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:12","nodeType":"VariableDeclaration","scope":4682,"src":"32433:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":4661,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:12","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:12"},"scope":4801,"src":"32379:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4707,"nodeType":"Block","src":"32989:148:12","statements":[{"expression":{"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4690,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4688,"src":"32999:10:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4693,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"33018:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":4691,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:12","typeDescriptions":{}}},"id":4694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":4696,"nodeType":"ExpressionStatement","src":"32999:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4697,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4688,"src":"33038:10:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"33052:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4706,"nodeType":"IfStatement","src":"33034:97:12","trueBody":{"id":4705,"nodeType":"Block","src":"33059:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":4701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:12","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":4702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"33114:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4700,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"33080:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4704,"nodeType":"RevertStatement","src":"33073:47:12"}]}}]},"documentation":{"id":4683,"nodeType":"StructuredDocumentation","src":"32605:307:12","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":4708,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:12","nodeType":"FunctionDefinition","parameters":{"id":4686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4685,"mutability":"mutable","name":"value","nameLocation":"32941:5:12","nodeType":"VariableDeclaration","scope":4708,"src":"32934:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4684,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:12"},"returnParameters":{"id":4689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4688,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:12","nodeType":"VariableDeclaration","scope":4708,"src":"32971:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":4687,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:12","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:12"},"scope":4801,"src":"32917:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4733,"nodeType":"Block","src":"33527:148:12","statements":[{"expression":{"id":4721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4716,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"33537:10:12","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4719,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4711,"src":"33556:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":4717,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:12","typeDescriptions":{}}},"id":4720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:12","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":4722,"nodeType":"ExpressionStatement","src":"33537:25:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4723,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"33576:10:12","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4711,"src":"33590:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4732,"nodeType":"IfStatement","src":"33572:97:12","trueBody":{"id":4731,"nodeType":"Block","src":"33597:72:12","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":4727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:12","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":4728,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4711,"src":"33652:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4726,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"33618:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4730,"nodeType":"RevertStatement","src":"33611:47:12"}]}}]},"documentation":{"id":4709,"nodeType":"StructuredDocumentation","src":"33143:307:12","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":4734,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:12","nodeType":"FunctionDefinition","parameters":{"id":4712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4711,"mutability":"mutable","name":"value","nameLocation":"33479:5:12","nodeType":"VariableDeclaration","scope":4734,"src":"33472:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4710,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:12"},"returnParameters":{"id":4715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4714,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:12","nodeType":"VariableDeclaration","scope":4734,"src":"33509:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":4713,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:12","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:12"},"scope":4801,"src":"33455:220:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4759,"nodeType":"Block","src":"34058:146:12","statements":[{"expression":{"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4742,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"34068:10:12","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4737,"src":"34086:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":4743,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:12","typeDescriptions":{}}},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:12","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":4748,"nodeType":"ExpressionStatement","src":"34068:24:12"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4749,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"34106:10:12","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4737,"src":"34120:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4758,"nodeType":"IfStatement","src":"34102:96:12","trueBody":{"id":4757,"nodeType":"Block","src":"34127:71:12","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":4753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":4754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4737,"src":"34181:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4752,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3058,"src":"34148:29:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4756,"nodeType":"RevertStatement","src":"34141:46:12"}]}}]},"documentation":{"id":4735,"nodeType":"StructuredDocumentation","src":"33681:302:12","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":4760,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:12","nodeType":"FunctionDefinition","parameters":{"id":4738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4737,"mutability":"mutable","name":"value","nameLocation":"34011:5:12","nodeType":"VariableDeclaration","scope":4760,"src":"34004:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4736,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:12"},"returnParameters":{"id":4741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4740,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:12","nodeType":"VariableDeclaration","scope":4760,"src":"34041:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":4739,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:12","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:12"},"scope":4801,"src":"33988:216:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4789,"nodeType":"Block","src":"34444:250:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"34557:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":4773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4772,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":4771,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":4775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:12","memberName":"max","nodeType":"MemberAccess","src":"34573:16:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4769,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:12","typeDescriptions":{}}},"id":4776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4783,"nodeType":"IfStatement","src":"34553:105:12","trueBody":{"id":4782,"nodeType":"Block","src":"34592:66:12","statements":[{"errorCall":{"arguments":[{"id":4779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"34641:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4778,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"34613:27:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4781,"nodeType":"RevertStatement","src":"34606:41:12"}]}},{"expression":{"arguments":[{"id":4786,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"34681:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4784,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:12","typeDescriptions":{}}},"id":4787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":4767,"id":4788,"nodeType":"Return","src":"34667:20:12"}]},"documentation":{"id":4761,"nodeType":"StructuredDocumentation","src":"34210:165:12","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":4790,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:12","nodeType":"FunctionDefinition","parameters":{"id":4764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4763,"mutability":"mutable","name":"value","nameLocation":"34406:5:12","nodeType":"VariableDeclaration","scope":4790,"src":"34398:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4762,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:12"},"returnParameters":{"id":4767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4790,"src":"34436:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4765,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:12"},"scope":4801,"src":"34380:314:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4799,"nodeType":"Block","src":"34853:87:12","statements":[{"AST":{"nativeSrc":"34888:46:12","nodeType":"YulBlock","src":"34888:46:12","statements":[{"nativeSrc":"34902:22:12","nodeType":"YulAssignment","src":"34902:22:12","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:12","nodeType":"YulIdentifier","src":"34921:1:12"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:12","nodeType":"YulIdentifier","src":"34914:6:12"},"nativeSrc":"34914:9:12","nodeType":"YulFunctionCall","src":"34914:9:12"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:12","nodeType":"YulIdentifier","src":"34907:6:12"},"nativeSrc":"34907:17:12","nodeType":"YulFunctionCall","src":"34907:17:12"},"variableNames":[{"name":"u","nativeSrc":"34902:1:12","nodeType":"YulIdentifier","src":"34902:1:12"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":4793,"isOffset":false,"isSlot":false,"src":"34921:1:12","valueSize":1},{"declaration":4796,"isOffset":false,"isSlot":false,"src":"34902:1:12","valueSize":1}],"flags":["memory-safe"],"id":4798,"nodeType":"InlineAssembly","src":"34863:71:12"}]},"documentation":{"id":4791,"nodeType":"StructuredDocumentation","src":"34700:90:12","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":4800,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:12","nodeType":"FunctionDefinition","parameters":{"id":4794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4793,"mutability":"mutable","name":"b","nameLocation":"34816:1:12","nodeType":"VariableDeclaration","scope":4800,"src":"34811:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4792,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:12"},"returnParameters":{"id":4797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4796,"mutability":"mutable","name":"u","nameLocation":"34850:1:12","nodeType":"VariableDeclaration","scope":4800,"src":"34842:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4795,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:12"},"scope":4801,"src":"34795:145:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4802,"src":"769:34173:12","usedErrors":[3046,3051,3058,3063],"usedEvents":[]}],"src":"192:34751:12"},"id":12},"npm/@uniswap/v3-core@1.0.1/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"ast":{"absolutePath":"npm/@uniswap/v3-core@1.0.1/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","exportedSymbols":{"IUniswapV3SwapCallback":[4815]},"id":4816,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4803,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3SwapCallback","contractDependencies":[],"contractKind":"interface","documentation":{"id":4804,"nodeType":"StructuredDocumentation","src":"71:144:13","text":"@title Callback for IUniswapV3PoolActions#swap\n @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface"},"fullyImplemented":false,"id":4815,"linearizedBaseContracts":[4815],"name":"IUniswapV3SwapCallback","nameLocation":"225:22:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4805,"nodeType":"StructuredDocumentation","src":"254:898:13","text":"@notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call"},"functionSelector":"fa461e33","id":4814,"implemented":false,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"1166:21:13","nodeType":"FunctionDefinition","parameters":{"id":4812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4807,"mutability":"mutable","name":"amount0Delta","nameLocation":"1204:12:13","nodeType":"VariableDeclaration","scope":4814,"src":"1197:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4806,"name":"int256","nodeType":"ElementaryTypeName","src":"1197:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4809,"mutability":"mutable","name":"amount1Delta","nameLocation":"1233:12:13","nodeType":"VariableDeclaration","scope":4814,"src":"1226:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4808,"name":"int256","nodeType":"ElementaryTypeName","src":"1226:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":4811,"mutability":"mutable","name":"data","nameLocation":"1270:4:13","nodeType":"VariableDeclaration","scope":4814,"src":"1255:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4810,"name":"bytes","nodeType":"ElementaryTypeName","src":"1255:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1187:93:13"},"returnParameters":{"id":4813,"nodeType":"ParameterList","parameters":[],"src":"1289:0:13"},"scope":4815,"src":"1157:133:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4816,"src":"215:1077:13","usedErrors":[],"usedEvents":[]}],"src":"45:1248:13"},"id":13},"npm/@uniswap/v3-periphery@1.4.4/contracts/interfaces/ISwapRouter.sol":{"ast":{"absolutePath":"npm/@uniswap/v3-periphery@1.4.4/contracts/interfaces/ISwapRouter.sol","exportedSymbols":{"ISwapRouter":[4915],"IUniswapV3SwapCallback":[4815]},"id":4916,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4817,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:14"},{"id":4818,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:14"},{"absolutePath":"npm/@uniswap/v3-core@1.0.1/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","file":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","id":4819,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4916,"sourceUnit":4816,"src":"91:83:14","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4821,"name":"IUniswapV3SwapCallback","nameLocations":["305:22:14"],"nodeType":"IdentifierPath","referencedDeclaration":4815,"src":"305:22:14"},"id":4822,"nodeType":"InheritanceSpecifier","src":"305:22:14"}],"canonicalName":"ISwapRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":4820,"nodeType":"StructuredDocumentation","src":"176:104:14","text":"@title Router token swapping functionality\n @notice Functions for swapping tokens via Uniswap V3"},"fullyImplemented":false,"id":4915,"linearizedBaseContracts":[4915,4815],"name":"ISwapRouter","nameLocation":"290:11:14","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapRouter.ExactInputSingleParams","id":4839,"members":[{"constant":false,"id":4824,"mutability":"mutable","name":"tokenIn","nameLocation":"382:7:14","nodeType":"VariableDeclaration","scope":4839,"src":"374:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4823,"name":"address","nodeType":"ElementaryTypeName","src":"374:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4826,"mutability":"mutable","name":"tokenOut","nameLocation":"407:8:14","nodeType":"VariableDeclaration","scope":4839,"src":"399:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4825,"name":"address","nodeType":"ElementaryTypeName","src":"399:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4828,"mutability":"mutable","name":"fee","nameLocation":"432:3:14","nodeType":"VariableDeclaration","scope":4839,"src":"425:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4827,"name":"uint24","nodeType":"ElementaryTypeName","src":"425:6:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4830,"mutability":"mutable","name":"recipient","nameLocation":"453:9:14","nodeType":"VariableDeclaration","scope":4839,"src":"445:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4829,"name":"address","nodeType":"ElementaryTypeName","src":"445:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4832,"mutability":"mutable","name":"deadline","nameLocation":"480:8:14","nodeType":"VariableDeclaration","scope":4839,"src":"472:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4831,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4834,"mutability":"mutable","name":"amountIn","nameLocation":"506:8:14","nodeType":"VariableDeclaration","scope":4839,"src":"498:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4833,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4836,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"532:16:14","nodeType":"VariableDeclaration","scope":4839,"src":"524:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4835,"name":"uint256","nodeType":"ElementaryTypeName","src":"524:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4838,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"566:17:14","nodeType":"VariableDeclaration","scope":4839,"src":"558:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4837,"name":"uint160","nodeType":"ElementaryTypeName","src":"558:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nameLocation":"341:22:14","nodeType":"StructDefinition","scope":4915,"src":"334:256:14","visibility":"public"},{"documentation":{"id":4840,"nodeType":"StructuredDocumentation","src":"596:250:14","text":"@notice Swaps `amountIn` of one token for as much as possible of another token\n @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"414bf389","id":4848,"implemented":false,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"860:16:14","nodeType":"FunctionDefinition","parameters":{"id":4844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4843,"mutability":"mutable","name":"params","nameLocation":"909:6:14","nodeType":"VariableDeclaration","scope":4848,"src":"877:38:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":4842,"nodeType":"UserDefinedTypeName","pathNode":{"id":4841,"name":"ExactInputSingleParams","nameLocations":["877:22:14"],"nodeType":"IdentifierPath","referencedDeclaration":4839,"src":"877:22:14"},"referencedDeclaration":4839,"src":"877:22:14","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"876:40:14"},"returnParameters":{"id":4847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4846,"mutability":"mutable","name":"amountOut","nameLocation":"951:9:14","nodeType":"VariableDeclaration","scope":4848,"src":"943:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4845,"name":"uint256","nodeType":"ElementaryTypeName","src":"943:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"942:19:14"},"scope":4915,"src":"851:111:14","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactInputParams","id":4859,"members":[{"constant":false,"id":4850,"mutability":"mutable","name":"path","nameLocation":"1008:4:14","nodeType":"VariableDeclaration","scope":4859,"src":"1002:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4849,"name":"bytes","nodeType":"ElementaryTypeName","src":"1002:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4852,"mutability":"mutable","name":"recipient","nameLocation":"1030:9:14","nodeType":"VariableDeclaration","scope":4859,"src":"1022:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4851,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4854,"mutability":"mutable","name":"deadline","nameLocation":"1057:8:14","nodeType":"VariableDeclaration","scope":4859,"src":"1049:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4853,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4856,"mutability":"mutable","name":"amountIn","nameLocation":"1083:8:14","nodeType":"VariableDeclaration","scope":4859,"src":"1075:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4855,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4858,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"1109:16:14","nodeType":"VariableDeclaration","scope":4859,"src":"1101:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nameLocation":"975:16:14","nodeType":"StructDefinition","scope":4915,"src":"968:164:14","visibility":"public"},{"documentation":{"id":4860,"nodeType":"StructuredDocumentation","src":"1138:273:14","text":"@notice Swaps `amountIn` of one token for as much as possible of another along the specified path\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata\n @return amountOut The amount of the received token"},"functionSelector":"c04b8d59","id":4868,"implemented":false,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"1425:10:14","nodeType":"FunctionDefinition","parameters":{"id":4864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4863,"mutability":"mutable","name":"params","nameLocation":"1462:6:14","nodeType":"VariableDeclaration","scope":4868,"src":"1436:32:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$4859_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":4862,"nodeType":"UserDefinedTypeName","pathNode":{"id":4861,"name":"ExactInputParams","nameLocations":["1436:16:14"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"1436:16:14"},"referencedDeclaration":4859,"src":"1436:16:14","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$4859_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"1435:34:14"},"returnParameters":{"id":4867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4866,"mutability":"mutable","name":"amountOut","nameLocation":"1504:9:14","nodeType":"VariableDeclaration","scope":4868,"src":"1496:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:19:14"},"scope":4915,"src":"1416:99:14","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputSingleParams","id":4885,"members":[{"constant":false,"id":4870,"mutability":"mutable","name":"tokenIn","nameLocation":"1570:7:14","nodeType":"VariableDeclaration","scope":4885,"src":"1562:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4869,"name":"address","nodeType":"ElementaryTypeName","src":"1562:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4872,"mutability":"mutable","name":"tokenOut","nameLocation":"1595:8:14","nodeType":"VariableDeclaration","scope":4885,"src":"1587:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4871,"name":"address","nodeType":"ElementaryTypeName","src":"1587:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4874,"mutability":"mutable","name":"fee","nameLocation":"1620:3:14","nodeType":"VariableDeclaration","scope":4885,"src":"1613:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4873,"name":"uint24","nodeType":"ElementaryTypeName","src":"1613:6:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4876,"mutability":"mutable","name":"recipient","nameLocation":"1641:9:14","nodeType":"VariableDeclaration","scope":4885,"src":"1633:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4875,"name":"address","nodeType":"ElementaryTypeName","src":"1633:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4878,"mutability":"mutable","name":"deadline","nameLocation":"1668:8:14","nodeType":"VariableDeclaration","scope":4885,"src":"1660:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1660:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4880,"mutability":"mutable","name":"amountOut","nameLocation":"1694:9:14","nodeType":"VariableDeclaration","scope":4885,"src":"1686:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4879,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4882,"mutability":"mutable","name":"amountInMaximum","nameLocation":"1721:15:14","nodeType":"VariableDeclaration","scope":4885,"src":"1713:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1713:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4884,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"1754:17:14","nodeType":"VariableDeclaration","scope":4885,"src":"1746:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4883,"name":"uint160","nodeType":"ElementaryTypeName","src":"1746:7:14","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactOutputSingleParams","nameLocation":"1528:23:14","nodeType":"StructDefinition","scope":4915,"src":"1521:257:14","visibility":"public"},{"documentation":{"id":4886,"nodeType":"StructuredDocumentation","src":"1784:250:14","text":"@notice Swaps as little as possible of one token for `amountOut` of another token\n @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"db3e2198","id":4894,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2048:17:14","nodeType":"FunctionDefinition","parameters":{"id":4890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4889,"mutability":"mutable","name":"params","nameLocation":"2099:6:14","nodeType":"VariableDeclaration","scope":4894,"src":"2066:39:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":4888,"nodeType":"UserDefinedTypeName","pathNode":{"id":4887,"name":"ExactOutputSingleParams","nameLocations":["2066:23:14"],"nodeType":"IdentifierPath","referencedDeclaration":4885,"src":"2066:23:14"},"referencedDeclaration":4885,"src":"2066:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2065:41:14"},"returnParameters":{"id":4893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4892,"mutability":"mutable","name":"amountIn","nameLocation":"2141:8:14","nodeType":"VariableDeclaration","scope":4894,"src":"2133:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4891,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2132:18:14"},"scope":4915,"src":"2039:112:14","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputParams","id":4905,"members":[{"constant":false,"id":4896,"mutability":"mutable","name":"path","nameLocation":"2198:4:14","nodeType":"VariableDeclaration","scope":4905,"src":"2192:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4895,"name":"bytes","nodeType":"ElementaryTypeName","src":"2192:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4898,"mutability":"mutable","name":"recipient","nameLocation":"2220:9:14","nodeType":"VariableDeclaration","scope":4905,"src":"2212:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4897,"name":"address","nodeType":"ElementaryTypeName","src":"2212:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4900,"mutability":"mutable","name":"deadline","nameLocation":"2247:8:14","nodeType":"VariableDeclaration","scope":4905,"src":"2239:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2239:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4902,"mutability":"mutable","name":"amountOut","nameLocation":"2273:9:14","nodeType":"VariableDeclaration","scope":4905,"src":"2265:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4901,"name":"uint256","nodeType":"ElementaryTypeName","src":"2265:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4904,"mutability":"mutable","name":"amountInMaximum","nameLocation":"2300:15:14","nodeType":"VariableDeclaration","scope":4905,"src":"2292:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4903,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactOutputParams","nameLocation":"2164:17:14","nodeType":"StructDefinition","scope":4915,"src":"2157:165:14","visibility":"public"},{"documentation":{"id":4906,"nodeType":"StructuredDocumentation","src":"2328:284:14","text":"@notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)\n @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata\n @return amountIn The amount of the input token"},"functionSelector":"f28c0498","id":4914,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"2626:11:14","nodeType":"FunctionDefinition","parameters":{"id":4910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4909,"mutability":"mutable","name":"params","nameLocation":"2665:6:14","nodeType":"VariableDeclaration","scope":4914,"src":"2638:33:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$4905_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":4908,"nodeType":"UserDefinedTypeName","pathNode":{"id":4907,"name":"ExactOutputParams","nameLocations":["2638:17:14"],"nodeType":"IdentifierPath","referencedDeclaration":4905,"src":"2638:17:14"},"referencedDeclaration":4905,"src":"2638:17:14","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$4905_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"2637:35:14"},"returnParameters":{"id":4913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4912,"mutability":"mutable","name":"amountIn","nameLocation":"2707:8:14","nodeType":"VariableDeclaration","scope":4914,"src":"2699:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4911,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2698:18:14"},"scope":4915,"src":"2617:100:14","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":4916,"src":"280:2439:14","usedErrors":[],"usedEvents":[]}],"src":"45:2675:14"},"id":14},"npm/solidity-bytes-utils@0.8.4/contracts/BytesLib.sol":{"ast":{"absolutePath":"npm/solidity-bytes-utils@0.8.4/contracts/BytesLib.sol","exportedSymbols":{"BytesLib":[5249]},"id":5250,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":4917,"literals":["solidity",">=","0.8",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"336:31:15"},{"abstract":false,"baseContracts":[],"canonicalName":"BytesLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5249,"linearizedBaseContracts":[5249],"name":"BytesLib","nameLocation":"378:8:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":4932,"nodeType":"Block","src":"545:2803:15","statements":[{"assignments":[4927],"declarations":[{"constant":false,"id":4927,"mutability":"mutable","name":"tempBytes","nameLocation":"568:9:15","nodeType":"VariableDeclaration","scope":4932,"src":"555:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4926,"name":"bytes","nodeType":"ElementaryTypeName","src":"555:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4928,"nodeType":"VariableDeclarationStatement","src":"555:22:15"},{"AST":{"nativeSrc":"597:2718:15","nodeType":"YulBlock","src":"597:2718:15","statements":[{"nativeSrc":"741:24:15","nodeType":"YulAssignment","src":"741:24:15","value":{"arguments":[{"kind":"number","nativeSrc":"760:4:15","nodeType":"YulLiteral","src":"760:4:15","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"754:5:15","nodeType":"YulIdentifier","src":"754:5:15"},"nativeSrc":"754:11:15","nodeType":"YulFunctionCall","src":"754:11:15"},"variableNames":[{"name":"tempBytes","nativeSrc":"741:9:15","nodeType":"YulIdentifier","src":"741:9:15"}]},{"nativeSrc":"897:30:15","nodeType":"YulVariableDeclaration","src":"897:30:15","value":{"arguments":[{"name":"_preBytes","nativeSrc":"917:9:15","nodeType":"YulIdentifier","src":"917:9:15"}],"functionName":{"name":"mload","nativeSrc":"911:5:15","nodeType":"YulIdentifier","src":"911:5:15"},"nativeSrc":"911:16:15","nodeType":"YulFunctionCall","src":"911:16:15"},"variables":[{"name":"length","nativeSrc":"901:6:15","nodeType":"YulTypedName","src":"901:6:15","type":""}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"947:9:15","nodeType":"YulIdentifier","src":"947:9:15"},{"name":"length","nativeSrc":"958:6:15","nodeType":"YulIdentifier","src":"958:6:15"}],"functionName":{"name":"mstore","nativeSrc":"940:6:15","nodeType":"YulIdentifier","src":"940:6:15"},"nativeSrc":"940:25:15","nodeType":"YulFunctionCall","src":"940:25:15"},"nativeSrc":"940:25:15","nodeType":"YulExpressionStatement","src":"940:25:15"},{"nativeSrc":"1175:30:15","nodeType":"YulVariableDeclaration","src":"1175:30:15","value":{"arguments":[{"name":"tempBytes","nativeSrc":"1189:9:15","nodeType":"YulIdentifier","src":"1189:9:15"},{"kind":"number","nativeSrc":"1200:4:15","nodeType":"YulLiteral","src":"1200:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1185:3:15","nodeType":"YulIdentifier","src":"1185:3:15"},"nativeSrc":"1185:20:15","nodeType":"YulFunctionCall","src":"1185:20:15"},"variables":[{"name":"mc","nativeSrc":"1179:2:15","nodeType":"YulTypedName","src":"1179:2:15","type":""}]},{"nativeSrc":"1330:26:15","nodeType":"YulVariableDeclaration","src":"1330:26:15","value":{"arguments":[{"name":"mc","nativeSrc":"1345:2:15","nodeType":"YulIdentifier","src":"1345:2:15"},{"name":"length","nativeSrc":"1349:6:15","nodeType":"YulIdentifier","src":"1349:6:15"}],"functionName":{"name":"add","nativeSrc":"1341:3:15","nodeType":"YulIdentifier","src":"1341:3:15"},"nativeSrc":"1341:15:15","nodeType":"YulFunctionCall","src":"1341:15:15"},"variables":[{"name":"end","nativeSrc":"1334:3:15","nodeType":"YulTypedName","src":"1334:3:15","type":""}]},{"body":{"nativeSrc":"1733:162:15","nodeType":"YulBlock","src":"1733:162:15","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"1867:2:15","nodeType":"YulIdentifier","src":"1867:2:15"},{"arguments":[{"name":"cc","nativeSrc":"1877:2:15","nodeType":"YulIdentifier","src":"1877:2:15"}],"functionName":{"name":"mload","nativeSrc":"1871:5:15","nodeType":"YulIdentifier","src":"1871:5:15"},"nativeSrc":"1871:9:15","nodeType":"YulFunctionCall","src":"1871:9:15"}],"functionName":{"name":"mstore","nativeSrc":"1860:6:15","nodeType":"YulIdentifier","src":"1860:6:15"},"nativeSrc":"1860:21:15","nodeType":"YulFunctionCall","src":"1860:21:15"},"nativeSrc":"1860:21:15","nodeType":"YulExpressionStatement","src":"1860:21:15"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"1566:2:15","nodeType":"YulIdentifier","src":"1566:2:15"},{"name":"end","nativeSrc":"1570:3:15","nodeType":"YulIdentifier","src":"1570:3:15"}],"functionName":{"name":"lt","nativeSrc":"1563:2:15","nodeType":"YulIdentifier","src":"1563:2:15"},"nativeSrc":"1563:11:15","nodeType":"YulFunctionCall","src":"1563:11:15"},"nativeSrc":"1370:525:15","nodeType":"YulForLoop","post":{"nativeSrc":"1575:157:15","nodeType":"YulBlock","src":"1575:157:15","statements":[{"nativeSrc":"1663:19:15","nodeType":"YulAssignment","src":"1663:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"1673:2:15","nodeType":"YulIdentifier","src":"1673:2:15"},{"kind":"number","nativeSrc":"1677:4:15","nodeType":"YulLiteral","src":"1677:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1669:3:15","nodeType":"YulIdentifier","src":"1669:3:15"},"nativeSrc":"1669:13:15","nodeType":"YulFunctionCall","src":"1669:13:15"},"variableNames":[{"name":"mc","nativeSrc":"1663:2:15","nodeType":"YulIdentifier","src":"1663:2:15"}]},{"nativeSrc":"1699:19:15","nodeType":"YulAssignment","src":"1699:19:15","value":{"arguments":[{"name":"cc","nativeSrc":"1709:2:15","nodeType":"YulIdentifier","src":"1709:2:15"},{"kind":"number","nativeSrc":"1713:4:15","nodeType":"YulLiteral","src":"1713:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1705:3:15","nodeType":"YulIdentifier","src":"1705:3:15"},"nativeSrc":"1705:13:15","nodeType":"YulFunctionCall","src":"1705:13:15"},"variableNames":[{"name":"cc","nativeSrc":"1699:2:15","nodeType":"YulIdentifier","src":"1699:2:15"}]}]},"pre":{"nativeSrc":"1374:188:15","nodeType":"YulBlock","src":"1374:188:15","statements":[{"nativeSrc":"1518:30:15","nodeType":"YulVariableDeclaration","src":"1518:30:15","value":{"arguments":[{"name":"_preBytes","nativeSrc":"1532:9:15","nodeType":"YulIdentifier","src":"1532:9:15"},{"kind":"number","nativeSrc":"1543:4:15","nodeType":"YulLiteral","src":"1543:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1528:3:15","nodeType":"YulIdentifier","src":"1528:3:15"},"nativeSrc":"1528:20:15","nodeType":"YulFunctionCall","src":"1528:20:15"},"variables":[{"name":"cc","nativeSrc":"1522:2:15","nodeType":"YulTypedName","src":"1522:2:15","type":""}]}]},"src":"1370:525:15"},{"nativeSrc":"2096:27:15","nodeType":"YulAssignment","src":"2096:27:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"2112:10:15","nodeType":"YulIdentifier","src":"2112:10:15"}],"functionName":{"name":"mload","nativeSrc":"2106:5:15","nodeType":"YulIdentifier","src":"2106:5:15"},"nativeSrc":"2106:17:15","nodeType":"YulFunctionCall","src":"2106:17:15"},"variableNames":[{"name":"length","nativeSrc":"2096:6:15","nodeType":"YulIdentifier","src":"2096:6:15"}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"2143:9:15","nodeType":"YulIdentifier","src":"2143:9:15"},{"arguments":[{"name":"length","nativeSrc":"2158:6:15","nodeType":"YulIdentifier","src":"2158:6:15"},{"arguments":[{"name":"tempBytes","nativeSrc":"2172:9:15","nodeType":"YulIdentifier","src":"2172:9:15"}],"functionName":{"name":"mload","nativeSrc":"2166:5:15","nodeType":"YulIdentifier","src":"2166:5:15"},"nativeSrc":"2166:16:15","nodeType":"YulFunctionCall","src":"2166:16:15"}],"functionName":{"name":"add","nativeSrc":"2154:3:15","nodeType":"YulIdentifier","src":"2154:3:15"},"nativeSrc":"2154:29:15","nodeType":"YulFunctionCall","src":"2154:29:15"}],"functionName":{"name":"mstore","nativeSrc":"2136:6:15","nodeType":"YulIdentifier","src":"2136:6:15"},"nativeSrc":"2136:48:15","nodeType":"YulFunctionCall","src":"2136:48:15"},"nativeSrc":"2136:48:15","nodeType":"YulExpressionStatement","src":"2136:48:15"},{"nativeSrc":"2322:9:15","nodeType":"YulAssignment","src":"2322:9:15","value":{"name":"end","nativeSrc":"2328:3:15","nodeType":"YulIdentifier","src":"2328:3:15"},"variableNames":[{"name":"mc","nativeSrc":"2322:2:15","nodeType":"YulIdentifier","src":"2322:2:15"}]},{"nativeSrc":"2458:22:15","nodeType":"YulAssignment","src":"2458:22:15","value":{"arguments":[{"name":"mc","nativeSrc":"2469:2:15","nodeType":"YulIdentifier","src":"2469:2:15"},{"name":"length","nativeSrc":"2473:6:15","nodeType":"YulIdentifier","src":"2473:6:15"}],"functionName":{"name":"add","nativeSrc":"2465:3:15","nodeType":"YulIdentifier","src":"2465:3:15"},"nativeSrc":"2465:15:15","nodeType":"YulFunctionCall","src":"2465:15:15"},"variableNames":[{"name":"end","nativeSrc":"2458:3:15","nodeType":"YulIdentifier","src":"2458:3:15"}]},{"body":{"nativeSrc":"2662:53:15","nodeType":"YulBlock","src":"2662:53:15","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"2687:2:15","nodeType":"YulIdentifier","src":"2687:2:15"},{"arguments":[{"name":"cc","nativeSrc":"2697:2:15","nodeType":"YulIdentifier","src":"2697:2:15"}],"functionName":{"name":"mload","nativeSrc":"2691:5:15","nodeType":"YulIdentifier","src":"2691:5:15"},"nativeSrc":"2691:9:15","nodeType":"YulFunctionCall","src":"2691:9:15"}],"functionName":{"name":"mstore","nativeSrc":"2680:6:15","nodeType":"YulIdentifier","src":"2680:6:15"},"nativeSrc":"2680:21:15","nodeType":"YulFunctionCall","src":"2680:21:15"},"nativeSrc":"2680:21:15","nodeType":"YulExpressionStatement","src":"2680:21:15"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"2565:2:15","nodeType":"YulIdentifier","src":"2565:2:15"},{"name":"end","nativeSrc":"2569:3:15","nodeType":"YulIdentifier","src":"2569:3:15"}],"functionName":{"name":"lt","nativeSrc":"2562:2:15","nodeType":"YulIdentifier","src":"2562:2:15"},"nativeSrc":"2562:11:15","nodeType":"YulFunctionCall","src":"2562:11:15"},"nativeSrc":"2494:221:15","nodeType":"YulForLoop","post":{"nativeSrc":"2574:87:15","nodeType":"YulBlock","src":"2574:87:15","statements":[{"nativeSrc":"2592:19:15","nodeType":"YulAssignment","src":"2592:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"2602:2:15","nodeType":"YulIdentifier","src":"2602:2:15"},{"kind":"number","nativeSrc":"2606:4:15","nodeType":"YulLiteral","src":"2606:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2598:3:15","nodeType":"YulIdentifier","src":"2598:3:15"},"nativeSrc":"2598:13:15","nodeType":"YulFunctionCall","src":"2598:13:15"},"variableNames":[{"name":"mc","nativeSrc":"2592:2:15","nodeType":"YulIdentifier","src":"2592:2:15"}]},{"nativeSrc":"2628:19:15","nodeType":"YulAssignment","src":"2628:19:15","value":{"arguments":[{"name":"cc","nativeSrc":"2638:2:15","nodeType":"YulIdentifier","src":"2638:2:15"},{"kind":"number","nativeSrc":"2642:4:15","nodeType":"YulLiteral","src":"2642:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2634:3:15","nodeType":"YulIdentifier","src":"2634:3:15"},"nativeSrc":"2634:13:15","nodeType":"YulFunctionCall","src":"2634:13:15"},"variableNames":[{"name":"cc","nativeSrc":"2628:2:15","nodeType":"YulIdentifier","src":"2628:2:15"}]}]},"pre":{"nativeSrc":"2498:63:15","nodeType":"YulBlock","src":"2498:63:15","statements":[{"nativeSrc":"2516:31:15","nodeType":"YulVariableDeclaration","src":"2516:31:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"2530:10:15","nodeType":"YulIdentifier","src":"2530:10:15"},{"kind":"number","nativeSrc":"2542:4:15","nodeType":"YulLiteral","src":"2542:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2526:3:15","nodeType":"YulIdentifier","src":"2526:3:15"},"nativeSrc":"2526:21:15","nodeType":"YulFunctionCall","src":"2526:21:15"},"variables":[{"name":"cc","nativeSrc":"2520:2:15","nodeType":"YulTypedName","src":"2520:2:15","type":""}]}]},"src":"2494:221:15"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3147:4:15","nodeType":"YulLiteral","src":"3147:4:15","type":"","value":"0x40"},{"arguments":[{"arguments":[{"arguments":[{"name":"end","nativeSrc":"3180:3:15","nodeType":"YulIdentifier","src":"3180:3:15"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3196:6:15","nodeType":"YulIdentifier","src":"3196:6:15"},{"arguments":[{"name":"_preBytes","nativeSrc":"3210:9:15","nodeType":"YulIdentifier","src":"3210:9:15"}],"functionName":{"name":"mload","nativeSrc":"3204:5:15","nodeType":"YulIdentifier","src":"3204:5:15"},"nativeSrc":"3204:16:15","nodeType":"YulFunctionCall","src":"3204:16:15"}],"functionName":{"name":"add","nativeSrc":"3192:3:15","nodeType":"YulIdentifier","src":"3192:3:15"},"nativeSrc":"3192:29:15","nodeType":"YulFunctionCall","src":"3192:29:15"}],"functionName":{"name":"iszero","nativeSrc":"3185:6:15","nodeType":"YulIdentifier","src":"3185:6:15"},"nativeSrc":"3185:37:15","nodeType":"YulFunctionCall","src":"3185:37:15"}],"functionName":{"name":"add","nativeSrc":"3176:3:15","nodeType":"YulIdentifier","src":"3176:3:15"},"nativeSrc":"3176:47:15","nodeType":"YulFunctionCall","src":"3176:47:15"},{"kind":"number","nativeSrc":"3225:2:15","nodeType":"YulLiteral","src":"3225:2:15","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3172:3:15","nodeType":"YulIdentifier","src":"3172:3:15"},"nativeSrc":"3172:56:15","nodeType":"YulFunctionCall","src":"3172:56:15"},{"arguments":[{"kind":"number","nativeSrc":"3248:2:15","nodeType":"YulLiteral","src":"3248:2:15","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3244:3:15","nodeType":"YulIdentifier","src":"3244:3:15"},"nativeSrc":"3244:7:15","nodeType":"YulFunctionCall","src":"3244:7:15"}],"functionName":{"name":"and","nativeSrc":"3153:3:15","nodeType":"YulIdentifier","src":"3153:3:15"},"nativeSrc":"3153:151:15","nodeType":"YulFunctionCall","src":"3153:151:15"}],"functionName":{"name":"mstore","nativeSrc":"3140:6:15","nodeType":"YulIdentifier","src":"3140:6:15"},"nativeSrc":"3140:165:15","nodeType":"YulFunctionCall","src":"3140:165:15"},"nativeSrc":"3140:165:15","nodeType":"YulExpressionStatement","src":"3140:165:15"}]},"evmVersion":"prague","externalReferences":[{"declaration":4921,"isOffset":false,"isSlot":false,"src":"2112:10:15","valueSize":1},{"declaration":4921,"isOffset":false,"isSlot":false,"src":"2530:10:15","valueSize":1},{"declaration":4919,"isOffset":false,"isSlot":false,"src":"1532:9:15","valueSize":1},{"declaration":4919,"isOffset":false,"isSlot":false,"src":"3210:9:15","valueSize":1},{"declaration":4919,"isOffset":false,"isSlot":false,"src":"917:9:15","valueSize":1},{"declaration":4927,"isOffset":false,"isSlot":false,"src":"1189:9:15","valueSize":1},{"declaration":4927,"isOffset":false,"isSlot":false,"src":"2143:9:15","valueSize":1},{"declaration":4927,"isOffset":false,"isSlot":false,"src":"2172:9:15","valueSize":1},{"declaration":4927,"isOffset":false,"isSlot":false,"src":"741:9:15","valueSize":1},{"declaration":4927,"isOffset":false,"isSlot":false,"src":"947:9:15","valueSize":1}],"id":4929,"nodeType":"InlineAssembly","src":"588:2727:15"},{"expression":{"id":4930,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"3332:9:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4925,"id":4931,"nodeType":"Return","src":"3325:16:15"}]},"id":4933,"implemented":true,"kind":"function","modifiers":[],"name":"concat","nameLocation":"402:6:15","nodeType":"FunctionDefinition","parameters":{"id":4922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4919,"mutability":"mutable","name":"_preBytes","nameLocation":"431:9:15","nodeType":"VariableDeclaration","scope":4933,"src":"418:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4918,"name":"bytes","nodeType":"ElementaryTypeName","src":"418:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4921,"mutability":"mutable","name":"_postBytes","nameLocation":"463:10:15","nodeType":"VariableDeclaration","scope":4933,"src":"450:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4920,"name":"bytes","nodeType":"ElementaryTypeName","src":"450:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"408:71:15"},"returnParameters":{"id":4925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4933,"src":"527:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4923,"name":"bytes","nodeType":"ElementaryTypeName","src":"527:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"526:14:15"},"scope":5249,"src":"393:2955:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4941,"nodeType":"Block","src":"3436:6015:15","statements":[{"AST":{"nativeSrc":"3455:5990:15","nodeType":"YulBlock","src":"3455:5990:15","statements":[{"nativeSrc":"3678:34:15","nodeType":"YulVariableDeclaration","src":"3678:34:15","value":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"3697:14:15","nodeType":"YulIdentifier","src":"3697:14:15"}],"functionName":{"name":"sload","nativeSrc":"3691:5:15","nodeType":"YulIdentifier","src":"3691:5:15"},"nativeSrc":"3691:21:15","nodeType":"YulFunctionCall","src":"3691:21:15"},"variables":[{"name":"fslot","nativeSrc":"3682:5:15","nodeType":"YulTypedName","src":"3682:5:15","type":""}]},{"nativeSrc":"4205:76:15","nodeType":"YulVariableDeclaration","src":"4205:76:15","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"4228:5:15","nodeType":"YulIdentifier","src":"4228:5:15"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4243:5:15","nodeType":"YulLiteral","src":"4243:5:15","type":"","value":"0x100"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"4261:5:15","nodeType":"YulIdentifier","src":"4261:5:15"},{"kind":"number","nativeSrc":"4268:1:15","nodeType":"YulLiteral","src":"4268:1:15","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4257:3:15","nodeType":"YulIdentifier","src":"4257:3:15"},"nativeSrc":"4257:13:15","nodeType":"YulFunctionCall","src":"4257:13:15"}],"functionName":{"name":"iszero","nativeSrc":"4250:6:15","nodeType":"YulIdentifier","src":"4250:6:15"},"nativeSrc":"4250:21:15","nodeType":"YulFunctionCall","src":"4250:21:15"}],"functionName":{"name":"mul","nativeSrc":"4239:3:15","nodeType":"YulIdentifier","src":"4239:3:15"},"nativeSrc":"4239:33:15","nodeType":"YulFunctionCall","src":"4239:33:15"},{"kind":"number","nativeSrc":"4274:1:15","nodeType":"YulLiteral","src":"4274:1:15","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4235:3:15","nodeType":"YulIdentifier","src":"4235:3:15"},"nativeSrc":"4235:41:15","nodeType":"YulFunctionCall","src":"4235:41:15"}],"functionName":{"name":"and","nativeSrc":"4224:3:15","nodeType":"YulIdentifier","src":"4224:3:15"},"nativeSrc":"4224:53:15","nodeType":"YulFunctionCall","src":"4224:53:15"},{"kind":"number","nativeSrc":"4279:1:15","nodeType":"YulLiteral","src":"4279:1:15","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"4220:3:15","nodeType":"YulIdentifier","src":"4220:3:15"},"nativeSrc":"4220:61:15","nodeType":"YulFunctionCall","src":"4220:61:15"},"variables":[{"name":"slength","nativeSrc":"4209:7:15","nodeType":"YulTypedName","src":"4209:7:15","type":""}]},{"nativeSrc":"4294:32:15","nodeType":"YulVariableDeclaration","src":"4294:32:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"4315:10:15","nodeType":"YulIdentifier","src":"4315:10:15"}],"functionName":{"name":"mload","nativeSrc":"4309:5:15","nodeType":"YulIdentifier","src":"4309:5:15"},"nativeSrc":"4309:17:15","nodeType":"YulFunctionCall","src":"4309:17:15"},"variables":[{"name":"mlength","nativeSrc":"4298:7:15","nodeType":"YulTypedName","src":"4298:7:15","type":""}]},{"nativeSrc":"4339:38:15","nodeType":"YulVariableDeclaration","src":"4339:38:15","value":{"arguments":[{"name":"slength","nativeSrc":"4360:7:15","nodeType":"YulIdentifier","src":"4360:7:15"},{"name":"mlength","nativeSrc":"4369:7:15","nodeType":"YulIdentifier","src":"4369:7:15"}],"functionName":{"name":"add","nativeSrc":"4356:3:15","nodeType":"YulIdentifier","src":"4356:3:15"},"nativeSrc":"4356:21:15","nodeType":"YulFunctionCall","src":"4356:21:15"},"variables":[{"name":"newlength","nativeSrc":"4343:9:15","nodeType":"YulTypedName","src":"4343:9:15","type":""}]},{"cases":[{"body":{"nativeSrc":"4710:1485:15","nodeType":"YulBlock","src":"4710:1485:15","statements":[{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"4991:14:15","nodeType":"YulIdentifier","src":"4991:14:15"},{"arguments":[{"name":"fslot","nativeSrc":"5303:5:15","nodeType":"YulIdentifier","src":"5303:5:15"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_postBytes","nativeSrc":"5521:10:15","nodeType":"YulIdentifier","src":"5521:10:15"},{"kind":"number","nativeSrc":"5533:4:15","nodeType":"YulLiteral","src":"5533:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5517:3:15","nodeType":"YulIdentifier","src":"5517:3:15"},"nativeSrc":"5517:21:15","nodeType":"YulFunctionCall","src":"5517:21:15"}],"functionName":{"name":"mload","nativeSrc":"5511:5:15","nodeType":"YulIdentifier","src":"5511:5:15"},"nativeSrc":"5511:28:15","nodeType":"YulFunctionCall","src":"5511:28:15"},{"arguments":[{"kind":"number","nativeSrc":"5648:5:15","nodeType":"YulLiteral","src":"5648:5:15","type":"","value":"0x100"},{"arguments":[{"kind":"number","nativeSrc":"5659:2:15","nodeType":"YulLiteral","src":"5659:2:15","type":"","value":"32"},{"name":"mlength","nativeSrc":"5663:7:15","nodeType":"YulIdentifier","src":"5663:7:15"}],"functionName":{"name":"sub","nativeSrc":"5655:3:15","nodeType":"YulIdentifier","src":"5655:3:15"},"nativeSrc":"5655:16:15","nodeType":"YulFunctionCall","src":"5655:16:15"}],"functionName":{"name":"exp","nativeSrc":"5644:3:15","nodeType":"YulIdentifier","src":"5644:3:15"},"nativeSrc":"5644:28:15","nodeType":"YulFunctionCall","src":"5644:28:15"}],"functionName":{"name":"div","nativeSrc":"5404:3:15","nodeType":"YulIdentifier","src":"5404:3:15"},"nativeSrc":"5404:302:15","nodeType":"YulFunctionCall","src":"5404:302:15"},{"arguments":[{"kind":"number","nativeSrc":"5895:5:15","nodeType":"YulLiteral","src":"5895:5:15","type":"","value":"0x100"},{"arguments":[{"kind":"number","nativeSrc":"5906:2:15","nodeType":"YulLiteral","src":"5906:2:15","type":"","value":"32"},{"name":"newlength","nativeSrc":"5910:9:15","nodeType":"YulIdentifier","src":"5910:9:15"}],"functionName":{"name":"sub","nativeSrc":"5902:3:15","nodeType":"YulIdentifier","src":"5902:3:15"},"nativeSrc":"5902:18:15","nodeType":"YulFunctionCall","src":"5902:18:15"}],"functionName":{"name":"exp","nativeSrc":"5891:3:15","nodeType":"YulIdentifier","src":"5891:3:15"},"nativeSrc":"5891:30:15","nodeType":"YulFunctionCall","src":"5891:30:15"}],"functionName":{"name":"mul","nativeSrc":"5367:3:15","nodeType":"YulIdentifier","src":"5367:3:15"},"nativeSrc":"5367:584:15","nodeType":"YulFunctionCall","src":"5367:584:15"},{"arguments":[{"name":"mlength","nativeSrc":"6104:7:15","nodeType":"YulIdentifier","src":"6104:7:15"},{"kind":"number","nativeSrc":"6113:1:15","nodeType":"YulLiteral","src":"6113:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6100:3:15","nodeType":"YulIdentifier","src":"6100:3:15"},"nativeSrc":"6100:15:15","nodeType":"YulFunctionCall","src":"6100:15:15"}],"functionName":{"name":"add","nativeSrc":"5334:3:15","nodeType":"YulIdentifier","src":"5334:3:15"},"nativeSrc":"5334:807:15","nodeType":"YulFunctionCall","src":"5334:807:15"}],"functionName":{"name":"add","nativeSrc":"5134:3:15","nodeType":"YulIdentifier","src":"5134:3:15"},"nativeSrc":"5134:1029:15","nodeType":"YulFunctionCall","src":"5134:1029:15"}],"functionName":{"name":"sstore","nativeSrc":"4963:6:15","nodeType":"YulIdentifier","src":"4963:6:15"},"nativeSrc":"4963:1218:15","nodeType":"YulFunctionCall","src":"4963:1218:15"},"nativeSrc":"4963:1218:15","nodeType":"YulExpressionStatement","src":"4963:1218:15"}]},"nativeSrc":"4703:1492:15","nodeType":"YulCase","src":"4703:1492:15","value":{"kind":"number","nativeSrc":"4708:1:15","nodeType":"YulLiteral","src":"4708:1:15","type":"","value":"2"}},{"body":{"nativeSrc":"6215:1935:15","nodeType":"YulBlock","src":"6215:1935:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6424:3:15","nodeType":"YulLiteral","src":"6424:3:15","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"6429:14:15","nodeType":"YulIdentifier","src":"6429:14:15"}],"functionName":{"name":"mstore","nativeSrc":"6417:6:15","nodeType":"YulIdentifier","src":"6417:6:15"},"nativeSrc":"6417:27:15","nodeType":"YulFunctionCall","src":"6417:27:15"},"nativeSrc":"6417:27:15","nodeType":"YulExpressionStatement","src":"6417:27:15"},{"nativeSrc":"6461:53:15","nodeType":"YulVariableDeclaration","src":"6461:53:15","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6485:3:15","nodeType":"YulLiteral","src":"6485:3:15","type":"","value":"0x0"},{"kind":"number","nativeSrc":"6490:4:15","nodeType":"YulLiteral","src":"6490:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"6475:9:15","nodeType":"YulIdentifier","src":"6475:9:15"},"nativeSrc":"6475:20:15","nodeType":"YulFunctionCall","src":"6475:20:15"},{"arguments":[{"name":"slength","nativeSrc":"6501:7:15","nodeType":"YulIdentifier","src":"6501:7:15"},{"kind":"number","nativeSrc":"6510:2:15","nodeType":"YulLiteral","src":"6510:2:15","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"6497:3:15","nodeType":"YulIdentifier","src":"6497:3:15"},"nativeSrc":"6497:16:15","nodeType":"YulFunctionCall","src":"6497:16:15"}],"functionName":{"name":"add","nativeSrc":"6471:3:15","nodeType":"YulIdentifier","src":"6471:3:15"},"nativeSrc":"6471:43:15","nodeType":"YulFunctionCall","src":"6471:43:15"},"variables":[{"name":"sc","nativeSrc":"6465:2:15","nodeType":"YulTypedName","src":"6465:2:15","type":""}]},{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"6574:14:15","nodeType":"YulIdentifier","src":"6574:14:15"},{"arguments":[{"arguments":[{"name":"newlength","nativeSrc":"6598:9:15","nodeType":"YulIdentifier","src":"6598:9:15"},{"kind":"number","nativeSrc":"6609:1:15","nodeType":"YulLiteral","src":"6609:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6594:3:15","nodeType":"YulIdentifier","src":"6594:3:15"},"nativeSrc":"6594:17:15","nodeType":"YulFunctionCall","src":"6594:17:15"},{"kind":"number","nativeSrc":"6613:1:15","nodeType":"YulLiteral","src":"6613:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6590:3:15","nodeType":"YulIdentifier","src":"6590:3:15"},"nativeSrc":"6590:25:15","nodeType":"YulFunctionCall","src":"6590:25:15"}],"functionName":{"name":"sstore","nativeSrc":"6567:6:15","nodeType":"YulIdentifier","src":"6567:6:15"},"nativeSrc":"6567:49:15","nodeType":"YulFunctionCall","src":"6567:49:15"},"nativeSrc":"6567:49:15","nodeType":"YulExpressionStatement","src":"6567:49:15"},{"nativeSrc":"7204:30:15","nodeType":"YulVariableDeclaration","src":"7204:30:15","value":{"arguments":[{"kind":"number","nativeSrc":"7222:2:15","nodeType":"YulLiteral","src":"7222:2:15","type":"","value":"32"},{"name":"slength","nativeSrc":"7226:7:15","nodeType":"YulIdentifier","src":"7226:7:15"}],"functionName":{"name":"sub","nativeSrc":"7218:3:15","nodeType":"YulIdentifier","src":"7218:3:15"},"nativeSrc":"7218:16:15","nodeType":"YulFunctionCall","src":"7218:16:15"},"variables":[{"name":"submod","nativeSrc":"7208:6:15","nodeType":"YulTypedName","src":"7208:6:15","type":""}]},{"nativeSrc":"7251:33:15","nodeType":"YulVariableDeclaration","src":"7251:33:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"7265:10:15","nodeType":"YulIdentifier","src":"7265:10:15"},{"name":"submod","nativeSrc":"7277:6:15","nodeType":"YulIdentifier","src":"7277:6:15"}],"functionName":{"name":"add","nativeSrc":"7261:3:15","nodeType":"YulIdentifier","src":"7261:3:15"},"nativeSrc":"7261:23:15","nodeType":"YulFunctionCall","src":"7261:23:15"},"variables":[{"name":"mc","nativeSrc":"7255:2:15","nodeType":"YulTypedName","src":"7255:2:15","type":""}]},{"nativeSrc":"7301:35:15","nodeType":"YulVariableDeclaration","src":"7301:35:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"7316:10:15","nodeType":"YulIdentifier","src":"7316:10:15"},{"name":"mlength","nativeSrc":"7328:7:15","nodeType":"YulIdentifier","src":"7328:7:15"}],"functionName":{"name":"add","nativeSrc":"7312:3:15","nodeType":"YulIdentifier","src":"7312:3:15"},"nativeSrc":"7312:24:15","nodeType":"YulFunctionCall","src":"7312:24:15"},"variables":[{"name":"end","nativeSrc":"7305:3:15","nodeType":"YulTypedName","src":"7305:3:15","type":""}]},{"nativeSrc":"7353:38:15","nodeType":"YulVariableDeclaration","src":"7353:38:15","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7373:5:15","nodeType":"YulLiteral","src":"7373:5:15","type":"","value":"0x100"},{"name":"submod","nativeSrc":"7380:6:15","nodeType":"YulIdentifier","src":"7380:6:15"}],"functionName":{"name":"exp","nativeSrc":"7369:3:15","nodeType":"YulIdentifier","src":"7369:3:15"},"nativeSrc":"7369:18:15","nodeType":"YulFunctionCall","src":"7369:18:15"},{"kind":"number","nativeSrc":"7389:1:15","nodeType":"YulLiteral","src":"7389:1:15","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7365:3:15","nodeType":"YulIdentifier","src":"7365:3:15"},"nativeSrc":"7365:26:15","nodeType":"YulFunctionCall","src":"7365:26:15"},"variables":[{"name":"mask","nativeSrc":"7357:4:15","nodeType":"YulTypedName","src":"7357:4:15","type":""}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"7437:2:15","nodeType":"YulIdentifier","src":"7437:2:15"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"7523:5:15","nodeType":"YulIdentifier","src":"7523:5:15"},{"kind":"number","nativeSrc":"7558:66:15","nodeType":"YulLiteral","src":"7558:66:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00"}],"functionName":{"name":"and","nativeSrc":"7490:3:15","nodeType":"YulIdentifier","src":"7490:3:15"},"nativeSrc":"7490:160:15","nodeType":"YulFunctionCall","src":"7490:160:15"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"7686:2:15","nodeType":"YulIdentifier","src":"7686:2:15"}],"functionName":{"name":"mload","nativeSrc":"7680:5:15","nodeType":"YulIdentifier","src":"7680:5:15"},"nativeSrc":"7680:9:15","nodeType":"YulFunctionCall","src":"7680:9:15"},{"name":"mask","nativeSrc":"7691:4:15","nodeType":"YulIdentifier","src":"7691:4:15"}],"functionName":{"name":"and","nativeSrc":"7676:3:15","nodeType":"YulIdentifier","src":"7676:3:15"},"nativeSrc":"7676:20:15","nodeType":"YulFunctionCall","src":"7676:20:15"}],"functionName":{"name":"add","nativeSrc":"7461:3:15","nodeType":"YulIdentifier","src":"7461:3:15"},"nativeSrc":"7461:257:15","nodeType":"YulFunctionCall","src":"7461:257:15"}],"functionName":{"name":"sstore","nativeSrc":"7409:6:15","nodeType":"YulIdentifier","src":"7409:6:15"},"nativeSrc":"7409:327:15","nodeType":"YulFunctionCall","src":"7409:327:15"},"nativeSrc":"7409:327:15","nodeType":"YulExpressionStatement","src":"7409:327:15"},{"body":{"nativeSrc":"7964:61:15","nodeType":"YulBlock","src":"7964:61:15","statements":[{"expression":{"arguments":[{"name":"sc","nativeSrc":"7993:2:15","nodeType":"YulIdentifier","src":"7993:2:15"},{"arguments":[{"name":"mc","nativeSrc":"8003:2:15","nodeType":"YulIdentifier","src":"8003:2:15"}],"functionName":{"name":"mload","nativeSrc":"7997:5:15","nodeType":"YulIdentifier","src":"7997:5:15"},"nativeSrc":"7997:9:15","nodeType":"YulFunctionCall","src":"7997:9:15"}],"functionName":{"name":"sstore","nativeSrc":"7986:6:15","nodeType":"YulIdentifier","src":"7986:6:15"},"nativeSrc":"7986:21:15","nodeType":"YulFunctionCall","src":"7986:21:15"},"nativeSrc":"7986:21:15","nodeType":"YulExpressionStatement","src":"7986:21:15"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"7858:2:15","nodeType":"YulIdentifier","src":"7858:2:15"},{"name":"end","nativeSrc":"7862:3:15","nodeType":"YulIdentifier","src":"7862:3:15"}],"functionName":{"name":"lt","nativeSrc":"7855:2:15","nodeType":"YulIdentifier","src":"7855:2:15"},"nativeSrc":"7855:11:15","nodeType":"YulFunctionCall","src":"7855:11:15"},"nativeSrc":"7754:271:15","nodeType":"YulForLoop","post":{"nativeSrc":"7867:96:15","nodeType":"YulBlock","src":"7867:96:15","statements":[{"nativeSrc":"7889:16:15","nodeType":"YulAssignment","src":"7889:16:15","value":{"arguments":[{"name":"sc","nativeSrc":"7899:2:15","nodeType":"YulIdentifier","src":"7899:2:15"},{"kind":"number","nativeSrc":"7903:1:15","nodeType":"YulLiteral","src":"7903:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7895:3:15","nodeType":"YulIdentifier","src":"7895:3:15"},"nativeSrc":"7895:10:15","nodeType":"YulFunctionCall","src":"7895:10:15"},"variableNames":[{"name":"sc","nativeSrc":"7889:2:15","nodeType":"YulIdentifier","src":"7889:2:15"}]},{"nativeSrc":"7926:19:15","nodeType":"YulAssignment","src":"7926:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"7936:2:15","nodeType":"YulIdentifier","src":"7936:2:15"},{"kind":"number","nativeSrc":"7940:4:15","nodeType":"YulLiteral","src":"7940:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7932:3:15","nodeType":"YulIdentifier","src":"7932:3:15"},"nativeSrc":"7932:13:15","nodeType":"YulFunctionCall","src":"7932:13:15"},"variableNames":[{"name":"mc","nativeSrc":"7926:2:15","nodeType":"YulIdentifier","src":"7926:2:15"}]}]},"pre":{"nativeSrc":"7758:96:15","nodeType":"YulBlock","src":"7758:96:15","statements":[{"nativeSrc":"7780:19:15","nodeType":"YulAssignment","src":"7780:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"7790:2:15","nodeType":"YulIdentifier","src":"7790:2:15"},{"kind":"number","nativeSrc":"7794:4:15","nodeType":"YulLiteral","src":"7794:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7786:3:15","nodeType":"YulIdentifier","src":"7786:3:15"},"nativeSrc":"7786:13:15","nodeType":"YulFunctionCall","src":"7786:13:15"},"variableNames":[{"name":"mc","nativeSrc":"7780:2:15","nodeType":"YulIdentifier","src":"7780:2:15"}]},{"nativeSrc":"7820:16:15","nodeType":"YulAssignment","src":"7820:16:15","value":{"arguments":[{"name":"sc","nativeSrc":"7830:2:15","nodeType":"YulIdentifier","src":"7830:2:15"},{"kind":"number","nativeSrc":"7834:1:15","nodeType":"YulLiteral","src":"7834:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7826:3:15","nodeType":"YulIdentifier","src":"7826:3:15"},"nativeSrc":"7826:10:15","nodeType":"YulFunctionCall","src":"7826:10:15"},"variableNames":[{"name":"sc","nativeSrc":"7820:2:15","nodeType":"YulIdentifier","src":"7820:2:15"}]}]},"src":"7754:271:15"},{"nativeSrc":"8043:32:15","nodeType":"YulAssignment","src":"8043:32:15","value":{"arguments":[{"kind":"number","nativeSrc":"8055:5:15","nodeType":"YulLiteral","src":"8055:5:15","type":"","value":"0x100"},{"arguments":[{"name":"mc","nativeSrc":"8066:2:15","nodeType":"YulIdentifier","src":"8066:2:15"},{"name":"end","nativeSrc":"8070:3:15","nodeType":"YulIdentifier","src":"8070:3:15"}],"functionName":{"name":"sub","nativeSrc":"8062:3:15","nodeType":"YulIdentifier","src":"8062:3:15"},"nativeSrc":"8062:12:15","nodeType":"YulFunctionCall","src":"8062:12:15"}],"functionName":{"name":"exp","nativeSrc":"8051:3:15","nodeType":"YulIdentifier","src":"8051:3:15"},"nativeSrc":"8051:24:15","nodeType":"YulFunctionCall","src":"8051:24:15"},"variableNames":[{"name":"mask","nativeSrc":"8043:4:15","nodeType":"YulIdentifier","src":"8043:4:15"}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"8100:2:15","nodeType":"YulIdentifier","src":"8100:2:15"},{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"8118:2:15","nodeType":"YulIdentifier","src":"8118:2:15"}],"functionName":{"name":"mload","nativeSrc":"8112:5:15","nodeType":"YulIdentifier","src":"8112:5:15"},"nativeSrc":"8112:9:15","nodeType":"YulFunctionCall","src":"8112:9:15"},{"name":"mask","nativeSrc":"8123:4:15","nodeType":"YulIdentifier","src":"8123:4:15"}],"functionName":{"name":"div","nativeSrc":"8108:3:15","nodeType":"YulIdentifier","src":"8108:3:15"},"nativeSrc":"8108:20:15","nodeType":"YulFunctionCall","src":"8108:20:15"},{"name":"mask","nativeSrc":"8130:4:15","nodeType":"YulIdentifier","src":"8130:4:15"}],"functionName":{"name":"mul","nativeSrc":"8104:3:15","nodeType":"YulIdentifier","src":"8104:3:15"},"nativeSrc":"8104:31:15","nodeType":"YulFunctionCall","src":"8104:31:15"}],"functionName":{"name":"sstore","nativeSrc":"8093:6:15","nodeType":"YulIdentifier","src":"8093:6:15"},"nativeSrc":"8093:43:15","nodeType":"YulFunctionCall","src":"8093:43:15"},"nativeSrc":"8093:43:15","nodeType":"YulExpressionStatement","src":"8093:43:15"}]},"nativeSrc":"6208:1942:15","nodeType":"YulCase","src":"6208:1942:15","value":{"kind":"number","nativeSrc":"6213:1:15","nodeType":"YulLiteral","src":"6213:1:15","type":"","value":"1"}},{"body":{"nativeSrc":"8171:1264:15","nodeType":"YulBlock","src":"8171:1264:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8268:3:15","nodeType":"YulLiteral","src":"8268:3:15","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"8273:14:15","nodeType":"YulIdentifier","src":"8273:14:15"}],"functionName":{"name":"mstore","nativeSrc":"8261:6:15","nodeType":"YulIdentifier","src":"8261:6:15"},"nativeSrc":"8261:27:15","nodeType":"YulFunctionCall","src":"8261:27:15"},"nativeSrc":"8261:27:15","nodeType":"YulExpressionStatement","src":"8261:27:15"},{"nativeSrc":"8381:53:15","nodeType":"YulVariableDeclaration","src":"8381:53:15","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8405:3:15","nodeType":"YulLiteral","src":"8405:3:15","type":"","value":"0x0"},{"kind":"number","nativeSrc":"8410:4:15","nodeType":"YulLiteral","src":"8410:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8395:9:15","nodeType":"YulIdentifier","src":"8395:9:15"},"nativeSrc":"8395:20:15","nodeType":"YulFunctionCall","src":"8395:20:15"},{"arguments":[{"name":"slength","nativeSrc":"8421:7:15","nodeType":"YulIdentifier","src":"8421:7:15"},{"kind":"number","nativeSrc":"8430:2:15","nodeType":"YulLiteral","src":"8430:2:15","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"8417:3:15","nodeType":"YulIdentifier","src":"8417:3:15"},"nativeSrc":"8417:16:15","nodeType":"YulFunctionCall","src":"8417:16:15"}],"functionName":{"name":"add","nativeSrc":"8391:3:15","nodeType":"YulIdentifier","src":"8391:3:15"},"nativeSrc":"8391:43:15","nodeType":"YulFunctionCall","src":"8391:43:15"},"variables":[{"name":"sc","nativeSrc":"8385:2:15","nodeType":"YulTypedName","src":"8385:2:15","type":""}]},{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"8494:14:15","nodeType":"YulIdentifier","src":"8494:14:15"},{"arguments":[{"arguments":[{"name":"newlength","nativeSrc":"8518:9:15","nodeType":"YulIdentifier","src":"8518:9:15"},{"kind":"number","nativeSrc":"8529:1:15","nodeType":"YulLiteral","src":"8529:1:15","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"8514:3:15","nodeType":"YulIdentifier","src":"8514:3:15"},"nativeSrc":"8514:17:15","nodeType":"YulFunctionCall","src":"8514:17:15"},{"kind":"number","nativeSrc":"8533:1:15","nodeType":"YulLiteral","src":"8533:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8510:3:15","nodeType":"YulIdentifier","src":"8510:3:15"},"nativeSrc":"8510:25:15","nodeType":"YulFunctionCall","src":"8510:25:15"}],"functionName":{"name":"sstore","nativeSrc":"8487:6:15","nodeType":"YulIdentifier","src":"8487:6:15"},"nativeSrc":"8487:49:15","nodeType":"YulFunctionCall","src":"8487:49:15"},"nativeSrc":"8487:49:15","nodeType":"YulExpressionStatement","src":"8487:49:15"},{"nativeSrc":"8663:34:15","nodeType":"YulVariableDeclaration","src":"8663:34:15","value":{"arguments":[{"name":"slength","nativeSrc":"8685:7:15","nodeType":"YulIdentifier","src":"8685:7:15"},{"kind":"number","nativeSrc":"8694:2:15","nodeType":"YulLiteral","src":"8694:2:15","type":"","value":"32"}],"functionName":{"name":"mod","nativeSrc":"8681:3:15","nodeType":"YulIdentifier","src":"8681:3:15"},"nativeSrc":"8681:16:15","nodeType":"YulFunctionCall","src":"8681:16:15"},"variables":[{"name":"slengthmod","nativeSrc":"8667:10:15","nodeType":"YulTypedName","src":"8667:10:15","type":""}]},{"nativeSrc":"8714:34:15","nodeType":"YulVariableDeclaration","src":"8714:34:15","value":{"arguments":[{"name":"mlength","nativeSrc":"8736:7:15","nodeType":"YulIdentifier","src":"8736:7:15"},{"kind":"number","nativeSrc":"8745:2:15","nodeType":"YulLiteral","src":"8745:2:15","type":"","value":"32"}],"functionName":{"name":"mod","nativeSrc":"8732:3:15","nodeType":"YulIdentifier","src":"8732:3:15"},"nativeSrc":"8732:16:15","nodeType":"YulFunctionCall","src":"8732:16:15"},"variables":[{"name":"mlengthmod","nativeSrc":"8718:10:15","nodeType":"YulTypedName","src":"8718:10:15","type":""}]},{"nativeSrc":"8765:33:15","nodeType":"YulVariableDeclaration","src":"8765:33:15","value":{"arguments":[{"kind":"number","nativeSrc":"8783:2:15","nodeType":"YulLiteral","src":"8783:2:15","type":"","value":"32"},{"name":"slengthmod","nativeSrc":"8787:10:15","nodeType":"YulIdentifier","src":"8787:10:15"}],"functionName":{"name":"sub","nativeSrc":"8779:3:15","nodeType":"YulIdentifier","src":"8779:3:15"},"nativeSrc":"8779:19:15","nodeType":"YulFunctionCall","src":"8779:19:15"},"variables":[{"name":"submod","nativeSrc":"8769:6:15","nodeType":"YulTypedName","src":"8769:6:15","type":""}]},{"nativeSrc":"8815:33:15","nodeType":"YulVariableDeclaration","src":"8815:33:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"8829:10:15","nodeType":"YulIdentifier","src":"8829:10:15"},{"name":"submod","nativeSrc":"8841:6:15","nodeType":"YulIdentifier","src":"8841:6:15"}],"functionName":{"name":"add","nativeSrc":"8825:3:15","nodeType":"YulIdentifier","src":"8825:3:15"},"nativeSrc":"8825:23:15","nodeType":"YulFunctionCall","src":"8825:23:15"},"variables":[{"name":"mc","nativeSrc":"8819:2:15","nodeType":"YulTypedName","src":"8819:2:15","type":""}]},{"nativeSrc":"8865:35:15","nodeType":"YulVariableDeclaration","src":"8865:35:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"8880:10:15","nodeType":"YulIdentifier","src":"8880:10:15"},{"name":"mlength","nativeSrc":"8892:7:15","nodeType":"YulIdentifier","src":"8892:7:15"}],"functionName":{"name":"add","nativeSrc":"8876:3:15","nodeType":"YulIdentifier","src":"8876:3:15"},"nativeSrc":"8876:24:15","nodeType":"YulFunctionCall","src":"8876:24:15"},"variables":[{"name":"end","nativeSrc":"8869:3:15","nodeType":"YulTypedName","src":"8869:3:15","type":""}]},{"nativeSrc":"8917:38:15","nodeType":"YulVariableDeclaration","src":"8917:38:15","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8937:5:15","nodeType":"YulLiteral","src":"8937:5:15","type":"","value":"0x100"},{"name":"submod","nativeSrc":"8944:6:15","nodeType":"YulIdentifier","src":"8944:6:15"}],"functionName":{"name":"exp","nativeSrc":"8933:3:15","nodeType":"YulIdentifier","src":"8933:3:15"},"nativeSrc":"8933:18:15","nodeType":"YulFunctionCall","src":"8933:18:15"},{"kind":"number","nativeSrc":"8953:1:15","nodeType":"YulLiteral","src":"8953:1:15","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8929:3:15","nodeType":"YulIdentifier","src":"8929:3:15"},"nativeSrc":"8929:26:15","nodeType":"YulFunctionCall","src":"8929:26:15"},"variables":[{"name":"mask","nativeSrc":"8921:4:15","nodeType":"YulTypedName","src":"8921:4:15","type":""}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"8980:2:15","nodeType":"YulIdentifier","src":"8980:2:15"},{"arguments":[{"arguments":[{"name":"sc","nativeSrc":"8994:2:15","nodeType":"YulIdentifier","src":"8994:2:15"}],"functionName":{"name":"sload","nativeSrc":"8988:5:15","nodeType":"YulIdentifier","src":"8988:5:15"},"nativeSrc":"8988:9:15","nodeType":"YulFunctionCall","src":"8988:9:15"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"9009:2:15","nodeType":"YulIdentifier","src":"9009:2:15"}],"functionName":{"name":"mload","nativeSrc":"9003:5:15","nodeType":"YulIdentifier","src":"9003:5:15"},"nativeSrc":"9003:9:15","nodeType":"YulFunctionCall","src":"9003:9:15"},{"name":"mask","nativeSrc":"9014:4:15","nodeType":"YulIdentifier","src":"9014:4:15"}],"functionName":{"name":"and","nativeSrc":"8999:3:15","nodeType":"YulIdentifier","src":"8999:3:15"},"nativeSrc":"8999:20:15","nodeType":"YulFunctionCall","src":"8999:20:15"}],"functionName":{"name":"add","nativeSrc":"8984:3:15","nodeType":"YulIdentifier","src":"8984:3:15"},"nativeSrc":"8984:36:15","nodeType":"YulFunctionCall","src":"8984:36:15"}],"functionName":{"name":"sstore","nativeSrc":"8973:6:15","nodeType":"YulIdentifier","src":"8973:6:15"},"nativeSrc":"8973:48:15","nodeType":"YulFunctionCall","src":"8973:48:15"},"nativeSrc":"8973:48:15","nodeType":"YulExpressionStatement","src":"8973:48:15"},{"body":{"nativeSrc":"9249:61:15","nodeType":"YulBlock","src":"9249:61:15","statements":[{"expression":{"arguments":[{"name":"sc","nativeSrc":"9278:2:15","nodeType":"YulIdentifier","src":"9278:2:15"},{"arguments":[{"name":"mc","nativeSrc":"9288:2:15","nodeType":"YulIdentifier","src":"9288:2:15"}],"functionName":{"name":"mload","nativeSrc":"9282:5:15","nodeType":"YulIdentifier","src":"9282:5:15"},"nativeSrc":"9282:9:15","nodeType":"YulFunctionCall","src":"9282:9:15"}],"functionName":{"name":"sstore","nativeSrc":"9271:6:15","nodeType":"YulIdentifier","src":"9271:6:15"},"nativeSrc":"9271:21:15","nodeType":"YulFunctionCall","src":"9271:21:15"},"nativeSrc":"9271:21:15","nodeType":"YulExpressionStatement","src":"9271:21:15"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"9143:2:15","nodeType":"YulIdentifier","src":"9143:2:15"},{"name":"end","nativeSrc":"9147:3:15","nodeType":"YulIdentifier","src":"9147:3:15"}],"functionName":{"name":"lt","nativeSrc":"9140:2:15","nodeType":"YulIdentifier","src":"9140:2:15"},"nativeSrc":"9140:11:15","nodeType":"YulFunctionCall","src":"9140:11:15"},"nativeSrc":"9039:271:15","nodeType":"YulForLoop","post":{"nativeSrc":"9152:96:15","nodeType":"YulBlock","src":"9152:96:15","statements":[{"nativeSrc":"9174:16:15","nodeType":"YulAssignment","src":"9174:16:15","value":{"arguments":[{"name":"sc","nativeSrc":"9184:2:15","nodeType":"YulIdentifier","src":"9184:2:15"},{"kind":"number","nativeSrc":"9188:1:15","nodeType":"YulLiteral","src":"9188:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9180:3:15","nodeType":"YulIdentifier","src":"9180:3:15"},"nativeSrc":"9180:10:15","nodeType":"YulFunctionCall","src":"9180:10:15"},"variableNames":[{"name":"sc","nativeSrc":"9174:2:15","nodeType":"YulIdentifier","src":"9174:2:15"}]},{"nativeSrc":"9211:19:15","nodeType":"YulAssignment","src":"9211:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"9221:2:15","nodeType":"YulIdentifier","src":"9221:2:15"},{"kind":"number","nativeSrc":"9225:4:15","nodeType":"YulLiteral","src":"9225:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9217:3:15","nodeType":"YulIdentifier","src":"9217:3:15"},"nativeSrc":"9217:13:15","nodeType":"YulFunctionCall","src":"9217:13:15"},"variableNames":[{"name":"mc","nativeSrc":"9211:2:15","nodeType":"YulIdentifier","src":"9211:2:15"}]}]},"pre":{"nativeSrc":"9043:96:15","nodeType":"YulBlock","src":"9043:96:15","statements":[{"nativeSrc":"9065:16:15","nodeType":"YulAssignment","src":"9065:16:15","value":{"arguments":[{"name":"sc","nativeSrc":"9075:2:15","nodeType":"YulIdentifier","src":"9075:2:15"},{"kind":"number","nativeSrc":"9079:1:15","nodeType":"YulLiteral","src":"9079:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9071:3:15","nodeType":"YulIdentifier","src":"9071:3:15"},"nativeSrc":"9071:10:15","nodeType":"YulFunctionCall","src":"9071:10:15"},"variableNames":[{"name":"sc","nativeSrc":"9065:2:15","nodeType":"YulIdentifier","src":"9065:2:15"}]},{"nativeSrc":"9102:19:15","nodeType":"YulAssignment","src":"9102:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"9112:2:15","nodeType":"YulIdentifier","src":"9112:2:15"},{"kind":"number","nativeSrc":"9116:4:15","nodeType":"YulLiteral","src":"9116:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9108:3:15","nodeType":"YulIdentifier","src":"9108:3:15"},"nativeSrc":"9108:13:15","nodeType":"YulFunctionCall","src":"9108:13:15"},"variableNames":[{"name":"mc","nativeSrc":"9102:2:15","nodeType":"YulIdentifier","src":"9102:2:15"}]}]},"src":"9039:271:15"},{"nativeSrc":"9328:32:15","nodeType":"YulAssignment","src":"9328:32:15","value":{"arguments":[{"kind":"number","nativeSrc":"9340:5:15","nodeType":"YulLiteral","src":"9340:5:15","type":"","value":"0x100"},{"arguments":[{"name":"mc","nativeSrc":"9351:2:15","nodeType":"YulIdentifier","src":"9351:2:15"},{"name":"end","nativeSrc":"9355:3:15","nodeType":"YulIdentifier","src":"9355:3:15"}],"functionName":{"name":"sub","nativeSrc":"9347:3:15","nodeType":"YulIdentifier","src":"9347:3:15"},"nativeSrc":"9347:12:15","nodeType":"YulFunctionCall","src":"9347:12:15"}],"functionName":{"name":"exp","nativeSrc":"9336:3:15","nodeType":"YulIdentifier","src":"9336:3:15"},"nativeSrc":"9336:24:15","nodeType":"YulFunctionCall","src":"9336:24:15"},"variableNames":[{"name":"mask","nativeSrc":"9328:4:15","nodeType":"YulIdentifier","src":"9328:4:15"}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"9385:2:15","nodeType":"YulIdentifier","src":"9385:2:15"},{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"9403:2:15","nodeType":"YulIdentifier","src":"9403:2:15"}],"functionName":{"name":"mload","nativeSrc":"9397:5:15","nodeType":"YulIdentifier","src":"9397:5:15"},"nativeSrc":"9397:9:15","nodeType":"YulFunctionCall","src":"9397:9:15"},{"name":"mask","nativeSrc":"9408:4:15","nodeType":"YulIdentifier","src":"9408:4:15"}],"functionName":{"name":"div","nativeSrc":"9393:3:15","nodeType":"YulIdentifier","src":"9393:3:15"},"nativeSrc":"9393:20:15","nodeType":"YulFunctionCall","src":"9393:20:15"},{"name":"mask","nativeSrc":"9415:4:15","nodeType":"YulIdentifier","src":"9415:4:15"}],"functionName":{"name":"mul","nativeSrc":"9389:3:15","nodeType":"YulIdentifier","src":"9389:3:15"},"nativeSrc":"9389:31:15","nodeType":"YulFunctionCall","src":"9389:31:15"}],"functionName":{"name":"sstore","nativeSrc":"9378:6:15","nodeType":"YulIdentifier","src":"9378:6:15"},"nativeSrc":"9378:43:15","nodeType":"YulFunctionCall","src":"9378:43:15"},"nativeSrc":"9378:43:15","nodeType":"YulExpressionStatement","src":"9378:43:15"}]},"nativeSrc":"8163:1272:15","nodeType":"YulCase","src":"8163:1272:15","value":"default"}],"expression":{"arguments":[{"arguments":[{"name":"slength","nativeSrc":"4658:7:15","nodeType":"YulIdentifier","src":"4658:7:15"},{"kind":"number","nativeSrc":"4667:2:15","nodeType":"YulLiteral","src":"4667:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4655:2:15","nodeType":"YulIdentifier","src":"4655:2:15"},"nativeSrc":"4655:15:15","nodeType":"YulFunctionCall","src":"4655:15:15"},{"arguments":[{"name":"newlength","nativeSrc":"4675:9:15","nodeType":"YulIdentifier","src":"4675:9:15"},{"kind":"number","nativeSrc":"4686:2:15","nodeType":"YulLiteral","src":"4686:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4672:2:15","nodeType":"YulIdentifier","src":"4672:2:15"},"nativeSrc":"4672:17:15","nodeType":"YulFunctionCall","src":"4672:17:15"}],"functionName":{"name":"add","nativeSrc":"4651:3:15","nodeType":"YulIdentifier","src":"4651:3:15"},"nativeSrc":"4651:39:15","nodeType":"YulFunctionCall","src":"4651:39:15"},"nativeSrc":"4644:4791:15","nodeType":"YulSwitch","src":"4644:4791:15"}]},"evmVersion":"prague","externalReferences":[{"declaration":4937,"isOffset":false,"isSlot":false,"src":"4315:10:15","valueSize":1},{"declaration":4937,"isOffset":false,"isSlot":false,"src":"5521:10:15","valueSize":1},{"declaration":4937,"isOffset":false,"isSlot":false,"src":"7265:10:15","valueSize":1},{"declaration":4937,"isOffset":false,"isSlot":false,"src":"7316:10:15","valueSize":1},{"declaration":4937,"isOffset":false,"isSlot":false,"src":"8829:10:15","valueSize":1},{"declaration":4937,"isOffset":false,"isSlot":false,"src":"8880:10:15","valueSize":1},{"declaration":4935,"isOffset":false,"isSlot":true,"src":"3697:14:15","suffix":"slot","valueSize":1},{"declaration":4935,"isOffset":false,"isSlot":true,"src":"4991:14:15","suffix":"slot","valueSize":1},{"declaration":4935,"isOffset":false,"isSlot":true,"src":"6429:14:15","suffix":"slot","valueSize":1},{"declaration":4935,"isOffset":false,"isSlot":true,"src":"6574:14:15","suffix":"slot","valueSize":1},{"declaration":4935,"isOffset":false,"isSlot":true,"src":"8273:14:15","suffix":"slot","valueSize":1},{"declaration":4935,"isOffset":false,"isSlot":true,"src":"8494:14:15","suffix":"slot","valueSize":1}],"id":4940,"nodeType":"InlineAssembly","src":"3446:5999:15"}]},"id":4942,"implemented":true,"kind":"function","modifiers":[],"name":"concatStorage","nameLocation":"3363:13:15","nodeType":"FunctionDefinition","parameters":{"id":4938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4935,"mutability":"mutable","name":"_preBytes","nameLocation":"3391:9:15","nodeType":"VariableDeclaration","scope":4942,"src":"3377:23:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4934,"name":"bytes","nodeType":"ElementaryTypeName","src":"3377:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4937,"mutability":"mutable","name":"_postBytes","nameLocation":"3415:10:15","nodeType":"VariableDeclaration","scope":4942,"src":"3402:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4936,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3376:50:15"},"returnParameters":{"id":4939,"nodeType":"ParameterList","parameters":[],"src":"3436:0:15"},"scope":5249,"src":"3354:6097:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4979,"nodeType":"Block","src":"9621:2805:15","statements":[{"id":4962,"nodeType":"UncheckedBlock","src":"9762:85:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4954,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"9794:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3331","id":4955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9804:2:15","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"9794:12:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4957,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"9810:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9794:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":4959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9819:16:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""},"value":"slice_overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5d3d629f76473d94377d221b1f1c8f2161f7b65cab69e095662ec5d0e026c17e","typeString":"literal_string \"slice_overflow\""}],"id":4953,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9786:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9786:50:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4961,"nodeType":"ExpressionStatement","src":"9786:50:15"}]},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4964,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4944,"src":"9864:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9871:6:15","memberName":"length","nodeType":"MemberAccess","src":"9864:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4966,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4946,"src":"9881:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4967,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"9890:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9864:33:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f75744f66426f756e6473","id":4970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9899:19:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_cca2258dcc0d08c244435525255fbef9116c9a31b4c29471218f002bbbceb7a0","typeString":"literal_string \"slice_outOfBounds\""},"value":"slice_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cca2258dcc0d08c244435525255fbef9116c9a31b4c29471218f002bbbceb7a0","typeString":"literal_string \"slice_outOfBounds\""}],"id":4963,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9856:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9856:63:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4972,"nodeType":"ExpressionStatement","src":"9856:63:15"},{"assignments":[4974],"declarations":[{"constant":false,"id":4974,"mutability":"mutable","name":"tempBytes","nameLocation":"9943:9:15","nodeType":"VariableDeclaration","scope":4979,"src":"9930:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4973,"name":"bytes","nodeType":"ElementaryTypeName","src":"9930:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4975,"nodeType":"VariableDeclarationStatement","src":"9930:22:15"},{"AST":{"nativeSrc":"9972:2421:15","nodeType":"YulBlock","src":"9972:2421:15","statements":[{"cases":[{"body":{"nativeSrc":"10028:1960:15","nodeType":"YulBlock","src":"10028:1960:15","statements":[{"nativeSrc":"10184:24:15","nodeType":"YulAssignment","src":"10184:24:15","value":{"arguments":[{"kind":"number","nativeSrc":"10203:4:15","nodeType":"YulLiteral","src":"10203:4:15","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10197:5:15","nodeType":"YulIdentifier","src":"10197:5:15"},"nativeSrc":"10197:11:15","nodeType":"YulFunctionCall","src":"10197:11:15"},"variableNames":[{"name":"tempBytes","nativeSrc":"10184:9:15","nodeType":"YulIdentifier","src":"10184:9:15"}]},{"nativeSrc":"10832:33:15","nodeType":"YulVariableDeclaration","src":"10832:33:15","value":{"arguments":[{"name":"_length","nativeSrc":"10853:7:15","nodeType":"YulIdentifier","src":"10853:7:15"},{"kind":"number","nativeSrc":"10862:2:15","nodeType":"YulLiteral","src":"10862:2:15","type":"","value":"31"}],"functionName":{"name":"and","nativeSrc":"10849:3:15","nodeType":"YulIdentifier","src":"10849:3:15"},"nativeSrc":"10849:16:15","nodeType":"YulFunctionCall","src":"10849:16:15"},"variables":[{"name":"lengthmod","nativeSrc":"10836:9:15","nodeType":"YulTypedName","src":"10836:9:15","type":""}]},{"nativeSrc":"11186:70:15","nodeType":"YulVariableDeclaration","src":"11186:70:15","value":{"arguments":[{"arguments":[{"name":"tempBytes","nativeSrc":"11204:9:15","nodeType":"YulIdentifier","src":"11204:9:15"},{"name":"lengthmod","nativeSrc":"11215:9:15","nodeType":"YulIdentifier","src":"11215:9:15"}],"functionName":{"name":"add","nativeSrc":"11200:3:15","nodeType":"YulIdentifier","src":"11200:3:15"},"nativeSrc":"11200:25:15","nodeType":"YulFunctionCall","src":"11200:25:15"},{"arguments":[{"kind":"number","nativeSrc":"11231:4:15","nodeType":"YulLiteral","src":"11231:4:15","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nativeSrc":"11244:9:15","nodeType":"YulIdentifier","src":"11244:9:15"}],"functionName":{"name":"iszero","nativeSrc":"11237:6:15","nodeType":"YulIdentifier","src":"11237:6:15"},"nativeSrc":"11237:17:15","nodeType":"YulFunctionCall","src":"11237:17:15"}],"functionName":{"name":"mul","nativeSrc":"11227:3:15","nodeType":"YulIdentifier","src":"11227:3:15"},"nativeSrc":"11227:28:15","nodeType":"YulFunctionCall","src":"11227:28:15"}],"functionName":{"name":"add","nativeSrc":"11196:3:15","nodeType":"YulIdentifier","src":"11196:3:15"},"nativeSrc":"11196:60:15","nodeType":"YulFunctionCall","src":"11196:60:15"},"variables":[{"name":"mc","nativeSrc":"11190:2:15","nodeType":"YulTypedName","src":"11190:2:15","type":""}]},{"nativeSrc":"11273:27:15","nodeType":"YulVariableDeclaration","src":"11273:27:15","value":{"arguments":[{"name":"mc","nativeSrc":"11288:2:15","nodeType":"YulIdentifier","src":"11288:2:15"},{"name":"_length","nativeSrc":"11292:7:15","nodeType":"YulIdentifier","src":"11292:7:15"}],"functionName":{"name":"add","nativeSrc":"11284:3:15","nodeType":"YulIdentifier","src":"11284:3:15"},"nativeSrc":"11284:16:15","nodeType":"YulFunctionCall","src":"11284:16:15"},"variables":[{"name":"end","nativeSrc":"11277:3:15","nodeType":"YulTypedName","src":"11277:3:15","type":""}]},{"body":{"nativeSrc":"11682:61:15","nodeType":"YulBlock","src":"11682:61:15","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"11711:2:15","nodeType":"YulIdentifier","src":"11711:2:15"},{"arguments":[{"name":"cc","nativeSrc":"11721:2:15","nodeType":"YulIdentifier","src":"11721:2:15"}],"functionName":{"name":"mload","nativeSrc":"11715:5:15","nodeType":"YulIdentifier","src":"11715:5:15"},"nativeSrc":"11715:9:15","nodeType":"YulFunctionCall","src":"11715:9:15"}],"functionName":{"name":"mstore","nativeSrc":"11704:6:15","nodeType":"YulIdentifier","src":"11704:6:15"},"nativeSrc":"11704:21:15","nodeType":"YulFunctionCall","src":"11704:21:15"},"nativeSrc":"11704:21:15","nodeType":"YulExpressionStatement","src":"11704:21:15"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"11573:2:15","nodeType":"YulIdentifier","src":"11573:2:15"},{"name":"end","nativeSrc":"11577:3:15","nodeType":"YulIdentifier","src":"11577:3:15"}],"functionName":{"name":"lt","nativeSrc":"11570:2:15","nodeType":"YulIdentifier","src":"11570:2:15"},"nativeSrc":"11570:11:15","nodeType":"YulFunctionCall","src":"11570:11:15"},"nativeSrc":"11318:425:15","nodeType":"YulForLoop","post":{"nativeSrc":"11582:99:15","nodeType":"YulBlock","src":"11582:99:15","statements":[{"nativeSrc":"11604:19:15","nodeType":"YulAssignment","src":"11604:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"11614:2:15","nodeType":"YulIdentifier","src":"11614:2:15"},{"kind":"number","nativeSrc":"11618:4:15","nodeType":"YulLiteral","src":"11618:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11610:3:15","nodeType":"YulIdentifier","src":"11610:3:15"},"nativeSrc":"11610:13:15","nodeType":"YulFunctionCall","src":"11610:13:15"},"variableNames":[{"name":"mc","nativeSrc":"11604:2:15","nodeType":"YulIdentifier","src":"11604:2:15"}]},{"nativeSrc":"11644:19:15","nodeType":"YulAssignment","src":"11644:19:15","value":{"arguments":[{"name":"cc","nativeSrc":"11654:2:15","nodeType":"YulIdentifier","src":"11654:2:15"},{"kind":"number","nativeSrc":"11658:4:15","nodeType":"YulLiteral","src":"11658:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11650:3:15","nodeType":"YulIdentifier","src":"11650:3:15"},"nativeSrc":"11650:13:15","nodeType":"YulFunctionCall","src":"11650:13:15"},"variableNames":[{"name":"cc","nativeSrc":"11644:2:15","nodeType":"YulIdentifier","src":"11644:2:15"}]}]},"pre":{"nativeSrc":"11322:247:15","nodeType":"YulBlock","src":"11322:247:15","statements":[{"nativeSrc":"11471:80:15","nodeType":"YulVariableDeclaration","src":"11471:80:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"11493:6:15","nodeType":"YulIdentifier","src":"11493:6:15"},{"name":"lengthmod","nativeSrc":"11501:9:15","nodeType":"YulIdentifier","src":"11501:9:15"}],"functionName":{"name":"add","nativeSrc":"11489:3:15","nodeType":"YulIdentifier","src":"11489:3:15"},"nativeSrc":"11489:22:15","nodeType":"YulFunctionCall","src":"11489:22:15"},{"arguments":[{"kind":"number","nativeSrc":"11517:4:15","nodeType":"YulLiteral","src":"11517:4:15","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nativeSrc":"11530:9:15","nodeType":"YulIdentifier","src":"11530:9:15"}],"functionName":{"name":"iszero","nativeSrc":"11523:6:15","nodeType":"YulIdentifier","src":"11523:6:15"},"nativeSrc":"11523:17:15","nodeType":"YulFunctionCall","src":"11523:17:15"}],"functionName":{"name":"mul","nativeSrc":"11513:3:15","nodeType":"YulIdentifier","src":"11513:3:15"},"nativeSrc":"11513:28:15","nodeType":"YulFunctionCall","src":"11513:28:15"}],"functionName":{"name":"add","nativeSrc":"11485:3:15","nodeType":"YulIdentifier","src":"11485:3:15"},"nativeSrc":"11485:57:15","nodeType":"YulFunctionCall","src":"11485:57:15"},{"name":"_start","nativeSrc":"11544:6:15","nodeType":"YulIdentifier","src":"11544:6:15"}],"functionName":{"name":"add","nativeSrc":"11481:3:15","nodeType":"YulIdentifier","src":"11481:3:15"},"nativeSrc":"11481:70:15","nodeType":"YulFunctionCall","src":"11481:70:15"},"variables":[{"name":"cc","nativeSrc":"11475:2:15","nodeType":"YulTypedName","src":"11475:2:15","type":""}]}]},"src":"11318:425:15"},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"11768:9:15","nodeType":"YulIdentifier","src":"11768:9:15"},{"name":"_length","nativeSrc":"11779:7:15","nodeType":"YulIdentifier","src":"11779:7:15"}],"functionName":{"name":"mstore","nativeSrc":"11761:6:15","nodeType":"YulIdentifier","src":"11761:6:15"},"nativeSrc":"11761:26:15","nodeType":"YulFunctionCall","src":"11761:26:15"},"nativeSrc":"11761:26:15","nodeType":"YulExpressionStatement","src":"11761:26:15"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11942:4:15","nodeType":"YulLiteral","src":"11942:4:15","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"11956:2:15","nodeType":"YulIdentifier","src":"11956:2:15"},{"kind":"number","nativeSrc":"11960:2:15","nodeType":"YulLiteral","src":"11960:2:15","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"11952:3:15","nodeType":"YulIdentifier","src":"11952:3:15"},"nativeSrc":"11952:11:15","nodeType":"YulFunctionCall","src":"11952:11:15"},{"arguments":[{"kind":"number","nativeSrc":"11969:2:15","nodeType":"YulLiteral","src":"11969:2:15","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"11965:3:15","nodeType":"YulIdentifier","src":"11965:3:15"},"nativeSrc":"11965:7:15","nodeType":"YulFunctionCall","src":"11965:7:15"}],"functionName":{"name":"and","nativeSrc":"11948:3:15","nodeType":"YulIdentifier","src":"11948:3:15"},"nativeSrc":"11948:25:15","nodeType":"YulFunctionCall","src":"11948:25:15"}],"functionName":{"name":"mstore","nativeSrc":"11935:6:15","nodeType":"YulIdentifier","src":"11935:6:15"},"nativeSrc":"11935:39:15","nodeType":"YulFunctionCall","src":"11935:39:15"},"nativeSrc":"11935:39:15","nodeType":"YulExpressionStatement","src":"11935:39:15"}]},"nativeSrc":"10021:1967:15","nodeType":"YulCase","src":"10021:1967:15","value":{"kind":"number","nativeSrc":"10026:1:15","nodeType":"YulLiteral","src":"10026:1:15","type":"","value":"0"}},{"body":{"nativeSrc":"12092:291:15","nodeType":"YulBlock","src":"12092:291:15","statements":[{"nativeSrc":"12110:24:15","nodeType":"YulAssignment","src":"12110:24:15","value":{"arguments":[{"kind":"number","nativeSrc":"12129:4:15","nodeType":"YulLiteral","src":"12129:4:15","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"12123:5:15","nodeType":"YulIdentifier","src":"12123:5:15"},"nativeSrc":"12123:11:15","nodeType":"YulFunctionCall","src":"12123:11:15"},"variableNames":[{"name":"tempBytes","nativeSrc":"12110:9:15","nodeType":"YulIdentifier","src":"12110:9:15"}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"12304:9:15","nodeType":"YulIdentifier","src":"12304:9:15"},{"kind":"number","nativeSrc":"12315:1:15","nodeType":"YulLiteral","src":"12315:1:15","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12297:6:15","nodeType":"YulIdentifier","src":"12297:6:15"},"nativeSrc":"12297:20:15","nodeType":"YulFunctionCall","src":"12297:20:15"},"nativeSrc":"12297:20:15","nodeType":"YulExpressionStatement","src":"12297:20:15"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12342:4:15","nodeType":"YulLiteral","src":"12342:4:15","type":"","value":"0x40"},{"arguments":[{"name":"tempBytes","nativeSrc":"12352:9:15","nodeType":"YulIdentifier","src":"12352:9:15"},{"kind":"number","nativeSrc":"12363:4:15","nodeType":"YulLiteral","src":"12363:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12348:3:15","nodeType":"YulIdentifier","src":"12348:3:15"},"nativeSrc":"12348:20:15","nodeType":"YulFunctionCall","src":"12348:20:15"}],"functionName":{"name":"mstore","nativeSrc":"12335:6:15","nodeType":"YulIdentifier","src":"12335:6:15"},"nativeSrc":"12335:34:15","nodeType":"YulFunctionCall","src":"12335:34:15"},"nativeSrc":"12335:34:15","nodeType":"YulExpressionStatement","src":"12335:34:15"}]},"nativeSrc":"12084:299:15","nodeType":"YulCase","src":"12084:299:15","value":"default"}],"expression":{"arguments":[{"name":"_length","nativeSrc":"10000:7:15","nodeType":"YulIdentifier","src":"10000:7:15"}],"functionName":{"name":"iszero","nativeSrc":"9993:6:15","nodeType":"YulIdentifier","src":"9993:6:15"},"nativeSrc":"9993:15:15","nodeType":"YulFunctionCall","src":"9993:15:15"},"nativeSrc":"9986:2397:15","nodeType":"YulSwitch","src":"9986:2397:15"}]},"evmVersion":"prague","externalReferences":[{"declaration":4944,"isOffset":false,"isSlot":false,"src":"11493:6:15","valueSize":1},{"declaration":4948,"isOffset":false,"isSlot":false,"src":"10000:7:15","valueSize":1},{"declaration":4948,"isOffset":false,"isSlot":false,"src":"10853:7:15","valueSize":1},{"declaration":4948,"isOffset":false,"isSlot":false,"src":"11292:7:15","valueSize":1},{"declaration":4948,"isOffset":false,"isSlot":false,"src":"11779:7:15","valueSize":1},{"declaration":4946,"isOffset":false,"isSlot":false,"src":"11544:6:15","valueSize":1},{"declaration":4974,"isOffset":false,"isSlot":false,"src":"10184:9:15","valueSize":1},{"declaration":4974,"isOffset":false,"isSlot":false,"src":"11204:9:15","valueSize":1},{"declaration":4974,"isOffset":false,"isSlot":false,"src":"11768:9:15","valueSize":1},{"declaration":4974,"isOffset":false,"isSlot":false,"src":"12110:9:15","valueSize":1},{"declaration":4974,"isOffset":false,"isSlot":false,"src":"12304:9:15","valueSize":1},{"declaration":4974,"isOffset":false,"isSlot":false,"src":"12352:9:15","valueSize":1}],"id":4976,"nodeType":"InlineAssembly","src":"9963:2430:15"},{"expression":{"id":4977,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4974,"src":"12410:9:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4952,"id":4978,"nodeType":"Return","src":"12403:16:15"}]},"id":4980,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"9466:5:15","nodeType":"FunctionDefinition","parameters":{"id":4949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4944,"mutability":"mutable","name":"_bytes","nameLocation":"9494:6:15","nodeType":"VariableDeclaration","scope":4980,"src":"9481:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4943,"name":"bytes","nodeType":"ElementaryTypeName","src":"9481:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4946,"mutability":"mutable","name":"_start","nameLocation":"9518:6:15","nodeType":"VariableDeclaration","scope":4980,"src":"9510:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4945,"name":"uint256","nodeType":"ElementaryTypeName","src":"9510:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4948,"mutability":"mutable","name":"_length","nameLocation":"9542:7:15","nodeType":"VariableDeclaration","scope":4980,"src":"9534:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4947,"name":"uint256","nodeType":"ElementaryTypeName","src":"9534:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9471:84:15"},"returnParameters":{"id":4952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4980,"src":"9603:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4950,"name":"bytes","nodeType":"ElementaryTypeName","src":"9603:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9602:14:15"},"scope":5249,"src":"9457:2969:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5005,"nodeType":"Block","src":"12520:266:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4990,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"12538:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12545:6:15","memberName":"length","nodeType":"MemberAccess","src":"12538:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4992,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"12555:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":4993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12564:2:15","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"12555:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12538:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","id":4996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12568:23:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d","typeString":"literal_string \"toAddress_outOfBounds\""},"value":"toAddress_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d","typeString":"literal_string \"toAddress_outOfBounds\""}],"id":4989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12530:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12530:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4998,"nodeType":"ExpressionStatement","src":"12530:62:15"},{"assignments":[5000],"declarations":[{"constant":false,"id":5000,"mutability":"mutable","name":"tempAddress","nameLocation":"12610:11:15","nodeType":"VariableDeclaration","scope":5005,"src":"12602:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4999,"name":"address","nodeType":"ElementaryTypeName","src":"12602:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5001,"nodeType":"VariableDeclarationStatement","src":"12602:19:15"},{"AST":{"nativeSrc":"12641:110:15","nodeType":"YulBlock","src":"12641:110:15","statements":[{"nativeSrc":"12655:86:15","nodeType":"YulAssignment","src":"12655:86:15","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"12688:6:15","nodeType":"YulIdentifier","src":"12688:6:15"},{"kind":"number","nativeSrc":"12696:4:15","nodeType":"YulLiteral","src":"12696:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12684:3:15","nodeType":"YulIdentifier","src":"12684:3:15"},"nativeSrc":"12684:17:15","nodeType":"YulFunctionCall","src":"12684:17:15"},{"name":"_start","nativeSrc":"12703:6:15","nodeType":"YulIdentifier","src":"12703:6:15"}],"functionName":{"name":"add","nativeSrc":"12680:3:15","nodeType":"YulIdentifier","src":"12680:3:15"},"nativeSrc":"12680:30:15","nodeType":"YulFunctionCall","src":"12680:30:15"}],"functionName":{"name":"mload","nativeSrc":"12674:5:15","nodeType":"YulIdentifier","src":"12674:5:15"},"nativeSrc":"12674:37:15","nodeType":"YulFunctionCall","src":"12674:37:15"},{"kind":"number","nativeSrc":"12713:27:15","nodeType":"YulLiteral","src":"12713:27:15","type":"","value":"0x1000000000000000000000000"}],"functionName":{"name":"div","nativeSrc":"12670:3:15","nodeType":"YulIdentifier","src":"12670:3:15"},"nativeSrc":"12670:71:15","nodeType":"YulFunctionCall","src":"12670:71:15"},"variableNames":[{"name":"tempAddress","nativeSrc":"12655:11:15","nodeType":"YulIdentifier","src":"12655:11:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":4982,"isOffset":false,"isSlot":false,"src":"12688:6:15","valueSize":1},{"declaration":4984,"isOffset":false,"isSlot":false,"src":"12703:6:15","valueSize":1},{"declaration":5000,"isOffset":false,"isSlot":false,"src":"12655:11:15","valueSize":1}],"id":5002,"nodeType":"InlineAssembly","src":"12632:119:15"},{"expression":{"id":5003,"name":"tempAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"12768:11:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4988,"id":5004,"nodeType":"Return","src":"12761:18:15"}]},"id":5006,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"12441:9:15","nodeType":"FunctionDefinition","parameters":{"id":4985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4982,"mutability":"mutable","name":"_bytes","nameLocation":"12464:6:15","nodeType":"VariableDeclaration","scope":5006,"src":"12451:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4981,"name":"bytes","nodeType":"ElementaryTypeName","src":"12451:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4984,"mutability":"mutable","name":"_start","nameLocation":"12480:6:15","nodeType":"VariableDeclaration","scope":5006,"src":"12472:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4983,"name":"uint256","nodeType":"ElementaryTypeName","src":"12472:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12450:37:15"},"returnParameters":{"id":4988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5006,"src":"12511:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4986,"name":"address","nodeType":"ElementaryTypeName","src":"12511:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12510:9:15"},"scope":5249,"src":"12432:354:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5031,"nodeType":"Block","src":"12876:218:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5016,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5008,"src":"12894:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12901:6:15","memberName":"length","nodeType":"MemberAccess","src":"12894:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5018,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5010,"src":"12911:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12920:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12911:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12894:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e74385f6f75744f66426f756e6473","id":5022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12924:21:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1","typeString":"literal_string \"toUint8_outOfBounds\""},"value":"toUint8_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1","typeString":"literal_string \"toUint8_outOfBounds\""}],"id":5015,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12886:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12886:60:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5024,"nodeType":"ExpressionStatement","src":"12886:60:15"},{"assignments":[5026],"declarations":[{"constant":false,"id":5026,"mutability":"mutable","name":"tempUint","nameLocation":"12962:8:15","nodeType":"VariableDeclaration","scope":5031,"src":"12956:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5025,"name":"uint8","nodeType":"ElementaryTypeName","src":"12956:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5027,"nodeType":"VariableDeclarationStatement","src":"12956:14:15"},{"AST":{"nativeSrc":"12990:72:15","nodeType":"YulBlock","src":"12990:72:15","statements":[{"nativeSrc":"13004:48:15","nodeType":"YulAssignment","src":"13004:48:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13030:6:15","nodeType":"YulIdentifier","src":"13030:6:15"},{"kind":"number","nativeSrc":"13038:3:15","nodeType":"YulLiteral","src":"13038:3:15","type":"","value":"0x1"}],"functionName":{"name":"add","nativeSrc":"13026:3:15","nodeType":"YulIdentifier","src":"13026:3:15"},"nativeSrc":"13026:16:15","nodeType":"YulFunctionCall","src":"13026:16:15"},{"name":"_start","nativeSrc":"13044:6:15","nodeType":"YulIdentifier","src":"13044:6:15"}],"functionName":{"name":"add","nativeSrc":"13022:3:15","nodeType":"YulIdentifier","src":"13022:3:15"},"nativeSrc":"13022:29:15","nodeType":"YulFunctionCall","src":"13022:29:15"}],"functionName":{"name":"mload","nativeSrc":"13016:5:15","nodeType":"YulIdentifier","src":"13016:5:15"},"nativeSrc":"13016:36:15","nodeType":"YulFunctionCall","src":"13016:36:15"},"variableNames":[{"name":"tempUint","nativeSrc":"13004:8:15","nodeType":"YulIdentifier","src":"13004:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5008,"isOffset":false,"isSlot":false,"src":"13030:6:15","valueSize":1},{"declaration":5010,"isOffset":false,"isSlot":false,"src":"13044:6:15","valueSize":1},{"declaration":5026,"isOffset":false,"isSlot":false,"src":"13004:8:15","valueSize":1}],"id":5028,"nodeType":"InlineAssembly","src":"12981:81:15"},{"expression":{"id":5029,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5026,"src":"13079:8:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5014,"id":5030,"nodeType":"Return","src":"13072:15:15"}]},"id":5032,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"12801:7:15","nodeType":"FunctionDefinition","parameters":{"id":5011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5008,"mutability":"mutable","name":"_bytes","nameLocation":"12822:6:15","nodeType":"VariableDeclaration","scope":5032,"src":"12809:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5007,"name":"bytes","nodeType":"ElementaryTypeName","src":"12809:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5010,"mutability":"mutable","name":"_start","nameLocation":"12838:6:15","nodeType":"VariableDeclaration","scope":5032,"src":"12830:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5009,"name":"uint256","nodeType":"ElementaryTypeName","src":"12830:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12808:37:15"},"returnParameters":{"id":5014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5032,"src":"12869:5:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5012,"name":"uint8","nodeType":"ElementaryTypeName","src":"12869:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"12868:7:15"},"scope":5249,"src":"12792:302:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5057,"nodeType":"Block","src":"13186:219:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5042,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"13204:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13211:6:15","memberName":"length","nodeType":"MemberAccess","src":"13204:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5044,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5036,"src":"13221:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":5045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13230:1:15","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13221:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13204:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7431365f6f75744f66426f756e6473","id":5048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13233:22:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_414233483a71244a4f2700455a9733e71511b5279e381bdd2af6d44b1b09ecab","typeString":"literal_string \"toUint16_outOfBounds\""},"value":"toUint16_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_414233483a71244a4f2700455a9733e71511b5279e381bdd2af6d44b1b09ecab","typeString":"literal_string \"toUint16_outOfBounds\""}],"id":5041,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13196:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13196:60:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5050,"nodeType":"ExpressionStatement","src":"13196:60:15"},{"assignments":[5052],"declarations":[{"constant":false,"id":5052,"mutability":"mutable","name":"tempUint","nameLocation":"13273:8:15","nodeType":"VariableDeclaration","scope":5057,"src":"13266:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5051,"name":"uint16","nodeType":"ElementaryTypeName","src":"13266:6:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":5053,"nodeType":"VariableDeclarationStatement","src":"13266:15:15"},{"AST":{"nativeSrc":"13301:72:15","nodeType":"YulBlock","src":"13301:72:15","statements":[{"nativeSrc":"13315:48:15","nodeType":"YulAssignment","src":"13315:48:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13341:6:15","nodeType":"YulIdentifier","src":"13341:6:15"},{"kind":"number","nativeSrc":"13349:3:15","nodeType":"YulLiteral","src":"13349:3:15","type":"","value":"0x2"}],"functionName":{"name":"add","nativeSrc":"13337:3:15","nodeType":"YulIdentifier","src":"13337:3:15"},"nativeSrc":"13337:16:15","nodeType":"YulFunctionCall","src":"13337:16:15"},{"name":"_start","nativeSrc":"13355:6:15","nodeType":"YulIdentifier","src":"13355:6:15"}],"functionName":{"name":"add","nativeSrc":"13333:3:15","nodeType":"YulIdentifier","src":"13333:3:15"},"nativeSrc":"13333:29:15","nodeType":"YulFunctionCall","src":"13333:29:15"}],"functionName":{"name":"mload","nativeSrc":"13327:5:15","nodeType":"YulIdentifier","src":"13327:5:15"},"nativeSrc":"13327:36:15","nodeType":"YulFunctionCall","src":"13327:36:15"},"variableNames":[{"name":"tempUint","nativeSrc":"13315:8:15","nodeType":"YulIdentifier","src":"13315:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5034,"isOffset":false,"isSlot":false,"src":"13341:6:15","valueSize":1},{"declaration":5036,"isOffset":false,"isSlot":false,"src":"13355:6:15","valueSize":1},{"declaration":5052,"isOffset":false,"isSlot":false,"src":"13315:8:15","valueSize":1}],"id":5054,"nodeType":"InlineAssembly","src":"13292:81:15"},{"expression":{"id":5055,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5052,"src":"13390:8:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":5040,"id":5056,"nodeType":"Return","src":"13383:15:15"}]},"id":5058,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"13109:8:15","nodeType":"FunctionDefinition","parameters":{"id":5037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5034,"mutability":"mutable","name":"_bytes","nameLocation":"13131:6:15","nodeType":"VariableDeclaration","scope":5058,"src":"13118:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5033,"name":"bytes","nodeType":"ElementaryTypeName","src":"13118:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5036,"mutability":"mutable","name":"_start","nameLocation":"13147:6:15","nodeType":"VariableDeclaration","scope":5058,"src":"13139:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5035,"name":"uint256","nodeType":"ElementaryTypeName","src":"13139:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13117:37:15"},"returnParameters":{"id":5040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5058,"src":"13178:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5038,"name":"uint16","nodeType":"ElementaryTypeName","src":"13178:6:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"13177:8:15"},"scope":5249,"src":"13100:305:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5083,"nodeType":"Block","src":"13497:219:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5068,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5060,"src":"13515:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13522:6:15","memberName":"length","nodeType":"MemberAccess","src":"13515:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5070,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"13532:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":5071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13541:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"13532:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13515:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7433325f6f75744f66426f756e6473","id":5074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13544:22:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_e0a09853867d05bef4b1d534052126bc72acd3515e1725b9b280e16d988e6ccf","typeString":"literal_string \"toUint32_outOfBounds\""},"value":"toUint32_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e0a09853867d05bef4b1d534052126bc72acd3515e1725b9b280e16d988e6ccf","typeString":"literal_string \"toUint32_outOfBounds\""}],"id":5067,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13507:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13507:60:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5076,"nodeType":"ExpressionStatement","src":"13507:60:15"},{"assignments":[5078],"declarations":[{"constant":false,"id":5078,"mutability":"mutable","name":"tempUint","nameLocation":"13584:8:15","nodeType":"VariableDeclaration","scope":5083,"src":"13577:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5077,"name":"uint32","nodeType":"ElementaryTypeName","src":"13577:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5079,"nodeType":"VariableDeclarationStatement","src":"13577:15:15"},{"AST":{"nativeSrc":"13612:72:15","nodeType":"YulBlock","src":"13612:72:15","statements":[{"nativeSrc":"13626:48:15","nodeType":"YulAssignment","src":"13626:48:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13652:6:15","nodeType":"YulIdentifier","src":"13652:6:15"},{"kind":"number","nativeSrc":"13660:3:15","nodeType":"YulLiteral","src":"13660:3:15","type":"","value":"0x4"}],"functionName":{"name":"add","nativeSrc":"13648:3:15","nodeType":"YulIdentifier","src":"13648:3:15"},"nativeSrc":"13648:16:15","nodeType":"YulFunctionCall","src":"13648:16:15"},{"name":"_start","nativeSrc":"13666:6:15","nodeType":"YulIdentifier","src":"13666:6:15"}],"functionName":{"name":"add","nativeSrc":"13644:3:15","nodeType":"YulIdentifier","src":"13644:3:15"},"nativeSrc":"13644:29:15","nodeType":"YulFunctionCall","src":"13644:29:15"}],"functionName":{"name":"mload","nativeSrc":"13638:5:15","nodeType":"YulIdentifier","src":"13638:5:15"},"nativeSrc":"13638:36:15","nodeType":"YulFunctionCall","src":"13638:36:15"},"variableNames":[{"name":"tempUint","nativeSrc":"13626:8:15","nodeType":"YulIdentifier","src":"13626:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5060,"isOffset":false,"isSlot":false,"src":"13652:6:15","valueSize":1},{"declaration":5062,"isOffset":false,"isSlot":false,"src":"13666:6:15","valueSize":1},{"declaration":5078,"isOffset":false,"isSlot":false,"src":"13626:8:15","valueSize":1}],"id":5080,"nodeType":"InlineAssembly","src":"13603:81:15"},{"expression":{"id":5081,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5078,"src":"13701:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5066,"id":5082,"nodeType":"Return","src":"13694:15:15"}]},"id":5084,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"13420:8:15","nodeType":"FunctionDefinition","parameters":{"id":5063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5060,"mutability":"mutable","name":"_bytes","nameLocation":"13442:6:15","nodeType":"VariableDeclaration","scope":5084,"src":"13429:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5059,"name":"bytes","nodeType":"ElementaryTypeName","src":"13429:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5062,"mutability":"mutable","name":"_start","nameLocation":"13458:6:15","nodeType":"VariableDeclaration","scope":5084,"src":"13450:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5061,"name":"uint256","nodeType":"ElementaryTypeName","src":"13450:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13428:37:15"},"returnParameters":{"id":5066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5084,"src":"13489:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5064,"name":"uint32","nodeType":"ElementaryTypeName","src":"13489:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13488:8:15"},"scope":5249,"src":"13411:305:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5109,"nodeType":"Block","src":"13808:219:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5094,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5086,"src":"13826:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13833:6:15","memberName":"length","nodeType":"MemberAccess","src":"13826:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5096,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5088,"src":"13843:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"38","id":5097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13852:1:15","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13843:10:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13826:27:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7436345f6f75744f66426f756e6473","id":5100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13855:22:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_55885cc1e15ebd0ff3d9803b39476f6ee2279f42aa3070b40f2de433347c0145","typeString":"literal_string \"toUint64_outOfBounds\""},"value":"toUint64_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_55885cc1e15ebd0ff3d9803b39476f6ee2279f42aa3070b40f2de433347c0145","typeString":"literal_string \"toUint64_outOfBounds\""}],"id":5093,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13818:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13818:60:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5102,"nodeType":"ExpressionStatement","src":"13818:60:15"},{"assignments":[5104],"declarations":[{"constant":false,"id":5104,"mutability":"mutable","name":"tempUint","nameLocation":"13895:8:15","nodeType":"VariableDeclaration","scope":5109,"src":"13888:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5103,"name":"uint64","nodeType":"ElementaryTypeName","src":"13888:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":5105,"nodeType":"VariableDeclarationStatement","src":"13888:15:15"},{"AST":{"nativeSrc":"13923:72:15","nodeType":"YulBlock","src":"13923:72:15","statements":[{"nativeSrc":"13937:48:15","nodeType":"YulAssignment","src":"13937:48:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13963:6:15","nodeType":"YulIdentifier","src":"13963:6:15"},{"kind":"number","nativeSrc":"13971:3:15","nodeType":"YulLiteral","src":"13971:3:15","type":"","value":"0x8"}],"functionName":{"name":"add","nativeSrc":"13959:3:15","nodeType":"YulIdentifier","src":"13959:3:15"},"nativeSrc":"13959:16:15","nodeType":"YulFunctionCall","src":"13959:16:15"},{"name":"_start","nativeSrc":"13977:6:15","nodeType":"YulIdentifier","src":"13977:6:15"}],"functionName":{"name":"add","nativeSrc":"13955:3:15","nodeType":"YulIdentifier","src":"13955:3:15"},"nativeSrc":"13955:29:15","nodeType":"YulFunctionCall","src":"13955:29:15"}],"functionName":{"name":"mload","nativeSrc":"13949:5:15","nodeType":"YulIdentifier","src":"13949:5:15"},"nativeSrc":"13949:36:15","nodeType":"YulFunctionCall","src":"13949:36:15"},"variableNames":[{"name":"tempUint","nativeSrc":"13937:8:15","nodeType":"YulIdentifier","src":"13937:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5086,"isOffset":false,"isSlot":false,"src":"13963:6:15","valueSize":1},{"declaration":5088,"isOffset":false,"isSlot":false,"src":"13977:6:15","valueSize":1},{"declaration":5104,"isOffset":false,"isSlot":false,"src":"13937:8:15","valueSize":1}],"id":5106,"nodeType":"InlineAssembly","src":"13914:81:15"},{"expression":{"id":5107,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5104,"src":"14012:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5092,"id":5108,"nodeType":"Return","src":"14005:15:15"}]},"id":5110,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13731:8:15","nodeType":"FunctionDefinition","parameters":{"id":5089,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5086,"mutability":"mutable","name":"_bytes","nameLocation":"13753:6:15","nodeType":"VariableDeclaration","scope":5110,"src":"13740:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5085,"name":"bytes","nodeType":"ElementaryTypeName","src":"13740:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5088,"mutability":"mutable","name":"_start","nameLocation":"13769:6:15","nodeType":"VariableDeclaration","scope":5110,"src":"13761:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5087,"name":"uint256","nodeType":"ElementaryTypeName","src":"13761:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13739:37:15"},"returnParameters":{"id":5092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5110,"src":"13800:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5090,"name":"uint64","nodeType":"ElementaryTypeName","src":"13800:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13799:8:15"},"scope":5249,"src":"13722:305:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5135,"nodeType":"Block","src":"14119:220:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5120,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5112,"src":"14137:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14144:6:15","memberName":"length","nodeType":"MemberAccess","src":"14137:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5122,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5114,"src":"14154:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3132","id":5123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14163:2:15","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"14154:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14137:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7439365f6f75744f66426f756e6473","id":5126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14167:22:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_245175b34ac1d95c460f2a4fcb106dbfea12949a3cbb7ae3362c49144bb9feb7","typeString":"literal_string \"toUint96_outOfBounds\""},"value":"toUint96_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245175b34ac1d95c460f2a4fcb106dbfea12949a3cbb7ae3362c49144bb9feb7","typeString":"literal_string \"toUint96_outOfBounds\""}],"id":5119,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14129:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14129:61:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5128,"nodeType":"ExpressionStatement","src":"14129:61:15"},{"assignments":[5130],"declarations":[{"constant":false,"id":5130,"mutability":"mutable","name":"tempUint","nameLocation":"14207:8:15","nodeType":"VariableDeclaration","scope":5135,"src":"14200:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5129,"name":"uint96","nodeType":"ElementaryTypeName","src":"14200:6:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":5131,"nodeType":"VariableDeclarationStatement","src":"14200:15:15"},{"AST":{"nativeSrc":"14235:72:15","nodeType":"YulBlock","src":"14235:72:15","statements":[{"nativeSrc":"14249:48:15","nodeType":"YulAssignment","src":"14249:48:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14275:6:15","nodeType":"YulIdentifier","src":"14275:6:15"},{"kind":"number","nativeSrc":"14283:3:15","nodeType":"YulLiteral","src":"14283:3:15","type":"","value":"0xc"}],"functionName":{"name":"add","nativeSrc":"14271:3:15","nodeType":"YulIdentifier","src":"14271:3:15"},"nativeSrc":"14271:16:15","nodeType":"YulFunctionCall","src":"14271:16:15"},{"name":"_start","nativeSrc":"14289:6:15","nodeType":"YulIdentifier","src":"14289:6:15"}],"functionName":{"name":"add","nativeSrc":"14267:3:15","nodeType":"YulIdentifier","src":"14267:3:15"},"nativeSrc":"14267:29:15","nodeType":"YulFunctionCall","src":"14267:29:15"}],"functionName":{"name":"mload","nativeSrc":"14261:5:15","nodeType":"YulIdentifier","src":"14261:5:15"},"nativeSrc":"14261:36:15","nodeType":"YulFunctionCall","src":"14261:36:15"},"variableNames":[{"name":"tempUint","nativeSrc":"14249:8:15","nodeType":"YulIdentifier","src":"14249:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5112,"isOffset":false,"isSlot":false,"src":"14275:6:15","valueSize":1},{"declaration":5114,"isOffset":false,"isSlot":false,"src":"14289:6:15","valueSize":1},{"declaration":5130,"isOffset":false,"isSlot":false,"src":"14249:8:15","valueSize":1}],"id":5132,"nodeType":"InlineAssembly","src":"14226:81:15"},{"expression":{"id":5133,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5130,"src":"14324:8:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":5118,"id":5134,"nodeType":"Return","src":"14317:15:15"}]},"id":5136,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"14042:8:15","nodeType":"FunctionDefinition","parameters":{"id":5115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5112,"mutability":"mutable","name":"_bytes","nameLocation":"14064:6:15","nodeType":"VariableDeclaration","scope":5136,"src":"14051:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5111,"name":"bytes","nodeType":"ElementaryTypeName","src":"14051:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5114,"mutability":"mutable","name":"_start","nameLocation":"14080:6:15","nodeType":"VariableDeclaration","scope":5136,"src":"14072:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5113,"name":"uint256","nodeType":"ElementaryTypeName","src":"14072:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14050:37:15"},"returnParameters":{"id":5118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5136,"src":"14111:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5116,"name":"uint96","nodeType":"ElementaryTypeName","src":"14111:6:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"14110:8:15"},"scope":5249,"src":"14033:306:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5161,"nodeType":"Block","src":"14433:223:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5146,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5138,"src":"14451:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14458:6:15","memberName":"length","nodeType":"MemberAccess","src":"14451:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5148,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"14468:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3136","id":5149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14477:2:15","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14468:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14451:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e743132385f6f75744f66426f756e6473","id":5152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14481:23:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_17474b965d7fdba029328487966488b63c32338e60aea74eafb22325bb8d90dc","typeString":"literal_string \"toUint128_outOfBounds\""},"value":"toUint128_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_17474b965d7fdba029328487966488b63c32338e60aea74eafb22325bb8d90dc","typeString":"literal_string \"toUint128_outOfBounds\""}],"id":5145,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14443:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14443:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5154,"nodeType":"ExpressionStatement","src":"14443:62:15"},{"assignments":[5156],"declarations":[{"constant":false,"id":5156,"mutability":"mutable","name":"tempUint","nameLocation":"14523:8:15","nodeType":"VariableDeclaration","scope":5161,"src":"14515:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5155,"name":"uint128","nodeType":"ElementaryTypeName","src":"14515:7:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":5157,"nodeType":"VariableDeclarationStatement","src":"14515:16:15"},{"AST":{"nativeSrc":"14551:73:15","nodeType":"YulBlock","src":"14551:73:15","statements":[{"nativeSrc":"14565:49:15","nodeType":"YulAssignment","src":"14565:49:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14591:6:15","nodeType":"YulIdentifier","src":"14591:6:15"},{"kind":"number","nativeSrc":"14599:4:15","nodeType":"YulLiteral","src":"14599:4:15","type":"","value":"0x10"}],"functionName":{"name":"add","nativeSrc":"14587:3:15","nodeType":"YulIdentifier","src":"14587:3:15"},"nativeSrc":"14587:17:15","nodeType":"YulFunctionCall","src":"14587:17:15"},{"name":"_start","nativeSrc":"14606:6:15","nodeType":"YulIdentifier","src":"14606:6:15"}],"functionName":{"name":"add","nativeSrc":"14583:3:15","nodeType":"YulIdentifier","src":"14583:3:15"},"nativeSrc":"14583:30:15","nodeType":"YulFunctionCall","src":"14583:30:15"}],"functionName":{"name":"mload","nativeSrc":"14577:5:15","nodeType":"YulIdentifier","src":"14577:5:15"},"nativeSrc":"14577:37:15","nodeType":"YulFunctionCall","src":"14577:37:15"},"variableNames":[{"name":"tempUint","nativeSrc":"14565:8:15","nodeType":"YulIdentifier","src":"14565:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5138,"isOffset":false,"isSlot":false,"src":"14591:6:15","valueSize":1},{"declaration":5140,"isOffset":false,"isSlot":false,"src":"14606:6:15","valueSize":1},{"declaration":5156,"isOffset":false,"isSlot":false,"src":"14565:8:15","valueSize":1}],"id":5158,"nodeType":"InlineAssembly","src":"14542:82:15"},{"expression":{"id":5159,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5156,"src":"14641:8:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":5144,"id":5160,"nodeType":"Return","src":"14634:15:15"}]},"id":5162,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"14354:9:15","nodeType":"FunctionDefinition","parameters":{"id":5141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5138,"mutability":"mutable","name":"_bytes","nameLocation":"14377:6:15","nodeType":"VariableDeclaration","scope":5162,"src":"14364:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5137,"name":"bytes","nodeType":"ElementaryTypeName","src":"14364:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5140,"mutability":"mutable","name":"_start","nameLocation":"14393:6:15","nodeType":"VariableDeclaration","scope":5162,"src":"14385:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5139,"name":"uint256","nodeType":"ElementaryTypeName","src":"14385:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14363:37:15"},"returnParameters":{"id":5144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5162,"src":"14424:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5142,"name":"uint128","nodeType":"ElementaryTypeName","src":"14424:7:15","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"14423:9:15"},"scope":5249,"src":"14345:311:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5187,"nodeType":"Block","src":"14750:223:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5172,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5164,"src":"14768:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14775:6:15","memberName":"length","nodeType":"MemberAccess","src":"14768:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5174,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5166,"src":"14785:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":5175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14794:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14785:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14768:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e743235365f6f75744f66426f756e6473","id":5178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14798:23:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_87a32b96294a395a4fb365d8b27a23d532fa10419cffd7dc13367cdc71bf4d7b","typeString":"literal_string \"toUint256_outOfBounds\""},"value":"toUint256_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87a32b96294a395a4fb365d8b27a23d532fa10419cffd7dc13367cdc71bf4d7b","typeString":"literal_string \"toUint256_outOfBounds\""}],"id":5171,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14760:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14760:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5180,"nodeType":"ExpressionStatement","src":"14760:62:15"},{"assignments":[5182],"declarations":[{"constant":false,"id":5182,"mutability":"mutable","name":"tempUint","nameLocation":"14840:8:15","nodeType":"VariableDeclaration","scope":5187,"src":"14832:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5181,"name":"uint256","nodeType":"ElementaryTypeName","src":"14832:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5183,"nodeType":"VariableDeclarationStatement","src":"14832:16:15"},{"AST":{"nativeSrc":"14868:73:15","nodeType":"YulBlock","src":"14868:73:15","statements":[{"nativeSrc":"14882:49:15","nodeType":"YulAssignment","src":"14882:49:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14908:6:15","nodeType":"YulIdentifier","src":"14908:6:15"},{"kind":"number","nativeSrc":"14916:4:15","nodeType":"YulLiteral","src":"14916:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14904:3:15","nodeType":"YulIdentifier","src":"14904:3:15"},"nativeSrc":"14904:17:15","nodeType":"YulFunctionCall","src":"14904:17:15"},{"name":"_start","nativeSrc":"14923:6:15","nodeType":"YulIdentifier","src":"14923:6:15"}],"functionName":{"name":"add","nativeSrc":"14900:3:15","nodeType":"YulIdentifier","src":"14900:3:15"},"nativeSrc":"14900:30:15","nodeType":"YulFunctionCall","src":"14900:30:15"}],"functionName":{"name":"mload","nativeSrc":"14894:5:15","nodeType":"YulIdentifier","src":"14894:5:15"},"nativeSrc":"14894:37:15","nodeType":"YulFunctionCall","src":"14894:37:15"},"variableNames":[{"name":"tempUint","nativeSrc":"14882:8:15","nodeType":"YulIdentifier","src":"14882:8:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5164,"isOffset":false,"isSlot":false,"src":"14908:6:15","valueSize":1},{"declaration":5166,"isOffset":false,"isSlot":false,"src":"14923:6:15","valueSize":1},{"declaration":5182,"isOffset":false,"isSlot":false,"src":"14882:8:15","valueSize":1}],"id":5184,"nodeType":"InlineAssembly","src":"14859:82:15"},{"expression":{"id":5185,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5182,"src":"14958:8:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5170,"id":5186,"nodeType":"Return","src":"14951:15:15"}]},"id":5188,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"14671:9:15","nodeType":"FunctionDefinition","parameters":{"id":5167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5164,"mutability":"mutable","name":"_bytes","nameLocation":"14694:6:15","nodeType":"VariableDeclaration","scope":5188,"src":"14681:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5163,"name":"bytes","nodeType":"ElementaryTypeName","src":"14681:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5166,"mutability":"mutable","name":"_start","nameLocation":"14710:6:15","nodeType":"VariableDeclaration","scope":5188,"src":"14702:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5165,"name":"uint256","nodeType":"ElementaryTypeName","src":"14702:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14680:37:15"},"returnParameters":{"id":5170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5188,"src":"14741:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5168,"name":"uint256","nodeType":"ElementaryTypeName","src":"14741:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14740:9:15"},"scope":5249,"src":"14662:311:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5213,"nodeType":"Block","src":"15067:232:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5198,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5190,"src":"15085:6:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15092:6:15","memberName":"length","nodeType":"MemberAccess","src":"15085:13:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5200,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5192,"src":"15102:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":5201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15111:2:15","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"15102:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15085:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f427974657333325f6f75744f66426f756e6473","id":5204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15115:23:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_95abc635681816f3b423f999d8035c1cc722b70e3d801f56cd1748a4f5810fa2","typeString":"literal_string \"toBytes32_outOfBounds\""},"value":"toBytes32_outOfBounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_95abc635681816f3b423f999d8035c1cc722b70e3d801f56cd1748a4f5810fa2","typeString":"literal_string \"toBytes32_outOfBounds\""}],"id":5197,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15077:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15077:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5206,"nodeType":"ExpressionStatement","src":"15077:62:15"},{"assignments":[5208],"declarations":[{"constant":false,"id":5208,"mutability":"mutable","name":"tempBytes32","nameLocation":"15157:11:15","nodeType":"VariableDeclaration","scope":5213,"src":"15149:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15149:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":5209,"nodeType":"VariableDeclarationStatement","src":"15149:19:15"},{"AST":{"nativeSrc":"15188:76:15","nodeType":"YulBlock","src":"15188:76:15","statements":[{"nativeSrc":"15202:52:15","nodeType":"YulAssignment","src":"15202:52:15","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"15231:6:15","nodeType":"YulIdentifier","src":"15231:6:15"},{"kind":"number","nativeSrc":"15239:4:15","nodeType":"YulLiteral","src":"15239:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15227:3:15","nodeType":"YulIdentifier","src":"15227:3:15"},"nativeSrc":"15227:17:15","nodeType":"YulFunctionCall","src":"15227:17:15"},{"name":"_start","nativeSrc":"15246:6:15","nodeType":"YulIdentifier","src":"15246:6:15"}],"functionName":{"name":"add","nativeSrc":"15223:3:15","nodeType":"YulIdentifier","src":"15223:3:15"},"nativeSrc":"15223:30:15","nodeType":"YulFunctionCall","src":"15223:30:15"}],"functionName":{"name":"mload","nativeSrc":"15217:5:15","nodeType":"YulIdentifier","src":"15217:5:15"},"nativeSrc":"15217:37:15","nodeType":"YulFunctionCall","src":"15217:37:15"},"variableNames":[{"name":"tempBytes32","nativeSrc":"15202:11:15","nodeType":"YulIdentifier","src":"15202:11:15"}]}]},"evmVersion":"prague","externalReferences":[{"declaration":5190,"isOffset":false,"isSlot":false,"src":"15231:6:15","valueSize":1},{"declaration":5192,"isOffset":false,"isSlot":false,"src":"15246:6:15","valueSize":1},{"declaration":5208,"isOffset":false,"isSlot":false,"src":"15202:11:15","valueSize":1}],"id":5210,"nodeType":"InlineAssembly","src":"15179:85:15"},{"expression":{"id":5211,"name":"tempBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5208,"src":"15281:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5196,"id":5212,"nodeType":"Return","src":"15274:18:15"}]},"id":5214,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"14988:9:15","nodeType":"FunctionDefinition","parameters":{"id":5193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5190,"mutability":"mutable","name":"_bytes","nameLocation":"15011:6:15","nodeType":"VariableDeclaration","scope":5214,"src":"14998:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5189,"name":"bytes","nodeType":"ElementaryTypeName","src":"14998:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5192,"mutability":"mutable","name":"_start","nameLocation":"15027:6:15","nodeType":"VariableDeclaration","scope":5214,"src":"15019:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5191,"name":"uint256","nodeType":"ElementaryTypeName","src":"15019:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14997:37:15"},"returnParameters":{"id":5196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5214,"src":"15058:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15058:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15057:9:15"},"scope":5249,"src":"14979:320:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5230,"nodeType":"Block","src":"15398:1323:15","statements":[{"assignments":[5224],"declarations":[{"constant":false,"id":5224,"mutability":"mutable","name":"success","nameLocation":"15413:7:15","nodeType":"VariableDeclaration","scope":5230,"src":"15408:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5223,"name":"bool","nodeType":"ElementaryTypeName","src":"15408:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5226,"initialValue":{"hexValue":"74727565","id":5225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15423:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"15408:19:15"},{"AST":{"nativeSrc":"15447:1243:15","nodeType":"YulBlock","src":"15447:1243:15","statements":[{"nativeSrc":"15461:30:15","nodeType":"YulVariableDeclaration","src":"15461:30:15","value":{"arguments":[{"name":"_preBytes","nativeSrc":"15481:9:15","nodeType":"YulIdentifier","src":"15481:9:15"}],"functionName":{"name":"mload","nativeSrc":"15475:5:15","nodeType":"YulIdentifier","src":"15475:5:15"},"nativeSrc":"15475:16:15","nodeType":"YulFunctionCall","src":"15475:16:15"},"variables":[{"name":"length","nativeSrc":"15465:6:15","nodeType":"YulTypedName","src":"15465:6:15","type":""}]},{"cases":[{"body":{"nativeSrc":"15624:961:15","nodeType":"YulBlock","src":"15624:961:15","statements":[{"nativeSrc":"15853:11:15","nodeType":"YulVariableDeclaration","src":"15853:11:15","value":{"kind":"number","nativeSrc":"15863:1:15","nodeType":"YulLiteral","src":"15863:1:15","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"15857:2:15","nodeType":"YulTypedName","src":"15857:2:15","type":""}]},{"nativeSrc":"15882:30:15","nodeType":"YulVariableDeclaration","src":"15882:30:15","value":{"arguments":[{"name":"_preBytes","nativeSrc":"15896:9:15","nodeType":"YulIdentifier","src":"15896:9:15"},{"kind":"number","nativeSrc":"15907:4:15","nodeType":"YulLiteral","src":"15907:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15892:3:15","nodeType":"YulIdentifier","src":"15892:3:15"},"nativeSrc":"15892:20:15","nodeType":"YulFunctionCall","src":"15892:20:15"},"variables":[{"name":"mc","nativeSrc":"15886:2:15","nodeType":"YulTypedName","src":"15886:2:15","type":""}]},{"nativeSrc":"15929:26:15","nodeType":"YulVariableDeclaration","src":"15929:26:15","value":{"arguments":[{"name":"mc","nativeSrc":"15944:2:15","nodeType":"YulIdentifier","src":"15944:2:15"},{"name":"length","nativeSrc":"15948:6:15","nodeType":"YulIdentifier","src":"15948:6:15"}],"functionName":{"name":"add","nativeSrc":"15940:3:15","nodeType":"YulIdentifier","src":"15940:3:15"},"nativeSrc":"15940:15:15","nodeType":"YulFunctionCall","src":"15940:15:15"},"variables":[{"name":"end","nativeSrc":"15933:3:15","nodeType":"YulTypedName","src":"15933:3:15","type":""}]},{"body":{"nativeSrc":"16287:284:15","nodeType":"YulBlock","src":"16287:284:15","statements":[{"body":{"nativeSrc":"16423:130:15","nodeType":"YulBlock","src":"16423:130:15","statements":[{"nativeSrc":"16487:12:15","nodeType":"YulAssignment","src":"16487:12:15","value":{"kind":"number","nativeSrc":"16498:1:15","nodeType":"YulLiteral","src":"16498:1:15","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"16487:7:15","nodeType":"YulIdentifier","src":"16487:7:15"}]},{"nativeSrc":"16524:7:15","nodeType":"YulAssignment","src":"16524:7:15","value":{"kind":"number","nativeSrc":"16530:1:15","nodeType":"YulLiteral","src":"16530:1:15","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"16524:2:15","nodeType":"YulIdentifier","src":"16524:2:15"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"16406:2:15","nodeType":"YulIdentifier","src":"16406:2:15"}],"functionName":{"name":"mload","nativeSrc":"16400:5:15","nodeType":"YulIdentifier","src":"16400:5:15"},"nativeSrc":"16400:9:15","nodeType":"YulFunctionCall","src":"16400:9:15"},{"arguments":[{"name":"cc","nativeSrc":"16417:2:15","nodeType":"YulIdentifier","src":"16417:2:15"}],"functionName":{"name":"mload","nativeSrc":"16411:5:15","nodeType":"YulIdentifier","src":"16411:5:15"},"nativeSrc":"16411:9:15","nodeType":"YulFunctionCall","src":"16411:9:15"}],"functionName":{"name":"eq","nativeSrc":"16397:2:15","nodeType":"YulIdentifier","src":"16397:2:15"},"nativeSrc":"16397:24:15","nodeType":"YulFunctionCall","src":"16397:24:15"}],"functionName":{"name":"iszero","nativeSrc":"16390:6:15","nodeType":"YulIdentifier","src":"16390:6:15"},"nativeSrc":"16390:32:15","nodeType":"YulFunctionCall","src":"16390:32:15"},"nativeSrc":"16387:166:15","nodeType":"YulIf","src":"16387:166:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"16169:2:15","nodeType":"YulIdentifier","src":"16169:2:15"},{"name":"end","nativeSrc":"16173:3:15","nodeType":"YulIdentifier","src":"16173:3:15"}],"functionName":{"name":"lt","nativeSrc":"16166:2:15","nodeType":"YulIdentifier","src":"16166:2:15"},"nativeSrc":"16166:11:15","nodeType":"YulFunctionCall","src":"16166:11:15"},{"name":"cb","nativeSrc":"16179:2:15","nodeType":"YulIdentifier","src":"16179:2:15"}],"functionName":{"name":"add","nativeSrc":"16162:3:15","nodeType":"YulIdentifier","src":"16162:3:15"},"nativeSrc":"16162:20:15","nodeType":"YulFunctionCall","src":"16162:20:15"},{"kind":"number","nativeSrc":"16184:1:15","nodeType":"YulLiteral","src":"16184:1:15","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"16159:2:15","nodeType":"YulIdentifier","src":"16159:2:15"},"nativeSrc":"16159:27:15","nodeType":"YulFunctionCall","src":"16159:27:15"},"nativeSrc":"15973:598:15","nodeType":"YulForLoop","post":{"nativeSrc":"16187:99:15","nodeType":"YulBlock","src":"16187:99:15","statements":[{"nativeSrc":"16209:19:15","nodeType":"YulAssignment","src":"16209:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"16219:2:15","nodeType":"YulIdentifier","src":"16219:2:15"},{"kind":"number","nativeSrc":"16223:4:15","nodeType":"YulLiteral","src":"16223:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16215:3:15","nodeType":"YulIdentifier","src":"16215:3:15"},"nativeSrc":"16215:13:15","nodeType":"YulFunctionCall","src":"16215:13:15"},"variableNames":[{"name":"mc","nativeSrc":"16209:2:15","nodeType":"YulIdentifier","src":"16209:2:15"}]},{"nativeSrc":"16249:19:15","nodeType":"YulAssignment","src":"16249:19:15","value":{"arguments":[{"name":"cc","nativeSrc":"16259:2:15","nodeType":"YulIdentifier","src":"16259:2:15"},{"kind":"number","nativeSrc":"16263:4:15","nodeType":"YulLiteral","src":"16263:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16255:3:15","nodeType":"YulIdentifier","src":"16255:3:15"},"nativeSrc":"16255:13:15","nodeType":"YulFunctionCall","src":"16255:13:15"},"variableNames":[{"name":"cc","nativeSrc":"16249:2:15","nodeType":"YulIdentifier","src":"16249:2:15"}]}]},"pre":{"nativeSrc":"15977:181:15","nodeType":"YulBlock","src":"15977:181:15","statements":[{"nativeSrc":"15999:31:15","nodeType":"YulVariableDeclaration","src":"15999:31:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"16013:10:15","nodeType":"YulIdentifier","src":"16013:10:15"},{"kind":"number","nativeSrc":"16025:4:15","nodeType":"YulLiteral","src":"16025:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16009:3:15","nodeType":"YulIdentifier","src":"16009:3:15"},"nativeSrc":"16009:21:15","nodeType":"YulFunctionCall","src":"16009:21:15"},"variables":[{"name":"cc","nativeSrc":"16003:2:15","nodeType":"YulTypedName","src":"16003:2:15","type":""}]}]},"src":"15973:598:15"}]},"nativeSrc":"15617:968:15","nodeType":"YulCase","src":"15617:968:15","value":{"kind":"number","nativeSrc":"15622:1:15","nodeType":"YulLiteral","src":"15622:1:15","type":"","value":"1"}},{"body":{"nativeSrc":"16606:74:15","nodeType":"YulBlock","src":"16606:74:15","statements":[{"nativeSrc":"16654:12:15","nodeType":"YulAssignment","src":"16654:12:15","value":{"kind":"number","nativeSrc":"16665:1:15","nodeType":"YulLiteral","src":"16665:1:15","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"16654:7:15","nodeType":"YulIdentifier","src":"16654:7:15"}]}]},"nativeSrc":"16598:82:15","nodeType":"YulCase","src":"16598:82:15","value":"default"}],"expression":{"arguments":[{"name":"length","nativeSrc":"15578:6:15","nodeType":"YulIdentifier","src":"15578:6:15"},{"arguments":[{"name":"_postBytes","nativeSrc":"15592:10:15","nodeType":"YulIdentifier","src":"15592:10:15"}],"functionName":{"name":"mload","nativeSrc":"15586:5:15","nodeType":"YulIdentifier","src":"15586:5:15"},"nativeSrc":"15586:17:15","nodeType":"YulFunctionCall","src":"15586:17:15"}],"functionName":{"name":"eq","nativeSrc":"15575:2:15","nodeType":"YulIdentifier","src":"15575:2:15"},"nativeSrc":"15575:29:15","nodeType":"YulFunctionCall","src":"15575:29:15"},"nativeSrc":"15568:1112:15","nodeType":"YulSwitch","src":"15568:1112:15"}]},"evmVersion":"prague","externalReferences":[{"declaration":5218,"isOffset":false,"isSlot":false,"src":"15592:10:15","valueSize":1},{"declaration":5218,"isOffset":false,"isSlot":false,"src":"16013:10:15","valueSize":1},{"declaration":5216,"isOffset":false,"isSlot":false,"src":"15481:9:15","valueSize":1},{"declaration":5216,"isOffset":false,"isSlot":false,"src":"15896:9:15","valueSize":1},{"declaration":5224,"isOffset":false,"isSlot":false,"src":"16487:7:15","valueSize":1},{"declaration":5224,"isOffset":false,"isSlot":false,"src":"16654:7:15","valueSize":1}],"id":5227,"nodeType":"InlineAssembly","src":"15438:1252:15"},{"expression":{"id":5228,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5224,"src":"16707:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5222,"id":5229,"nodeType":"Return","src":"16700:14:15"}]},"id":5231,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"15314:5:15","nodeType":"FunctionDefinition","parameters":{"id":5219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5216,"mutability":"mutable","name":"_preBytes","nameLocation":"15333:9:15","nodeType":"VariableDeclaration","scope":5231,"src":"15320:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5215,"name":"bytes","nodeType":"ElementaryTypeName","src":"15320:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5218,"mutability":"mutable","name":"_postBytes","nameLocation":"15357:10:15","nodeType":"VariableDeclaration","scope":5231,"src":"15344:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5217,"name":"bytes","nodeType":"ElementaryTypeName","src":"15344:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15319:49:15"},"returnParameters":{"id":5222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5231,"src":"15392:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5220,"name":"bool","nodeType":"ElementaryTypeName","src":"15392:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15391:6:15"},"scope":5249,"src":"15305:1416:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5247,"nodeType":"Block","src":"16878:2559:15","statements":[{"assignments":[5241],"declarations":[{"constant":false,"id":5241,"mutability":"mutable","name":"success","nameLocation":"16893:7:15","nodeType":"VariableDeclaration","scope":5247,"src":"16888:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5240,"name":"bool","nodeType":"ElementaryTypeName","src":"16888:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5243,"initialValue":{"hexValue":"74727565","id":5242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16903:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"16888:19:15"},{"AST":{"nativeSrc":"16927:2479:15","nodeType":"YulBlock","src":"16927:2479:15","statements":[{"nativeSrc":"16986:34:15","nodeType":"YulVariableDeclaration","src":"16986:34:15","value":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"17005:14:15","nodeType":"YulIdentifier","src":"17005:14:15"}],"functionName":{"name":"sload","nativeSrc":"16999:5:15","nodeType":"YulIdentifier","src":"16999:5:15"},"nativeSrc":"16999:21:15","nodeType":"YulFunctionCall","src":"16999:21:15"},"variables":[{"name":"fslot","nativeSrc":"16990:5:15","nodeType":"YulTypedName","src":"16990:5:15","type":""}]},{"nativeSrc":"17111:76:15","nodeType":"YulVariableDeclaration","src":"17111:76:15","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17134:5:15","nodeType":"YulIdentifier","src":"17134:5:15"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17149:5:15","nodeType":"YulLiteral","src":"17149:5:15","type":"","value":"0x100"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17167:5:15","nodeType":"YulIdentifier","src":"17167:5:15"},{"kind":"number","nativeSrc":"17174:1:15","nodeType":"YulLiteral","src":"17174:1:15","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"17163:3:15","nodeType":"YulIdentifier","src":"17163:3:15"},"nativeSrc":"17163:13:15","nodeType":"YulFunctionCall","src":"17163:13:15"}],"functionName":{"name":"iszero","nativeSrc":"17156:6:15","nodeType":"YulIdentifier","src":"17156:6:15"},"nativeSrc":"17156:21:15","nodeType":"YulFunctionCall","src":"17156:21:15"}],"functionName":{"name":"mul","nativeSrc":"17145:3:15","nodeType":"YulIdentifier","src":"17145:3:15"},"nativeSrc":"17145:33:15","nodeType":"YulFunctionCall","src":"17145:33:15"},{"kind":"number","nativeSrc":"17180:1:15","nodeType":"YulLiteral","src":"17180:1:15","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17141:3:15","nodeType":"YulIdentifier","src":"17141:3:15"},"nativeSrc":"17141:41:15","nodeType":"YulFunctionCall","src":"17141:41:15"}],"functionName":{"name":"and","nativeSrc":"17130:3:15","nodeType":"YulIdentifier","src":"17130:3:15"},"nativeSrc":"17130:53:15","nodeType":"YulFunctionCall","src":"17130:53:15"},{"kind":"number","nativeSrc":"17185:1:15","nodeType":"YulLiteral","src":"17185:1:15","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"17126:3:15","nodeType":"YulIdentifier","src":"17126:3:15"},"nativeSrc":"17126:61:15","nodeType":"YulFunctionCall","src":"17126:61:15"},"variables":[{"name":"slength","nativeSrc":"17115:7:15","nodeType":"YulTypedName","src":"17115:7:15","type":""}]},{"nativeSrc":"17200:32:15","nodeType":"YulVariableDeclaration","src":"17200:32:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"17221:10:15","nodeType":"YulIdentifier","src":"17221:10:15"}],"functionName":{"name":"mload","nativeSrc":"17215:5:15","nodeType":"YulIdentifier","src":"17215:5:15"},"nativeSrc":"17215:17:15","nodeType":"YulFunctionCall","src":"17215:17:15"},"variables":[{"name":"mlength","nativeSrc":"17204:7:15","nodeType":"YulTypedName","src":"17204:7:15","type":""}]},{"cases":[{"body":{"nativeSrc":"17356:1945:15","nodeType":"YulBlock","src":"17356:1945:15","statements":[{"body":{"nativeSrc":"17667:1620:15","nodeType":"YulBlock","src":"17667:1620:15","statements":[{"cases":[{"body":{"nativeSrc":"17739:340:15","nodeType":"YulBlock","src":"17739:340:15","statements":[{"nativeSrc":"17832:38:15","nodeType":"YulAssignment","src":"17832:38:15","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17849:5:15","nodeType":"YulIdentifier","src":"17849:5:15"},{"kind":"number","nativeSrc":"17856:5:15","nodeType":"YulLiteral","src":"17856:5:15","type":"","value":"0x100"}],"functionName":{"name":"div","nativeSrc":"17845:3:15","nodeType":"YulIdentifier","src":"17845:3:15"},"nativeSrc":"17845:17:15","nodeType":"YulFunctionCall","src":"17845:17:15"},{"kind":"number","nativeSrc":"17864:5:15","nodeType":"YulLiteral","src":"17864:5:15","type":"","value":"0x100"}],"functionName":{"name":"mul","nativeSrc":"17841:3:15","nodeType":"YulIdentifier","src":"17841:3:15"},"nativeSrc":"17841:29:15","nodeType":"YulFunctionCall","src":"17841:29:15"},"variableNames":[{"name":"fslot","nativeSrc":"17832:5:15","nodeType":"YulIdentifier","src":"17832:5:15"}]},{"body":{"nativeSrc":"17947:110:15","nodeType":"YulBlock","src":"17947:110:15","statements":[{"nativeSrc":"18019:12:15","nodeType":"YulAssignment","src":"18019:12:15","value":{"kind":"number","nativeSrc":"18030:1:15","nodeType":"YulLiteral","src":"18030:1:15","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"18019:7:15","nodeType":"YulIdentifier","src":"18019:7:15"}]}]},"condition":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"17909:5:15","nodeType":"YulIdentifier","src":"17909:5:15"},{"arguments":[{"arguments":[{"name":"_postBytes","nativeSrc":"17926:10:15","nodeType":"YulIdentifier","src":"17926:10:15"},{"kind":"number","nativeSrc":"17938:4:15","nodeType":"YulLiteral","src":"17938:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17922:3:15","nodeType":"YulIdentifier","src":"17922:3:15"},"nativeSrc":"17922:21:15","nodeType":"YulFunctionCall","src":"17922:21:15"}],"functionName":{"name":"mload","nativeSrc":"17916:5:15","nodeType":"YulIdentifier","src":"17916:5:15"},"nativeSrc":"17916:28:15","nodeType":"YulFunctionCall","src":"17916:28:15"}],"functionName":{"name":"eq","nativeSrc":"17906:2:15","nodeType":"YulIdentifier","src":"17906:2:15"},"nativeSrc":"17906:39:15","nodeType":"YulFunctionCall","src":"17906:39:15"}],"functionName":{"name":"iszero","nativeSrc":"17899:6:15","nodeType":"YulIdentifier","src":"17899:6:15"},"nativeSrc":"17899:47:15","nodeType":"YulFunctionCall","src":"17899:47:15"},"nativeSrc":"17896:161:15","nodeType":"YulIf","src":"17896:161:15"}]},"nativeSrc":"17732:347:15","nodeType":"YulCase","src":"17732:347:15","value":{"kind":"number","nativeSrc":"17737:1:15","nodeType":"YulLiteral","src":"17737:1:15","type":"","value":"1"}},{"body":{"nativeSrc":"18108:1161:15","nodeType":"YulBlock","src":"18108:1161:15","statements":[{"nativeSrc":"18377:11:15","nodeType":"YulVariableDeclaration","src":"18377:11:15","value":{"kind":"number","nativeSrc":"18387:1:15","nodeType":"YulLiteral","src":"18387:1:15","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"18381:2:15","nodeType":"YulTypedName","src":"18381:2:15","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18501:3:15","nodeType":"YulLiteral","src":"18501:3:15","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"18506:14:15","nodeType":"YulIdentifier","src":"18506:14:15"}],"functionName":{"name":"mstore","nativeSrc":"18494:6:15","nodeType":"YulIdentifier","src":"18494:6:15"},"nativeSrc":"18494:27:15","nodeType":"YulFunctionCall","src":"18494:27:15"},"nativeSrc":"18494:27:15","nodeType":"YulExpressionStatement","src":"18494:27:15"},{"nativeSrc":"18546:30:15","nodeType":"YulVariableDeclaration","src":"18546:30:15","value":{"arguments":[{"kind":"number","nativeSrc":"18566:3:15","nodeType":"YulLiteral","src":"18566:3:15","type":"","value":"0x0"},{"kind":"number","nativeSrc":"18571:4:15","nodeType":"YulLiteral","src":"18571:4:15","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"18556:9:15","nodeType":"YulIdentifier","src":"18556:9:15"},"nativeSrc":"18556:20:15","nodeType":"YulFunctionCall","src":"18556:20:15"},"variables":[{"name":"sc","nativeSrc":"18550:2:15","nodeType":"YulTypedName","src":"18550:2:15","type":""}]},{"nativeSrc":"18602:31:15","nodeType":"YulVariableDeclaration","src":"18602:31:15","value":{"arguments":[{"name":"_postBytes","nativeSrc":"18616:10:15","nodeType":"YulIdentifier","src":"18616:10:15"},{"kind":"number","nativeSrc":"18628:4:15","nodeType":"YulLiteral","src":"18628:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18612:3:15","nodeType":"YulIdentifier","src":"18612:3:15"},"nativeSrc":"18612:21:15","nodeType":"YulFunctionCall","src":"18612:21:15"},"variables":[{"name":"mc","nativeSrc":"18606:2:15","nodeType":"YulTypedName","src":"18606:2:15","type":""}]},{"nativeSrc":"18658:27:15","nodeType":"YulVariableDeclaration","src":"18658:27:15","value":{"arguments":[{"name":"mc","nativeSrc":"18673:2:15","nodeType":"YulIdentifier","src":"18673:2:15"},{"name":"mlength","nativeSrc":"18677:7:15","nodeType":"YulIdentifier","src":"18677:7:15"}],"functionName":{"name":"add","nativeSrc":"18669:3:15","nodeType":"YulIdentifier","src":"18669:3:15"},"nativeSrc":"18669:16:15","nodeType":"YulFunctionCall","src":"18669:16:15"},"variables":[{"name":"end","nativeSrc":"18662:3:15","nodeType":"YulTypedName","src":"18662:3:15","type":""}]},{"body":{"nativeSrc":"18993:254:15","nodeType":"YulBlock","src":"18993:254:15","statements":[{"body":{"nativeSrc":"19059:162:15","nodeType":"YulBlock","src":"19059:162:15","statements":[{"nativeSrc":"19139:12:15","nodeType":"YulAssignment","src":"19139:12:15","value":{"kind":"number","nativeSrc":"19150:1:15","nodeType":"YulLiteral","src":"19150:1:15","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"19139:7:15","nodeType":"YulIdentifier","src":"19139:7:15"}]},{"nativeSrc":"19184:7:15","nodeType":"YulAssignment","src":"19184:7:15","value":{"kind":"number","nativeSrc":"19190:1:15","nodeType":"YulLiteral","src":"19190:1:15","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"19184:2:15","nodeType":"YulIdentifier","src":"19184:2:15"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"sc","nativeSrc":"19042:2:15","nodeType":"YulIdentifier","src":"19042:2:15"}],"functionName":{"name":"sload","nativeSrc":"19036:5:15","nodeType":"YulIdentifier","src":"19036:5:15"},"nativeSrc":"19036:9:15","nodeType":"YulFunctionCall","src":"19036:9:15"},{"arguments":[{"name":"mc","nativeSrc":"19053:2:15","nodeType":"YulIdentifier","src":"19053:2:15"}],"functionName":{"name":"mload","nativeSrc":"19047:5:15","nodeType":"YulIdentifier","src":"19047:5:15"},"nativeSrc":"19047:9:15","nodeType":"YulFunctionCall","src":"19047:9:15"}],"functionName":{"name":"eq","nativeSrc":"19033:2:15","nodeType":"YulIdentifier","src":"19033:2:15"},"nativeSrc":"19033:24:15","nodeType":"YulFunctionCall","src":"19033:24:15"}],"functionName":{"name":"iszero","nativeSrc":"19026:6:15","nodeType":"YulIdentifier","src":"19026:6:15"},"nativeSrc":"19026:32:15","nodeType":"YulFunctionCall","src":"19026:32:15"},"nativeSrc":"19023:198:15","nodeType":"YulIf","src":"19023:198:15"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"18854:2:15","nodeType":"YulIdentifier","src":"18854:2:15"},{"name":"end","nativeSrc":"18858:3:15","nodeType":"YulIdentifier","src":"18858:3:15"}],"functionName":{"name":"lt","nativeSrc":"18851:2:15","nodeType":"YulIdentifier","src":"18851:2:15"},"nativeSrc":"18851:11:15","nodeType":"YulFunctionCall","src":"18851:11:15"},{"name":"cb","nativeSrc":"18864:2:15","nodeType":"YulIdentifier","src":"18864:2:15"}],"functionName":{"name":"add","nativeSrc":"18847:3:15","nodeType":"YulIdentifier","src":"18847:3:15"},"nativeSrc":"18847:20:15","nodeType":"YulFunctionCall","src":"18847:20:15"},{"kind":"number","nativeSrc":"18869:1:15","nodeType":"YulLiteral","src":"18869:1:15","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"18844:2:15","nodeType":"YulIdentifier","src":"18844:2:15"},"nativeSrc":"18844:27:15","nodeType":"YulFunctionCall","src":"18844:27:15"},"nativeSrc":"18837:410:15","nodeType":"YulForLoop","post":{"nativeSrc":"18872:120:15","nodeType":"YulBlock","src":"18872:120:15","statements":[{"nativeSrc":"18902:16:15","nodeType":"YulAssignment","src":"18902:16:15","value":{"arguments":[{"name":"sc","nativeSrc":"18912:2:15","nodeType":"YulIdentifier","src":"18912:2:15"},{"kind":"number","nativeSrc":"18916:1:15","nodeType":"YulLiteral","src":"18916:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18908:3:15","nodeType":"YulIdentifier","src":"18908:3:15"},"nativeSrc":"18908:10:15","nodeType":"YulFunctionCall","src":"18908:10:15"},"variableNames":[{"name":"sc","nativeSrc":"18902:2:15","nodeType":"YulIdentifier","src":"18902:2:15"}]},{"nativeSrc":"18947:19:15","nodeType":"YulAssignment","src":"18947:19:15","value":{"arguments":[{"name":"mc","nativeSrc":"18957:2:15","nodeType":"YulIdentifier","src":"18957:2:15"},{"kind":"number","nativeSrc":"18961:4:15","nodeType":"YulLiteral","src":"18961:4:15","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18953:3:15","nodeType":"YulIdentifier","src":"18953:3:15"},"nativeSrc":"18953:13:15","nodeType":"YulFunctionCall","src":"18953:13:15"},"variableNames":[{"name":"mc","nativeSrc":"18947:2:15","nodeType":"YulIdentifier","src":"18947:2:15"}]}]},"pre":{"nativeSrc":"18841:2:15","nodeType":"YulBlock","src":"18841:2:15","statements":[]},"src":"18837:410:15"}]},"nativeSrc":"18100:1169:15","nodeType":"YulCase","src":"18100:1169:15","value":"default"}],"expression":{"arguments":[{"name":"slength","nativeSrc":"17699:7:15","nodeType":"YulIdentifier","src":"17699:7:15"},{"kind":"number","nativeSrc":"17708:2:15","nodeType":"YulLiteral","src":"17708:2:15","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"17696:2:15","nodeType":"YulIdentifier","src":"17696:2:15"},"nativeSrc":"17696:15:15","nodeType":"YulFunctionCall","src":"17696:15:15"},"nativeSrc":"17689:1580:15","nodeType":"YulSwitch","src":"17689:1580:15"}]},"condition":{"arguments":[{"arguments":[{"name":"slength","nativeSrc":"17657:7:15","nodeType":"YulIdentifier","src":"17657:7:15"}],"functionName":{"name":"iszero","nativeSrc":"17650:6:15","nodeType":"YulIdentifier","src":"17650:6:15"},"nativeSrc":"17650:15:15","nodeType":"YulFunctionCall","src":"17650:15:15"}],"functionName":{"name":"iszero","nativeSrc":"17643:6:15","nodeType":"YulIdentifier","src":"17643:6:15"},"nativeSrc":"17643:23:15","nodeType":"YulFunctionCall","src":"17643:23:15"},"nativeSrc":"17640:1647:15","nodeType":"YulIf","src":"17640:1647:15"}]},"nativeSrc":"17349:1952:15","nodeType":"YulCase","src":"17349:1952:15","value":{"kind":"number","nativeSrc":"17354:1:15","nodeType":"YulLiteral","src":"17354:1:15","type":"","value":"1"}},{"body":{"nativeSrc":"19322:74:15","nodeType":"YulBlock","src":"19322:74:15","statements":[{"nativeSrc":"19370:12:15","nodeType":"YulAssignment","src":"19370:12:15","value":{"kind":"number","nativeSrc":"19381:1:15","nodeType":"YulLiteral","src":"19381:1:15","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"19370:7:15","nodeType":"YulIdentifier","src":"19370:7:15"}]}]},"nativeSrc":"19314:82:15","nodeType":"YulCase","src":"19314:82:15","value":"default"}],"expression":{"arguments":[{"name":"slength","nativeSrc":"17319:7:15","nodeType":"YulIdentifier","src":"17319:7:15"},{"name":"mlength","nativeSrc":"17328:7:15","nodeType":"YulIdentifier","src":"17328:7:15"}],"functionName":{"name":"eq","nativeSrc":"17316:2:15","nodeType":"YulIdentifier","src":"17316:2:15"},"nativeSrc":"17316:20:15","nodeType":"YulFunctionCall","src":"17316:20:15"},"nativeSrc":"17309:2087:15","nodeType":"YulSwitch","src":"17309:2087:15"}]},"evmVersion":"prague","externalReferences":[{"declaration":5235,"isOffset":false,"isSlot":false,"src":"17221:10:15","valueSize":1},{"declaration":5235,"isOffset":false,"isSlot":false,"src":"17926:10:15","valueSize":1},{"declaration":5235,"isOffset":false,"isSlot":false,"src":"18616:10:15","valueSize":1},{"declaration":5233,"isOffset":false,"isSlot":true,"src":"17005:14:15","suffix":"slot","valueSize":1},{"declaration":5233,"isOffset":false,"isSlot":true,"src":"18506:14:15","suffix":"slot","valueSize":1},{"declaration":5241,"isOffset":false,"isSlot":false,"src":"18019:7:15","valueSize":1},{"declaration":5241,"isOffset":false,"isSlot":false,"src":"19139:7:15","valueSize":1},{"declaration":5241,"isOffset":false,"isSlot":false,"src":"19370:7:15","valueSize":1}],"id":5244,"nodeType":"InlineAssembly","src":"16918:2488:15"},{"expression":{"id":5245,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5241,"src":"19423:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5239,"id":5246,"nodeType":"Return","src":"19416:14:15"}]},"id":5248,"implemented":true,"kind":"function","modifiers":[],"name":"equalStorage","nameLocation":"16736:12:15","nodeType":"FunctionDefinition","parameters":{"id":5236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5233,"mutability":"mutable","name":"_preBytes","nameLocation":"16772:9:15","nodeType":"VariableDeclaration","scope":5248,"src":"16758:23:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":5232,"name":"bytes","nodeType":"ElementaryTypeName","src":"16758:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5235,"mutability":"mutable","name":"_postBytes","nameLocation":"16804:10:15","nodeType":"VariableDeclaration","scope":5248,"src":"16791:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5234,"name":"bytes","nodeType":"ElementaryTypeName","src":"16791:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16748:72:15"},"returnParameters":{"id":5239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5238,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5248,"src":"16868:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5237,"name":"bool","nodeType":"ElementaryTypeName","src":"16868:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16867:6:15"},"scope":5249,"src":"16727:2710:15","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":5250,"src":"370:19069:15","usedErrors":[],"usedEvents":[]}],"src":"336:19104:15"},"id":15},"project/contracts/CurveRoutes.sol":{"ast":{"absolutePath":"project/contracts/CurveRoutes.sol","exportedSymbols":{"BytesLib":[5249],"CurveRoutes":[5839],"ICurveRouter":[7420]},"id":5840,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":5251,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:16"},{"absolutePath":"project/contracts/dependencies/ICurveRouter.sol","file":"./dependencies/ICurveRouter.sol","id":5253,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5840,"sourceUnit":7421,"src":"64:61:16","symbolAliases":[{"foreign":{"id":5252,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"72:12:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/solidity-bytes-utils@0.8.4/contracts/BytesLib.sol","file":"solidity-bytes-utils/contracts/BytesLib.sol","id":5255,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5840,"sourceUnit":5250,"src":"126:69:16","symbolAliases":[{"foreign":{"id":5254,"name":"BytesLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5249,"src":"134:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CurveRoutes","contractDependencies":[],"contractKind":"library","documentation":{"id":5256,"nodeType":"StructuredDocumentation","src":"197:641:16","text":" @title Library to access a set of curve routes stored as tightly packed bytes\n @dev The format is a concatenation of bytes, packed (ethers.solidityPack in js) with the following fields\n      Fields:\n      <ICurveRouter router>\n      <uint8 numberOfRoutes>\n      -- for each route --\n      <uint8 numberOfSwaps>\n      <address route[i] for i in range((numberOfSwaps * 2) + 1)\n      <uint8 swapParam[i][j] for i in range(numberOfSwaps) for j in range(5)>\n      <address pool[i] for in range(numberOfSwaps)\n      -- end - for each route --\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":5839,"linearizedBaseContracts":[5839],"name":"CurveRoutes","nameLocation":"847:11:16","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5259,"libraryName":{"id":5257,"name":"BytesLib","nameLocations":["869:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":5249,"src":"869:8:16"},"nodeType":"UsingForDirective","src":"863:25:16","typeName":{"id":5258,"name":"bytes","nodeType":"ElementaryTypeName","src":"882:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"constant":true,"id":5262,"mutability":"constant","name":"ADDRESS_SIZE","nameLocation":"917:12:16","nodeType":"VariableDeclaration","scope":5839,"src":"891:43:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5260,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":5261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"932:2:16","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"internal"},{"constant":true,"id":5265,"mutability":"constant","name":"UINT8_SIZE","nameLocation":"964:10:16","nodeType":"VariableDeclaration","scope":5839,"src":"938:40:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5263,"name":"uint256","nodeType":"ElementaryTypeName","src":"938:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":5264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"977:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":5268,"mutability":"constant","name":"MAX_SWAPS","nameLocation":"1008:9:16","nodeType":"VariableDeclaration","scope":5839,"src":"982:39:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5266,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":5267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1020:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":5271,"mutability":"constant","name":"ROUTER_OFFSET","nameLocation":"1051:13:16","nodeType":"VariableDeclaration","scope":5839,"src":"1025:43:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5269,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":5270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1067:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":5276,"mutability":"constant","name":"N_ROUTES_OFFSET","nameLocation":"1098:15:16","nodeType":"VariableDeclaration","scope":5839,"src":"1072:72:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1072:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5273,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"1116:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5274,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"1132:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1116:28:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":5281,"mutability":"constant","name":"ROUTES_BASE_OFFSET","nameLocation":"1174:18:16","nodeType":"VariableDeclaration","scope":5839,"src":"1148:75:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5277,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5278,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5276,"src":"1195:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5279,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"1213:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:28:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"canonicalName":"CurveRoutes.CurveRoute","id":5297,"members":[{"constant":false,"id":5285,"mutability":"mutable","name":"route","nameLocation":"1264:5:16","nodeType":"VariableDeclaration","scope":5297,"src":"1252:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":5282,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5284,"length":{"hexValue":"3131","id":5283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1260:2:16","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1252:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":5292,"mutability":"mutable","name":"swapParams","nameLocation":"1482:10:16","nodeType":"VariableDeclaration","scope":5297,"src":"1460:32:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":5287,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5289,"length":{"id":5288,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"1468:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"1460:18:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":5291,"length":{"hexValue":"35","id":5290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1479:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1460:21:16","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":5296,"mutability":"mutable","name":"pools","nameLocation":"1517:5:16","nodeType":"VariableDeclaration","scope":5297,"src":"1498:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":5293,"name":"address","nodeType":"ElementaryTypeName","src":"1498:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5295,"length":{"id":5294,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"1506:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"1498:18:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"name":"CurveRoute","nameLocation":"1235:10:16","nodeType":"StructDefinition","scope":5839,"src":"1228:299:16","visibility":"public"},{"errorSelector":"e3683637","id":5299,"name":"CurveRouterCantBeZero","nameLocation":"1537:21:16","nodeType":"ErrorDefinition","parameters":{"id":5298,"nodeType":"ParameterList","parameters":[],"src":"1558:2:16"},"src":"1531:30:16"},{"errorSelector":"0f64c3f8","id":5301,"name":"AtLeastOneRoute","nameLocation":"1570:15:16","nodeType":"ErrorDefinition","parameters":{"id":5300,"nodeType":"ParameterList","parameters":[],"src":"1585:2:16"},"src":"1564:24:16"},{"errorSelector":"947d5a84","id":5303,"name":"InvalidLength","nameLocation":"1597:13:16","nodeType":"ErrorDefinition","parameters":{"id":5302,"nodeType":"ParameterList","parameters":[],"src":"1610:2:16"},"src":"1591:22:16"},{"errorSelector":"5875b111","id":5308,"name":"InvalidRoute","nameLocation":"1622:12:16","nodeType":"ErrorDefinition","parameters":{"id":5307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5306,"mutability":"mutable","name":"route","nameLocation":"1646:5:16","nodeType":"VariableDeclaration","scope":5308,"src":"1635:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":5305,"nodeType":"UserDefinedTypeName","pathNode":{"id":5304,"name":"CurveRoute","nameLocations":["1635:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"1635:10:16"},"referencedDeclaration":5297,"src":"1635:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"1634:18:16"},"src":"1616:37:16"},{"errorSelector":"b60616b2","id":5312,"name":"TooManySwaps","nameLocation":"1662:12:16","nodeType":"ErrorDefinition","parameters":{"id":5311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5310,"mutability":"mutable","name":"nSwaps","nameLocation":"1681:6:16","nodeType":"VariableDeclaration","scope":5312,"src":"1675:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5309,"name":"uint8","nodeType":"ElementaryTypeName","src":"1675:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1674:14:16"},"src":"1656:33:16"},{"errorSelector":"8c9aec7b","id":5318,"name":"RouteNotFound","nameLocation":"1698:13:16","nodeType":"ErrorDefinition","parameters":{"id":5317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5314,"mutability":"mutable","name":"tokenIn","nameLocation":"1720:7:16","nodeType":"VariableDeclaration","scope":5318,"src":"1712:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5313,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5316,"mutability":"mutable","name":"tokenOut","nameLocation":"1737:8:16","nodeType":"VariableDeclaration","scope":5318,"src":"1729:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5315,"name":"address","nodeType":"ElementaryTypeName","src":"1729:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1711:35:16"},"src":"1692:55:16"},{"body":{"id":5476,"nodeType":"Block","src":"1809:871:16","statements":[{"assignments":[5325],"declarations":[{"constant":false,"id":5325,"mutability":"mutable","name":"router","nameLocation":"1828:6:16","nodeType":"VariableDeclaration","scope":5476,"src":"1815:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},"typeName":{"id":5324,"nodeType":"UserDefinedTypeName","pathNode":{"id":5323,"name":"ICurveRouter","nameLocations":["1815:12:16"],"nodeType":"IdentifierPath","referencedDeclaration":7420,"src":"1815:12:16"},"referencedDeclaration":7420,"src":"1815:12:16","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"visibility":"internal"}],"id":5332,"initialValue":{"arguments":[{"arguments":[{"id":5329,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"1872:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5327,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"1850:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1862:9:16","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":5006,"src":"1850:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":5330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1850:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5326,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"1837:12:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICurveRouter_$7420_$","typeString":"type(contract ICurveRouter)"}},"id":5331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:50:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"nodeType":"VariableDeclarationStatement","src":"1815:72:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5335,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5325,"src":"1905:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}],"id":5334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1897:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5333,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:16","typeDescriptions":{}}},"id":5336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1897:15:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1924:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1916:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5337,"name":"address","nodeType":"ElementaryTypeName","src":"1916:7:16","typeDescriptions":{}}},"id":5340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1916:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1897:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5345,"nodeType":"IfStatement","src":"1893:65:16","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5342,"name":"CurveRouterCantBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5299,"src":"1935:21:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1935:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5344,"nodeType":"RevertStatement","src":"1928:30:16"}},{"assignments":[5347],"declarations":[{"constant":false,"id":5347,"mutability":"mutable","name":"nRoutes","nameLocation":"1970:7:16","nodeType":"VariableDeclaration","scope":5476,"src":"1964:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5346,"name":"uint8","nodeType":"ElementaryTypeName","src":"1964:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5352,"initialValue":{"arguments":[{"id":5350,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5276,"src":"2000:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5348,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"1980:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1992:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"1980:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1980:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1964:52:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5353,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"2026:7:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2037:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2026:12:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5359,"nodeType":"IfStatement","src":"2022:42:16","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5356,"name":"AtLeastOneRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5301,"src":"2047:15:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2047:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5358,"nodeType":"RevertStatement","src":"2040:24:16"}},{"assignments":[5361],"declarations":[{"constant":false,"id":5361,"mutability":"mutable","name":"offset","nameLocation":"2078:6:16","nodeType":"VariableDeclaration","scope":5476,"src":"2070:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5360,"name":"uint256","nodeType":"ElementaryTypeName","src":"2070:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5363,"initialValue":{"id":5362,"name":"ROUTES_BASE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"2087:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2070:35:16"},{"body":{"id":5466,"nodeType":"Block","src":"2145:469:16","statements":[{"assignments":[5374,5377],"declarations":[{"constant":false,"id":5374,"mutability":"mutable","name":"nSwaps","nameLocation":"2160:6:16","nodeType":"VariableDeclaration","scope":5466,"src":"2154:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5373,"name":"uint8","nodeType":"ElementaryTypeName","src":"2154:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5377,"mutability":"mutable","name":"route","nameLocation":"2186:5:16","nodeType":"VariableDeclaration","scope":5466,"src":"2168:23:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":5376,"nodeType":"UserDefinedTypeName","pathNode":{"id":5375,"name":"CurveRoute","nameLocations":["2168:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"2168:10:16"},"referencedDeclaration":5297,"src":"2168:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":5382,"initialValue":{"arguments":[{"id":5379,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"2205:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5380,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"2218:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5378,"name":"readRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5693,"src":"2195:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":5381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2195:30:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"2153:72:16"},{"body":{"id":5422,"nodeType":"Block","src":"2266:123:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":5392,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2280:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2286:5:16","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"2280:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":5397,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5394,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"2292:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2292:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2280:18:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2310:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2302:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5398,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:16","typeDescriptions":{}}},"id":5401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2302:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2280:32:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":5403,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2316:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2322:5:16","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"2316:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":5410,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5405,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"2328:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2332:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2328:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2336:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2328:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2316:22:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5411,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:16","typeDescriptions":{}}},"id":5414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2316:36:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2280:72:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5421,"nodeType":"IfStatement","src":"2276:104:16","trueBody":{"errorCall":{"arguments":[{"id":5418,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2374:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":5417,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"2361:12:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$5297_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":5419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5420,"nodeType":"RevertStatement","src":"2354:26:16"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5386,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"2249:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5387,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5374,"src":"2253:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2249:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5423,"initializationExpression":{"assignments":[5384],"declarations":[{"constant":false,"id":5384,"mutability":"mutable","name":"j","nameLocation":"2246:1:16","nodeType":"VariableDeclaration","scope":5423,"src":"2238:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5383,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5385,"nodeType":"VariableDeclarationStatement","src":"2238:9:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2261:3:16","subExpression":{"id":5389,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"2261:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5391,"nodeType":"ExpressionStatement","src":"2261:3:16"},"nodeType":"ForStatement","src":"2233:156:16"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":5424,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2400:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2406:5:16","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"2400:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":5429,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5426,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5374,"src":"2412:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2421:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2412:10:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2400:23:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2435:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2427:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5430,"name":"address","nodeType":"ElementaryTypeName","src":"2427:7:16","typeDescriptions":{}}},"id":5433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2400:37:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5439,"nodeType":"IfStatement","src":"2396:69:16","trueBody":{"errorCall":{"arguments":[{"id":5436,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2459:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":5435,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"2446:12:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$5297_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":5437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2446:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5438,"nodeType":"RevertStatement","src":"2439:26:16"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5440,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5374,"src":"2477:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5441,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"2487:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2477:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":5443,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2500:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5444,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2506:5:16","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"2500:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":5448,"indexExpression":{"arguments":[{"id":5446,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5374,"src":"2522:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5445,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5736,"src":"2512:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2512:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2500:30:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2542:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2534:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5449,"name":"address","nodeType":"ElementaryTypeName","src":"2534:7:16","typeDescriptions":{}}},"id":5452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:10:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:44:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2477:67:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5459,"nodeType":"IfStatement","src":"2473:99:16","trueBody":{"errorCall":{"arguments":[{"id":5456,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5377,"src":"2566:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":5455,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"2553:12:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$5297_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":5457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2553:19:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5458,"nodeType":"RevertStatement","src":"2546:26:16"}},{"expression":{"id":5464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5460,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"2580:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":5462,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5374,"src":"2600:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5461,"name":"routeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5721,"src":"2590:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":5463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2580:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5465,"nodeType":"ExpressionStatement","src":"2580:27:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5367,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"2127:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5368,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5347,"src":"2131:7:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2127:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5467,"initializationExpression":{"assignments":[5365],"declarations":[{"constant":false,"id":5365,"mutability":"mutable","name":"i","nameLocation":"2124:1:16","nodeType":"VariableDeclaration","scope":5467,"src":"2116:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5364,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5366,"nodeType":"VariableDeclarationStatement","src":"2116:9:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2140:3:16","subExpression":{"id":5370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"2140:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5372,"nodeType":"ExpressionStatement","src":"2140:3:16"},"nodeType":"ForStatement","src":"2111:503:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5468,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5320,"src":"2623:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2635:6:16","memberName":"length","nodeType":"MemberAccess","src":"2623:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5470,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"2645:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2623:28:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5475,"nodeType":"IfStatement","src":"2619:56:16","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5472,"name":"InvalidLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"2660:13:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2660:15:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5474,"nodeType":"RevertStatement","src":"2653:22:16"}}]},"id":5477,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1760:8:16","nodeType":"FunctionDefinition","parameters":{"id":5321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5320,"mutability":"mutable","name":"curveRoutes","nameLocation":"1782:11:16","nodeType":"VariableDeclaration","scope":5477,"src":"1769:24:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5319,"name":"bytes","nodeType":"ElementaryTypeName","src":"1769:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1768:26:16"},"returnParameters":{"id":5322,"nodeType":"ParameterList","parameters":[],"src":"1809:0:16"},"scope":5839,"src":"1751:929:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5692,"nodeType":"Block","src":"2819:930:16","statements":[{"expression":{"id":5494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5489,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"2825:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5492,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"2854:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5490,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"2834:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2846:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"2834:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2834:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2825:36:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":5495,"nodeType":"ExpressionStatement","src":"2825:36:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5496,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"2871:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":5497,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"2880:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2871:18:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5503,"nodeType":"IfStatement","src":"2867:51:16","trueBody":{"errorCall":{"arguments":[{"id":5500,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"2911:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5499,"name":"TooManySwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5312,"src":"2898:12:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":5501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:20:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5502,"nodeType":"RevertStatement","src":"2891:27:16"}},{"body":{"id":5532,"nodeType":"Block","src":"2968:93:16","statements":[{"expression":{"id":5530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":5515,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"2976:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2982:5:16","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"2976:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":5519,"indexExpression":{"id":5517,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"2988:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2976:14:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5522,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3015:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5523,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3024:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3015:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5525,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"3037:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5526,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"3041:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3037:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3015:38:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5520,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"2993:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3005:9:16","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":5006,"src":"2993:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":5529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2993:61:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2976:78:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5531,"nodeType":"ExpressionStatement","src":"2976:78:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5507,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"2940:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":5509,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"2954:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5508,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5736,"src":"2944:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":5510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2940:21:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5533,"initializationExpression":{"assignments":[5505],"declarations":[{"constant":false,"id":5505,"mutability":"mutable","name":"i","nameLocation":"2937:1:16","nodeType":"VariableDeclaration","scope":5533,"src":"2929:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5504,"name":"uint256","nodeType":"ElementaryTypeName","src":"2929:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5506,"nodeType":"VariableDeclarationStatement","src":"2929:9:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2963:3:16","subExpression":{"id":5512,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"2963:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5514,"nodeType":"ExpressionStatement","src":"2963:3:16"},"nodeType":"ForStatement","src":"2924:137:16"},{"expression":{"id":5542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5534,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3066:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5535,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3076:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5537,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"3099:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5536,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5736,"src":"3089:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":5538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3089:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5539,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"3109:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3089:32:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3076:45:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3066:55:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5543,"nodeType":"ExpressionStatement","src":"3066:55:16"},{"body":{"id":5656,"nodeType":"Block","src":"3160:428:16","statements":[{"expression":{"id":5570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":5553,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"3168:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3174:10:16","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"3168:16:16","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":5558,"indexExpression":{"id":5555,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3185:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3168:19:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":5559,"indexExpression":{"hexValue":"30","id":5556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3188:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3168:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5562,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3213:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5563,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3222:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5564,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3226:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3222:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3239:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3222:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5560,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"3193:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3205:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"3193:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3168:73:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5571,"nodeType":"ExpressionStatement","src":"3168:73:16"},{"expression":{"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":5572,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"3249:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3255:10:16","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"3249:16:16","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":5577,"indexExpression":{"id":5574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3266:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3249:19:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":5578,"indexExpression":{"hexValue":"31","id":5575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3269:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3249:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5581,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3294:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5582,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3303:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5583,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3307:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3303:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3320:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3303:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3294:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3324:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3294:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5579,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"3274:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3286:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"3274:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3274:52:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3249:77:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5592,"nodeType":"ExpressionStatement","src":"3249:77:16"},{"expression":{"id":5612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":5593,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"3334:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3340:10:16","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"3334:16:16","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":5598,"indexExpression":{"id":5595,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3351:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:19:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":5599,"indexExpression":{"hexValue":"32","id":5596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3354:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3334:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5602,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3379:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5603,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3388:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5604,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3392:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3388:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3405:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3388:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3379:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":5609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3409:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3379:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5600,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"3359:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3371:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"3359:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:52:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3334:77:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5613,"nodeType":"ExpressionStatement","src":"3334:77:16"},{"expression":{"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":5614,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"3419:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5618,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3425:10:16","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"3419:16:16","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":5619,"indexExpression":{"id":5616,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3436:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3419:19:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":5620,"indexExpression":{"hexValue":"33","id":5617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3419:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5623,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3464:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5624,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3473:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5625,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3477:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3473:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3490:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3473:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3464:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":5630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3494:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"3464:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5621,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"3444:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3456:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"3444:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:52:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3419:77:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5634,"nodeType":"ExpressionStatement","src":"3419:77:16"},{"expression":{"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":5635,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"3504:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3510:10:16","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"3504:16:16","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":5640,"indexExpression":{"id":5637,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3521:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3504:19:16","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":5641,"indexExpression":{"hexValue":"34","id":5638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3524:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3504:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5644,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3549:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5645,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3558:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5646,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3562:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3558:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3575:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3558:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3549:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":5651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3579:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3549:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5642,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"3529:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3541:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"3529:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3529:52:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3504:77:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5655,"nodeType":"ExpressionStatement","src":"3504:77:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5547,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3143:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5548,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"3147:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3143:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5657,"initializationExpression":{"assignments":[5545],"declarations":[{"constant":false,"id":5545,"mutability":"mutable","name":"i","nameLocation":"3140:1:16","nodeType":"VariableDeclaration","scope":5657,"src":"3132:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5544,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5546,"nodeType":"VariableDeclarationStatement","src":"3132:9:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3155:3:16","subExpression":{"id":5550,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5545,"src":"3155:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5552,"nodeType":"ExpressionStatement","src":"3155:3:16"},"nodeType":"ForStatement","src":"3127:461:16"},{"expression":{"id":5664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5658,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3593:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5659,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"3603:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5660,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3612:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3603:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3625:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3603:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3593:33:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5665,"nodeType":"ExpressionStatement","src":"3593:33:16"},{"body":{"id":5690,"nodeType":"Block","src":"3665:80:16","statements":[{"expression":{"id":5688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":5675,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"3673:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":5678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3679:5:16","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":5296,"src":"3673:11:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},"id":5679,"indexExpression":{"id":5677,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"3685:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3673:14:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5682,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5481,"src":"3712:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5683,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"3721:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5684,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"3725:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3721:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3712:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5680,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5479,"src":"3690:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3702:9:16","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":5006,"src":"3690:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3690:48:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3673:65:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5689,"nodeType":"ExpressionStatement","src":"3673:65:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"3648:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5670,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5484,"src":"3652:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3648:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5691,"initializationExpression":{"assignments":[5667],"declarations":[{"constant":false,"id":5667,"mutability":"mutable","name":"i","nameLocation":"3645:1:16","nodeType":"VariableDeclaration","scope":5691,"src":"3637:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5668,"nodeType":"VariableDeclarationStatement","src":"3637:9:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3660:3:16","subExpression":{"id":5672,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5667,"src":"3660:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5674,"nodeType":"ExpressionStatement","src":"3660:3:16"},"nodeType":"ForStatement","src":"3632:113:16"}]},"id":5693,"implemented":true,"kind":"function","modifiers":[],"name":"readRoute","nameLocation":"2693:9:16","nodeType":"FunctionDefinition","parameters":{"id":5482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5479,"mutability":"mutable","name":"curveRoutes","nameLocation":"2721:11:16","nodeType":"VariableDeclaration","scope":5693,"src":"2708:24:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5478,"name":"bytes","nodeType":"ElementaryTypeName","src":"2708:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5481,"mutability":"mutable","name":"offset","nameLocation":"2746:6:16","nodeType":"VariableDeclaration","scope":5693,"src":"2738:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2702:54:16"},"returnParameters":{"id":5488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5484,"mutability":"mutable","name":"nSwaps","nameLocation":"2786:6:16","nodeType":"VariableDeclaration","scope":5693,"src":"2780:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5483,"name":"uint8","nodeType":"ElementaryTypeName","src":"2780:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5487,"mutability":"mutable","name":"route","nameLocation":"2812:5:16","nodeType":"VariableDeclaration","scope":5693,"src":"2794:23:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":5486,"nodeType":"UserDefinedTypeName","pathNode":{"id":5485,"name":"CurveRoute","nameLocations":["2794:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"2794:10:16"},"referencedDeclaration":5297,"src":"2794:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"2779:39:16"},"scope":5839,"src":"2684:1065:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5720,"nodeType":"Block","src":"3818:189:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5700,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3837:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5702,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5695,"src":"3876:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5701,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5736,"src":"3866:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":5703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3866:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5704,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"3892:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3866:38:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:67:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5707,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5695,"src":"3923:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":5708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3932:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3923:10:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5710,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"3936:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3923:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3922:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:110:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5714,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5695,"src":"3971:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5715,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"3980:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3971:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5717,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3970:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:156:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5699,"id":5719,"nodeType":"Return","src":"3824:169:16"}]},"id":5721,"implemented":true,"kind":"function","modifiers":[],"name":"routeSize","nameLocation":"3762:9:16","nodeType":"FunctionDefinition","parameters":{"id":5696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5695,"mutability":"mutable","name":"nSwaps","nameLocation":"3778:6:16","nodeType":"VariableDeclaration","scope":5721,"src":"3772:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5694,"name":"uint8","nodeType":"ElementaryTypeName","src":"3772:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3771:14:16"},"returnParameters":{"id":5699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5721,"src":"3809:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5697,"name":"uint256","nodeType":"ElementaryTypeName","src":"3809:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3808:9:16"},"scope":5839,"src":"3753:254:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5735,"nodeType":"Block","src":"4075:34:16","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5728,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"4089:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4098:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4089:10:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4102:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4089:14:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":5733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4088:16:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5727,"id":5734,"nodeType":"Return","src":"4081:23:16"}]},"id":5736,"implemented":true,"kind":"function","modifiers":[],"name":"_routeLen","nameLocation":"4020:9:16","nodeType":"FunctionDefinition","parameters":{"id":5724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5723,"mutability":"mutable","name":"nSwaps","nameLocation":"4036:6:16","nodeType":"VariableDeclaration","scope":5736,"src":"4030:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5722,"name":"uint8","nodeType":"ElementaryTypeName","src":"4030:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4029:14:16"},"returnParameters":{"id":5727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5736,"src":"4066:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5725,"name":"uint256","nodeType":"ElementaryTypeName","src":"4066:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4065:9:16"},"scope":5839,"src":"4011:98:16","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5837,"nodeType":"Block","src":"4278:614:16","statements":[{"expression":{"id":5758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5751,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"4284:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5755,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5271,"src":"4328:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5753,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"4306:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4318:9:16","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":5006,"src":"4306:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":5756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4306:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5752,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"4293:12:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICurveRouter_$7420_$","typeString":"type(contract ICurveRouter)"}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4293:50:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"src":"4284:59:16","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"id":5759,"nodeType":"ExpressionStatement","src":"4284:59:16"},{"assignments":[5761],"declarations":[{"constant":false,"id":5761,"mutability":"mutable","name":"nRoutes","nameLocation":"4355:7:16","nodeType":"VariableDeclaration","scope":5837,"src":"4349:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5760,"name":"uint8","nodeType":"ElementaryTypeName","src":"4349:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5766,"initialValue":{"arguments":[{"id":5764,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5276,"src":"4385:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5762,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"4365:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4377:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"4365:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4365:36:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4349:52:16"},{"assignments":[5768],"declarations":[{"constant":false,"id":5768,"mutability":"mutable","name":"offset","nameLocation":"4415:6:16","nodeType":"VariableDeclaration","scope":5837,"src":"4407:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4407:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5770,"initialValue":{"id":5769,"name":"ROUTES_BASE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5281,"src":"4424:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4407:35:16"},{"body":{"id":5830,"nodeType":"Block","src":"4482:361:16","statements":[{"assignments":[5781],"declarations":[{"constant":false,"id":5781,"mutability":"mutable","name":"nSwaps","nameLocation":"4496:6:16","nodeType":"VariableDeclaration","scope":5830,"src":"4490:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5780,"name":"uint8","nodeType":"ElementaryTypeName","src":"4490:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":5786,"initialValue":{"arguments":[{"id":5784,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4525:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5782,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"4505:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4517:7:16","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":5032,"src":"4505:19:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8)"}},"id":5785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:27:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4490:42:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5789,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4575:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5790,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"4584:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4575:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5787,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"4553:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4565:9:16","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":5006,"src":"4553:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":5792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4553:42:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5793,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"4599:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4553:53:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5797,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4640:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5798,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5265,"src":"4649:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5800,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"4662:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5801,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"4677:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4662:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":5803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4686:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4662:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:47:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5795,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"4618:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4630:9:16","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":5006,"src":"4618:21:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (address)"}},"id":5806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4618:70:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5807,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5742,"src":"4692:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4618:82:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4553:147:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5823,"nodeType":"IfStatement","src":"4540:262:16","trueBody":{"id":5822,"nodeType":"Block","src":"4709:93:16","statements":[{"expression":{"id":5816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":5810,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"4722:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"id":5811,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4719:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5813,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5738,"src":"4741:11:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":5814,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4754:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5812,"name":"readRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5693,"src":"4731:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":5815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4731:30:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"src":"4719:42:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5817,"nodeType":"ExpressionStatement","src":"4719:42:16"},{"expression":{"components":[{"id":5818,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5746,"src":"4779:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},{"id":5819,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5749,"src":"4787:5:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"id":5820,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4778:15:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"functionReturnParameters":5750,"id":5821,"nodeType":"Return","src":"4771:22:16"}]}},{"expression":{"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5824,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5768,"src":"4809:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":5826,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5781,"src":"4829:6:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":5825,"name":"routeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5721,"src":"4819:9:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":5827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4819:17:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4809:27:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5829,"nodeType":"ExpressionStatement","src":"4809:27:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5774,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5772,"src":"4464:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5775,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5761,"src":"4468:7:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4464:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5831,"initializationExpression":{"assignments":[5772],"declarations":[{"constant":false,"id":5772,"mutability":"mutable","name":"i","nameLocation":"4461:1:16","nodeType":"VariableDeclaration","scope":5831,"src":"4453:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5771,"name":"uint256","nodeType":"ElementaryTypeName","src":"4453:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5773,"nodeType":"VariableDeclarationStatement","src":"4453:9:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4477:3:16","subExpression":{"id":5777,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5772,"src":"4477:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5779,"nodeType":"ExpressionStatement","src":"4477:3:16"},"nodeType":"ForStatement","src":"4448:395:16"},{"errorCall":{"arguments":[{"id":5833,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5740,"src":"4869:7:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5834,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5742,"src":"4878:8:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5832,"name":"RouteNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5318,"src":"4855:13:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":5835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4855:32:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5836,"nodeType":"RevertStatement","src":"4848:39:16"}]},"id":5838,"implemented":true,"kind":"function","modifiers":[],"name":"findRoute","nameLocation":"4122:9:16","nodeType":"FunctionDefinition","parameters":{"id":5743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5738,"mutability":"mutable","name":"curveRoutes","nameLocation":"4150:11:16","nodeType":"VariableDeclaration","scope":5838,"src":"4137:24:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5737,"name":"bytes","nodeType":"ElementaryTypeName","src":"4137:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5740,"mutability":"mutable","name":"tokenIn","nameLocation":"4175:7:16","nodeType":"VariableDeclaration","scope":5838,"src":"4167:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5739,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5742,"mutability":"mutable","name":"tokenOut","nameLocation":"4196:8:16","nodeType":"VariableDeclaration","scope":5838,"src":"4188:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5741,"name":"address","nodeType":"ElementaryTypeName","src":"4188:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4131:77:16"},"returnParameters":{"id":5750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5746,"mutability":"mutable","name":"router","nameLocation":"4245:6:16","nodeType":"VariableDeclaration","scope":5838,"src":"4232:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},"typeName":{"id":5745,"nodeType":"UserDefinedTypeName","pathNode":{"id":5744,"name":"ICurveRouter","nameLocations":["4232:12:16"],"nodeType":"IdentifierPath","referencedDeclaration":7420,"src":"4232:12:16"},"referencedDeclaration":7420,"src":"4232:12:16","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":5749,"mutability":"mutable","name":"route","nameLocation":"4271:5:16","nodeType":"VariableDeclaration","scope":5838,"src":"4253:23:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":5748,"nodeType":"UserDefinedTypeName","pathNode":{"id":5747,"name":"CurveRoute","nameLocations":["4253:10:16"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"4253:10:16"},"referencedDeclaration":5297,"src":"4253:10:16","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"4231:46:16"},"scope":5839,"src":"4113:779:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5840,"src":"839:4055:16","usedErrors":[5299,5301,5303,5308,5312,5318],"usedEvents":[]}],"src":"39:4856:16"},"id":16},"project/contracts/P2PSwapRouter.sol":{"ast":{"absolutePath":"project/contracts/P2PSwapRouter.sol","exportedSymbols":{"IERC20Metadata":[845],"ISwapRouterErrors":[7450],"Math":[3036],"P2PSwapRouter":[6342],"SafeCast":[4801],"SafeERC20":[1300]},"id":6343,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":5841,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:17"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":5843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6343,"sourceUnit":3037,"src":"64:65:17","symbolAliases":[{"foreign":{"id":5842,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"72:4:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":5845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6343,"sourceUnit":4802,"src":"130:73:17","symbolAliases":[{"foreign":{"id":5844,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"138:8:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":5847,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6343,"sourceUnit":1301,"src":"204:82:17","symbolAliases":[{"foreign":{"id":5846,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"212:9:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":5849,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6343,"sourceUnit":846,"src":"287:97:17","symbolAliases":[{"foreign":{"id":5848,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"295:14:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/interfaces/ISwapRouterErrors.sol","file":"./interfaces/ISwapRouterErrors.sol","id":5851,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6343,"sourceUnit":7451,"src":"385:69:17","symbolAliases":[{"foreign":{"id":5850,"name":"ISwapRouterErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7450,"src":"393:17:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":5853,"name":"ISwapRouterErrors","nameLocations":["683:17:17"],"nodeType":"IdentifierPath","referencedDeclaration":7450,"src":"683:17:17"},"id":5854,"nodeType":"InheritanceSpecifier","src":"683:17:17"}],"canonicalName":"P2PSwapRouter","contractDependencies":[],"contractKind":"contract","documentation":{"id":5852,"nodeType":"StructuredDocumentation","src":"456:200:17","text":" @title P2PSwapRouter\n @notice Contract following the interface of ISwapRouter that executes single swaps from authorized contracts\n         at configured prices, on behalf of an account"},"fullyImplemented":true,"id":6342,"linearizedBaseContracts":[6342,7450,4915,4815],"name":"P2PSwapRouter","nameLocation":"666:13:17","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5858,"libraryName":{"id":5855,"name":"SafeERC20","nameLocations":["711:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":1300,"src":"711:9:17"},"nodeType":"UsingForDirective","src":"705:35:17","typeName":{"id":5857,"nodeType":"UserDefinedTypeName","pathNode":{"id":5856,"name":"IERC20Metadata","nameLocations":["725:14:17"],"nodeType":"IdentifierPath","referencedDeclaration":845,"src":"725:14:17"},"referencedDeclaration":845,"src":"725:14:17","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}}},{"global":false,"id":5861,"libraryName":{"id":5859,"name":"Math","nameLocations":["749:4:17"],"nodeType":"IdentifierPath","referencedDeclaration":3036,"src":"749:4:17"},"nodeType":"UsingForDirective","src":"743:23:17","typeName":{"id":5860,"name":"uint256","nodeType":"ElementaryTypeName","src":"758:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":5864,"libraryName":{"id":5862,"name":"SafeCast","nameLocations":["775:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":4801,"src":"775:8:17"},"nodeType":"UsingForDirective","src":"769:27:17","typeName":{"id":5863,"name":"uint256","nodeType":"ElementaryTypeName","src":"788:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":5867,"mutability":"constant","name":"WAD","nameLocation":"826:3:17","nodeType":"VariableDeclaration","scope":6342,"src":"800:36:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5865,"name":"uint256","nodeType":"ElementaryTypeName","src":"800:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":5866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"832:4:17","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"canonicalName":"P2PSwapRouter.Price","id":5874,"members":[{"constant":false,"id":5869,"mutability":"mutable","name":"tokenIn","nameLocation":"868:7:17","nodeType":"VariableDeclaration","scope":5874,"src":"860:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5868,"name":"address","nodeType":"ElementaryTypeName","src":"860:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5871,"mutability":"mutable","name":"tokenOut","nameLocation":"889:8:17","nodeType":"VariableDeclaration","scope":5874,"src":"881:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5870,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5873,"mutability":"mutable","name":"price","nameLocation":"911:5:17","nodeType":"VariableDeclaration","scope":5874,"src":"903:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5872,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Price","nameLocation":"848:5:17","nodeType":"StructDefinition","scope":6342,"src":"841:80:17","visibility":"public"},{"constant":false,"id":5880,"mutability":"mutable","name":"_prices","nameLocation":"1005:7:17","nodeType":"VariableDeclaration","scope":6342,"src":"925:87:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":5879,"keyName":"tokenIn","keyNameLocation":"941:7:17","keyType":{"id":5875,"name":"address","nodeType":"ElementaryTypeName","src":"933:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"925:70:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5878,"keyName":"tokenOut","keyNameLocation":"968:8:17","keyType":{"id":5876,"name":"address","nodeType":"ElementaryTypeName","src":"960:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"952:42:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"price","valueNameLocation":"988:5:17","valueType":{"id":5877,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"functionSelector":"1dc3af35","id":5882,"mutability":"immutable","name":"onBehalfOf","nameLocation":"1041:10:17","nodeType":"VariableDeclaration","scope":6342,"src":"1016:35:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5881,"name":"address","nodeType":"ElementaryTypeName","src":"1016:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"2b3297f9","id":5884,"mutability":"immutable","name":"swapper","nameLocation":"1080:7:17","nodeType":"VariableDeclaration","scope":6342,"src":"1055:32:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5883,"name":"address","nodeType":"ElementaryTypeName","src":"1055:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"a6138ed9","id":5886,"mutability":"immutable","name":"pricer","nameLocation":"1116:6:17","nodeType":"VariableDeclaration","scope":6342,"src":"1091:31:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5885,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"eventSelector":"b71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10","id":5894,"name":"PriceUpdated","nameLocation":"1133:12:17","nodeType":"EventDefinition","parameters":{"id":5893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5888,"indexed":true,"mutability":"mutable","name":"tokenIn","nameLocation":"1162:7:17","nodeType":"VariableDeclaration","scope":5894,"src":"1146:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5887,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5890,"indexed":true,"mutability":"mutable","name":"tokenOut","nameLocation":"1187:8:17","nodeType":"VariableDeclaration","scope":5894,"src":"1171:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5889,"name":"address","nodeType":"ElementaryTypeName","src":"1171:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5892,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"1205:5:17","nodeType":"VariableDeclaration","scope":5894,"src":"1197:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5891,"name":"uint256","nodeType":"ElementaryTypeName","src":"1197:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1145:66:17"},"src":"1127:85:17"},{"errorSelector":"9d6c7424","id":5898,"name":"OnlySwapperCanSwap","nameLocation":"1221:18:17","nodeType":"ErrorDefinition","parameters":{"id":5897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5896,"mutability":"mutable","name":"caller","nameLocation":"1248:6:17","nodeType":"VariableDeclaration","scope":5898,"src":"1240:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5895,"name":"address","nodeType":"ElementaryTypeName","src":"1240:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1239:16:17"},"src":"1215:41:17"},{"errorSelector":"f30e2dd1","id":5902,"name":"OnlyPricerCanChangePrice","nameLocation":"1265:24:17","nodeType":"ErrorDefinition","parameters":{"id":5901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5900,"mutability":"mutable","name":"caller","nameLocation":"1298:6:17","nodeType":"VariableDeclaration","scope":5902,"src":"1290:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5899,"name":"address","nodeType":"ElementaryTypeName","src":"1290:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1289:16:17"},"src":"1259:47:17"},{"body":{"id":5955,"nodeType":"Block","src":"1408:237:17","statements":[{"expression":{"id":5917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5915,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5884,"src":"1414:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5916,"name":"swapper_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5906,"src":"1424:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1414:18:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5918,"nodeType":"ExpressionStatement","src":"1414:18:17"},{"expression":{"id":5921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5919,"name":"pricer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5886,"src":"1438:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5920,"name":"pricer_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5908,"src":"1447:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1438:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5922,"nodeType":"ExpressionStatement","src":"1438:16:17"},{"expression":{"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5923,"name":"onBehalfOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"1460:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5924,"name":"onBehalfOf_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5904,"src":"1473:11:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1460:24:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5926,"nodeType":"ExpressionStatement","src":"1460:24:17"},{"body":{"id":5953,"nodeType":"Block","src":"1537:104:17","statements":[{"assignments":[5939],"declarations":[{"constant":false,"id":5939,"mutability":"mutable","name":"p","nameLocation":"1558:1:17","nodeType":"VariableDeclaration","scope":5953,"src":"1545:14:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_memory_ptr","typeString":"struct P2PSwapRouter.Price"},"typeName":{"id":5938,"nodeType":"UserDefinedTypeName","pathNode":{"id":5937,"name":"Price","nameLocations":["1545:5:17"],"nodeType":"IdentifierPath","referencedDeclaration":5874,"src":"1545:5:17"},"referencedDeclaration":5874,"src":"1545:5:17","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_storage_ptr","typeString":"struct P2PSwapRouter.Price"}},"visibility":"internal"}],"id":5943,"initialValue":{"baseExpression":{"id":5940,"name":"initialPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"1562:13:17","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Price_$5874_memory_ptr_$dyn_memory_ptr","typeString":"struct P2PSwapRouter.Price memory[] memory"}},"id":5942,"indexExpression":{"id":5941,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"1576:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1562:16:17","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_memory_ptr","typeString":"struct P2PSwapRouter.Price memory"}},"nodeType":"VariableDeclarationStatement","src":"1545:33:17"},{"expression":{"arguments":[{"expression":{"id":5945,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"1603:1:17","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_memory_ptr","typeString":"struct P2PSwapRouter.Price memory"}},"id":5946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1605:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":5869,"src":"1603:9:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5947,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"1614:1:17","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_memory_ptr","typeString":"struct P2PSwapRouter.Price memory"}},"id":5948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1616:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":5871,"src":"1614:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":5949,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5939,"src":"1626:1:17","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_memory_ptr","typeString":"struct P2PSwapRouter.Price memory"}},"id":5950,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1628:5:17","memberName":"price","nodeType":"MemberAccess","referencedDeclaration":5873,"src":"1626:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5944,"name":"_setCurrentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6287,"src":"1586:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1586:48:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5952,"nodeType":"ExpressionStatement","src":"1586:48:17"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5930,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"1506:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5931,"name":"initialPrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"1510:13:17","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Price_$5874_memory_ptr_$dyn_memory_ptr","typeString":"struct P2PSwapRouter.Price memory[] memory"}},"id":5932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1524:6:17","memberName":"length","nodeType":"MemberAccess","src":"1510:20:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1506:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5954,"initializationExpression":{"assignments":[5928],"declarations":[{"constant":false,"id":5928,"mutability":"mutable","name":"i","nameLocation":"1503:1:17","nodeType":"VariableDeclaration","scope":5954,"src":"1495:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1495:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5929,"nodeType":"VariableDeclarationStatement","src":"1495:9:17"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1532:3:17","subExpression":{"id":5934,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5928,"src":"1534:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5936,"nodeType":"ExpressionStatement","src":"1532:3:17"},"nodeType":"ForStatement","src":"1490:151:17"}]},"id":5956,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5904,"mutability":"mutable","name":"onBehalfOf_","nameLocation":"1330:11:17","nodeType":"VariableDeclaration","scope":5956,"src":"1322:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5903,"name":"address","nodeType":"ElementaryTypeName","src":"1322:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5906,"mutability":"mutable","name":"swapper_","nameLocation":"1351:8:17","nodeType":"VariableDeclaration","scope":5956,"src":"1343:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5905,"name":"address","nodeType":"ElementaryTypeName","src":"1343:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5908,"mutability":"mutable","name":"pricer_","nameLocation":"1369:7:17","nodeType":"VariableDeclaration","scope":5956,"src":"1361:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5907,"name":"address","nodeType":"ElementaryTypeName","src":"1361:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5912,"mutability":"mutable","name":"initialPrices","nameLocation":"1393:13:17","nodeType":"VariableDeclaration","scope":5956,"src":"1378:28:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Price_$5874_memory_ptr_$dyn_memory_ptr","typeString":"struct P2PSwapRouter.Price[]"},"typeName":{"baseType":{"id":5910,"nodeType":"UserDefinedTypeName","pathNode":{"id":5909,"name":"Price","nameLocations":["1378:5:17"],"nodeType":"IdentifierPath","referencedDeclaration":5874,"src":"1378:5:17"},"referencedDeclaration":5874,"src":"1378:5:17","typeDescriptions":{"typeIdentifier":"t_struct$_Price_$5874_storage_ptr","typeString":"struct P2PSwapRouter.Price"}},"id":5911,"nodeType":"ArrayTypeName","src":"1378:7:17","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Price_$5874_storage_$dyn_storage_ptr","typeString":"struct P2PSwapRouter.Price[]"}},"visibility":"internal"}],"src":"1321:86:17"},"returnParameters":{"id":5914,"nodeType":"ParameterList","parameters":[],"src":"1408:0:17"},"scope":6342,"src":"1310:335:17","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5975,"nodeType":"Block","src":"1718:65:17","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1732:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":5964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1739:2:17","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":5966,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5958,"src":"1759:5:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5965,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"1744:14:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":5967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1744:21:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":5968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:8:17","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":844,"src":"1744:30:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":5969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1744:32:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1739:37:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":5971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1738:39:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1732:45:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1731:47:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5962,"id":5974,"nodeType":"Return","src":"1724:54:17"}]},"id":5976,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1658:12:17","nodeType":"FunctionDefinition","parameters":{"id":5959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5958,"mutability":"mutable","name":"token","nameLocation":"1679:5:17","nodeType":"VariableDeclaration","scope":5976,"src":"1671:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5957,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1670:15:17"},"returnParameters":{"id":5962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5976,"src":"1709:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5960,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:9:17"},"scope":6342,"src":"1649:134:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":5990,"nodeType":"Block","src":"1834:73:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5980,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1848:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1852:6:17","memberName":"sender","nodeType":"MemberAccess","src":"1848:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5982,"name":"swapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5884,"src":"1862:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1848:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":5985,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1890:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1894:6:17","memberName":"sender","nodeType":"MemberAccess","src":"1890:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5984,"name":"OnlySwapperCanSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"1871:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1871:30:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":5979,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1840:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":5988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1840:62:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5989,"nodeType":"ExpressionStatement","src":"1840:62:17"}]},"id":5991,"implemented":true,"kind":"function","modifiers":[],"name":"_checkCallerIsSwapper","nameLocation":"1796:21:17","nodeType":"FunctionDefinition","parameters":{"id":5977,"nodeType":"ParameterList","parameters":[],"src":"1817:2:17"},"returnParameters":{"id":5978,"nodeType":"ParameterList","parameters":[],"src":"1834:0:17"},"scope":6342,"src":"1787:120:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6005,"nodeType":"Block","src":"1957:78:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":5995,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1971:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1975:6:17","memberName":"sender","nodeType":"MemberAccess","src":"1971:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5997,"name":"pricer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5886,"src":"1985:6:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1971:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":6000,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2018:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2022:6:17","memberName":"sender","nodeType":"MemberAccess","src":"2018:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5999,"name":"OnlyPricerCanChangePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"1993:24:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1993:36:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":5994,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1963:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1963:67:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6004,"nodeType":"ExpressionStatement","src":"1963:67:17"}]},"id":6006,"implemented":true,"kind":"function","modifiers":[],"name":"_checkCallerIsPricer","nameLocation":"1920:20:17","nodeType":"FunctionDefinition","parameters":{"id":5992,"nodeType":"ParameterList","parameters":[],"src":"1940:2:17"},"returnParameters":{"id":5993,"nodeType":"ParameterList","parameters":[],"src":"1957:0:17"},"scope":6342,"src":"1911:124:17","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4848],"body":{"id":6113,"nodeType":"Block","src":"2150:753:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6014,"name":"_checkCallerIsSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"2156:21:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2156:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6016,"nodeType":"ExpressionStatement","src":"2156:23:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6018,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2193:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2200:9:17","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4830,"src":"2193:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2221:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2213:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6020,"name":"address","nodeType":"ElementaryTypeName","src":"2213:7:17","typeDescriptions":{}}},"id":6023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2193:30:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6025,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"2225:21:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6017,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2185:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2185:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6028,"nodeType":"ExpressionStatement","src":"2185:64:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6030,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2263:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2270:8:17","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":4832,"src":"2263:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":6032,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2282:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2288:9:17","memberName":"timestamp","nodeType":"MemberAccess","src":"2282:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2263:34:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6035,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"2299:17:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2299:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6029,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2255:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2255:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6038,"nodeType":"ExpressionStatement","src":"2255:64:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6040,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2333:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2340:8:17","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4834,"src":"2333:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2351:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2333:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6044,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"2354:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2354:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6039,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2325:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2325:50:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6047,"nodeType":"ExpressionStatement","src":"2325:50:17"},{"assignments":[6049],"declarations":[{"constant":false,"id":6049,"mutability":"mutable","name":"amountOutInWad","nameLocation":"2390:14:17","nodeType":"VariableDeclaration","scope":6113,"src":"2382:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6048,"name":"uint256","nodeType":"ElementaryTypeName","src":"2382:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6068,"initialValue":{"arguments":[{"id":6059,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5867,"src":"2470:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":6060,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"2481:7:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6063,"indexExpression":{"expression":{"id":6061,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2489:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2496:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4824,"src":"2489:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2481:23:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6066,"indexExpression":{"expression":{"id":6064,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2505:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2512:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4826,"src":"2505:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2481:40:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6050,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2408:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2415:8:17","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4834,"src":"2408:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":6053,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2439:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2446:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4824,"src":"2439:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6052,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"2426:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2426:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2408:46:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2407:48:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2456:6:17","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"2407:55:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:120:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2382:145:17"},{"expression":{"id":6076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6069,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6012,"src":"2533:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6070,"name":"amountOutInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6049,"src":"2545:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":6072,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2575:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2582:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4826,"src":"2575:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6071,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"2562:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2562:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:46:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2533:58:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6077,"nodeType":"ExpressionStatement","src":"2533:58:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6079,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6012,"src":"2605:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":6080,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2618:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2625:16:17","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":4836,"src":"2618:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2605:36:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":6084,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6012,"src":"2672:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6085,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2683:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2690:16:17","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":4836,"src":"2683:23:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6083,"name":"OutputAmountLessThanSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"2643:28:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":6087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2643:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6078,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2597:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2597:111:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6089,"nodeType":"ExpressionStatement","src":"2597:111:17"},{"expression":{"arguments":[{"expression":{"id":6095,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2763:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2767:6:17","memberName":"sender","nodeType":"MemberAccess","src":"2763:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6097,"name":"onBehalfOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"2775:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6098,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2787:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2794:8:17","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4834,"src":"2787:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6091,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2730:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2737:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4824,"src":"2730:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6090,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"2715:14:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2715:30:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2746:16:17","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":925,"src":"2715:47:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":6100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2715:88:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6101,"nodeType":"ExpressionStatement","src":"2715:88:17"},{"expression":{"arguments":[{"id":6107,"name":"onBehalfOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"2858:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6108,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2870:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2877:9:17","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4830,"src":"2870:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6110,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6012,"src":"2888:9:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6103,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6009,"src":"2824:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2831:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4826,"src":"2824:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6102,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"2809:14:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2809:31:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:16:17","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":925,"src":"2809:48:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2809:89:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6112,"nodeType":"ExpressionStatement","src":"2809:89:17"}]},"functionSelector":"414bf389","id":6114,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"2048:16:17","nodeType":"FunctionDefinition","parameters":{"id":6010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6009,"mutability":"mutable","name":"params","nameLocation":"2097:6:17","nodeType":"VariableDeclaration","scope":6114,"src":"2065:38:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":6008,"nodeType":"UserDefinedTypeName","pathNode":{"id":6007,"name":"ExactInputSingleParams","nameLocations":["2065:22:17"],"nodeType":"IdentifierPath","referencedDeclaration":4839,"src":"2065:22:17"},"referencedDeclaration":4839,"src":"2065:22:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"2064:40:17"},"returnParameters":{"id":6013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6012,"mutability":"mutable","name":"amountOut","nameLocation":"2139:9:17","nodeType":"VariableDeclaration","scope":6114,"src":"2131:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6011,"name":"uint256","nodeType":"ElementaryTypeName","src":"2131:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2130:19:17"},"scope":6342,"src":"2039:864:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4894],"body":{"id":6221,"nodeType":"Block","src":"3019:742:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6122,"name":"_checkCallerIsSwapper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"3025:21:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3025:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6124,"nodeType":"ExpressionStatement","src":"3025:23:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6126,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3062:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3069:9:17","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4876,"src":"3062:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3090:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3082:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6128,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:17","typeDescriptions":{}}},"id":6131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3082:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3062:30:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6133,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"3094:21:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3094:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6125,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3054:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3054:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6136,"nodeType":"ExpressionStatement","src":"3054:64:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6138,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3132:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3139:8:17","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":4878,"src":"3132:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":6140,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3151:5:17","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3157:9:17","memberName":"timestamp","nodeType":"MemberAccess","src":"3151:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3132:34:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6143,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"3168:17:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3168:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6137,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3124:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3124:64:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6146,"nodeType":"ExpressionStatement","src":"3124:64:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6148,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3202:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3209:9:17","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"3202:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3221:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3202:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6152,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"3224:18:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3224:20:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6147,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3194:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3194:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6155,"nodeType":"ExpressionStatement","src":"3194:51:17"},{"assignments":[6157],"declarations":[{"constant":false,"id":6157,"mutability":"mutable","name":"amountInWad","nameLocation":"3260:11:17","nodeType":"VariableDeclaration","scope":6221,"src":"3252:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3252:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6176,"initialValue":{"arguments":[{"baseExpression":{"baseExpression":{"id":6167,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"3339:7:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6170,"indexExpression":{"expression":{"id":6168,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3347:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3354:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4870,"src":"3347:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3339:23:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6173,"indexExpression":{"expression":{"id":6171,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3363:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3370:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"3363:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3339:40:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6174,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5867,"src":"3387:3:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6158,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3275:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3282:9:17","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"3275:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":6161,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3307:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3314:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"3307:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6160,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"3294:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3294:29:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3275:48:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3274:50:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3325:6:17","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"3274:57:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3274:122:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3252:144:17"},{"expression":{"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6177,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"3402:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6178,"name":"amountInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6157,"src":"3413:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":6180,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3440:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3447:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4870,"src":"3440:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6179,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5976,"src":"3427:12:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3427:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3413:42:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3402:53:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6185,"nodeType":"ExpressionStatement","src":"3402:53:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6187,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"3469:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":6188,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3481:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3488:15:17","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":4882,"src":"3481:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3469:34:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":6192,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"3532:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6193,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3542:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3549:15:17","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":4882,"src":"3542:22:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6191,"name":"InputAmountExceedsSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7439,"src":"3505:26:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3505:60:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6186,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3461:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3461:105:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6197,"nodeType":"ExpressionStatement","src":"3461:105:17"},{"expression":{"arguments":[{"expression":{"id":6203,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3621:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3625:6:17","memberName":"sender","nodeType":"MemberAccess","src":"3621:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6205,"name":"onBehalfOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"3633:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6206,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6120,"src":"3645:8:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6199,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3588:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3595:7:17","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4870,"src":"3588:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6198,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3573:14:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3573:30:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3604:16:17","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":925,"src":"3573:47:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":6207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3573:81:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6208,"nodeType":"ExpressionStatement","src":"3573:81:17"},{"expression":{"arguments":[{"id":6214,"name":"onBehalfOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"3709:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6215,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3721:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3728:9:17","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4876,"src":"3721:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6217,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3739:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3746:9:17","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"3739:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":6210,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"3675:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":6211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3682:8:17","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"3675:15:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6209,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3660:14:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3660:31:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3692:16:17","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":925,"src":"3660:48:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3660:96:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6220,"nodeType":"ExpressionStatement","src":"3660:96:17"}]},"functionSelector":"db3e2198","id":6222,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2916:17:17","nodeType":"FunctionDefinition","parameters":{"id":6118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6117,"mutability":"mutable","name":"params","nameLocation":"2967:6:17","nodeType":"VariableDeclaration","scope":6222,"src":"2934:39:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":6116,"nodeType":"UserDefinedTypeName","pathNode":{"id":6115,"name":"ExactOutputSingleParams","nameLocations":["2934:23:17"],"nodeType":"IdentifierPath","referencedDeclaration":4885,"src":"2934:23:17"},"referencedDeclaration":4885,"src":"2934:23:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2933:41:17"},"returnParameters":{"id":6121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6120,"mutability":"mutable","name":"amountIn","nameLocation":"3009:8:17","nodeType":"VariableDeclaration","scope":6222,"src":"3001:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6119,"name":"uint256","nodeType":"ElementaryTypeName","src":"3001:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3000:18:17"},"scope":6342,"src":"2907:854:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":6240,"nodeType":"Block","src":"3850:82:17","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":6231,"name":"_checkCallerIsPricer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6006,"src":"3856:20:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":6232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3856:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6233,"nodeType":"ExpressionStatement","src":"3856:22:17"},{"expression":{"arguments":[{"id":6235,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6224,"src":"3901:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6236,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6226,"src":"3910:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6237,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6228,"src":"3920:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6234,"name":"_setCurrentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6287,"src":"3884:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3884:43:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6239,"nodeType":"ExpressionStatement","src":"3884:43:17"}]},"functionSelector":"4562e015","id":6241,"implemented":true,"kind":"function","modifiers":[],"name":"setCurrentPrice","nameLocation":"3774:15:17","nodeType":"FunctionDefinition","parameters":{"id":6229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6224,"mutability":"mutable","name":"tokenIn","nameLocation":"3798:7:17","nodeType":"VariableDeclaration","scope":6241,"src":"3790:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6223,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6226,"mutability":"mutable","name":"tokenOut","nameLocation":"3815:8:17","nodeType":"VariableDeclaration","scope":6241,"src":"3807:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6225,"name":"address","nodeType":"ElementaryTypeName","src":"3807:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6228,"mutability":"mutable","name":"price_","nameLocation":"3833:6:17","nodeType":"VariableDeclaration","scope":6241,"src":"3825:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6227,"name":"uint256","nodeType":"ElementaryTypeName","src":"3825:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3789:51:17"},"returnParameters":{"id":6230,"nodeType":"ParameterList","parameters":[],"src":"3850:0:17"},"scope":6342,"src":"3765:167:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6286,"nodeType":"Block","src":"4022:211:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6251,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6243,"src":"4036:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4055:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4047:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6252,"name":"address","nodeType":"ElementaryTypeName","src":"4047:7:17","typeDescriptions":{}}},"id":6255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4047:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4036:21:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6257,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"4059:17:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4059:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4028:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4028:51:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6260,"nodeType":"ExpressionStatement","src":"4028:51:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6262,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"4093:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4113:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4105:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6263,"name":"address","nodeType":"ElementaryTypeName","src":"4105:7:17","typeDescriptions":{}}},"id":6266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4105:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4093:22:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6268,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"4117:17:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4117:19:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":6261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4085:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":6270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4085:52:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6271,"nodeType":"ExpressionStatement","src":"4085:52:17"},{"expression":{"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6272,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"4143:7:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6275,"indexExpression":{"id":6273,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6243,"src":"4151:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4143:16:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6276,"indexExpression":{"id":6274,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"4160:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4143:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6277,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"4172:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4143:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6279,"nodeType":"ExpressionStatement","src":"4143:35:17"},{"eventCall":{"arguments":[{"id":6281,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6243,"src":"4202:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6282,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"4211:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6283,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6247,"src":"4221:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6280,"name":"PriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5894,"src":"4189:12:17","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4189:39:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6285,"nodeType":"EmitStatement","src":"4184:44:17"}]},"id":6287,"implemented":true,"kind":"function","modifiers":[],"name":"_setCurrentPrice","nameLocation":"3945:16:17","nodeType":"FunctionDefinition","parameters":{"id":6248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6243,"mutability":"mutable","name":"tokenIn","nameLocation":"3970:7:17","nodeType":"VariableDeclaration","scope":6287,"src":"3962:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6242,"name":"address","nodeType":"ElementaryTypeName","src":"3962:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6245,"mutability":"mutable","name":"tokenOut","nameLocation":"3987:8:17","nodeType":"VariableDeclaration","scope":6287,"src":"3979:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6244,"name":"address","nodeType":"ElementaryTypeName","src":"3979:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6247,"mutability":"mutable","name":"price_","nameLocation":"4005:6:17","nodeType":"VariableDeclaration","scope":6287,"src":"3997:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6246,"name":"uint256","nodeType":"ElementaryTypeName","src":"3997:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3961:51:17"},"returnParameters":{"id":6249,"nodeType":"ParameterList","parameters":[],"src":"4022:0:17"},"scope":6342,"src":"3936:297:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6302,"nodeType":"Block","src":"4329:44:17","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":6296,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"4342:7:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":6298,"indexExpression":{"id":6297,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6289,"src":"4350:7:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4342:16:17","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":6300,"indexExpression":{"id":6299,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6291,"src":"4359:8:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4342:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6295,"id":6301,"nodeType":"Return","src":"4335:33:17"}]},"functionSelector":"db16a555","id":6303,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentPrice","nameLocation":"4246:15:17","nodeType":"FunctionDefinition","parameters":{"id":6292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6289,"mutability":"mutable","name":"tokenIn","nameLocation":"4270:7:17","nodeType":"VariableDeclaration","scope":6303,"src":"4262:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6288,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6291,"mutability":"mutable","name":"tokenOut","nameLocation":"4287:8:17","nodeType":"VariableDeclaration","scope":6303,"src":"4279:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6290,"name":"address","nodeType":"ElementaryTypeName","src":"4279:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:35:17"},"returnParameters":{"id":6295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6303,"src":"4320:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6293,"name":"uint256","nodeType":"ElementaryTypeName","src":"4320:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4319:9:17"},"scope":6342,"src":"4237:136:17","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4914],"body":{"id":6314,"nodeType":"Block","src":"4461:34:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6311,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4474:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4474:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6313,"nodeType":"RevertStatement","src":"4467:23:17"}]},"functionSelector":"f28c0498","id":6315,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"4386:11:17","nodeType":"FunctionDefinition","parameters":{"id":6307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6315,"src":"4398:26:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$4905_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":6305,"nodeType":"UserDefinedTypeName","pathNode":{"id":6304,"name":"ExactOutputParams","nameLocations":["4398:17:17"],"nodeType":"IdentifierPath","referencedDeclaration":4905,"src":"4398:17:17"},"referencedDeclaration":4905,"src":"4398:17:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$4905_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"4397:28:17"},"returnParameters":{"id":6310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6315,"src":"4452:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6308,"name":"uint256","nodeType":"ElementaryTypeName","src":"4452:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4451:9:17"},"scope":6342,"src":"4377:118:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4868],"body":{"id":6326,"nodeType":"Block","src":"4581:34:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6323,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4594:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4594:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6325,"nodeType":"RevertStatement","src":"4587:23:17"}]},"functionSelector":"c04b8d59","id":6327,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"4508:10:17","nodeType":"FunctionDefinition","parameters":{"id":6319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6327,"src":"4519:25:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$4859_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":6317,"nodeType":"UserDefinedTypeName","pathNode":{"id":6316,"name":"ExactInputParams","nameLocations":["4519:16:17"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"4519:16:17"},"referencedDeclaration":4859,"src":"4519:16:17","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$4859_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"4518:27:17"},"returnParameters":{"id":6322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6327,"src":"4572:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6320,"name":"uint256","nodeType":"ElementaryTypeName","src":"4572:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4571:9:17"},"scope":6342,"src":"4499:116:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4814],"body":{"id":6340,"nodeType":"Block","src":"4754:34:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6337,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4767:14:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4767:16:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6339,"nodeType":"RevertStatement","src":"4760:23:17"}]},"documentation":{"id":6328,"nodeType":"StructuredDocumentation","src":"4619:55:17","text":" @notice This function is not implemented"},"functionSelector":"fa461e33","id":6341,"implemented":true,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"4686:21:17","nodeType":"FunctionDefinition","parameters":{"id":6335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6341,"src":"4708:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6329,"name":"int256","nodeType":"ElementaryTypeName","src":"4708:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6341,"src":"4716:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6331,"name":"int256","nodeType":"ElementaryTypeName","src":"4716:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6334,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6341,"src":"4724:14:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6333,"name":"bytes","nodeType":"ElementaryTypeName","src":"4724:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4707:32:17"},"returnParameters":{"id":6336,"nodeType":"ParameterList","parameters":[],"src":"4754:0:17"},"scope":6342,"src":"4677:111:17","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":6343,"src":"657:4133:17","usedErrors":[857,5898,5902,7433,7439,7441,7443,7445,7447,7449],"usedEvents":[5894]}],"src":"39:4752:17"},"id":17},"project/contracts/SwapLibrary.sol":{"ast":{"absolutePath":"project/contracts/SwapLibrary.sol","exportedSymbols":{"CurveRoutes":[5839],"ICurveRouter":[7420],"IERC20Metadata":[845],"ISwapRouter":[4915],"Math":[3036],"SwapLibrary":[7143]},"id":7144,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":6344,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:18"},{"absolutePath":"npm/@uniswap/v3-periphery@1.4.4/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":6346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7144,"sourceUnit":4916,"src":"64:87:18","symbolAliases":[{"foreign":{"id":6345,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"72:11:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/dependencies/ICurveRouter.sol","file":"./dependencies/ICurveRouter.sol","id":6348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7144,"sourceUnit":7421,"src":"152:61:18","symbolAliases":[{"foreign":{"id":6347,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"160:12:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":6350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7144,"sourceUnit":846,"src":"214:97:18","symbolAliases":[{"foreign":{"id":6349,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"222:14:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":6352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7144,"sourceUnit":3037,"src":"312:65:18","symbolAliases":[{"foreign":{"id":6351,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"320:4:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/CurveRoutes.sol","file":"./CurveRoutes.sol","id":6354,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7144,"sourceUnit":5840,"src":"378:46:18","symbolAliases":[{"foreign":{"id":6353,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"386:11:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SwapLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":6355,"nodeType":"StructuredDocumentation","src":"426:95:18","text":" @title Swap Library\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":7143,"linearizedBaseContracts":[7143],"name":"SwapLibrary","nameLocation":"530:11:18","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6358,"libraryName":{"id":6356,"name":"Math","nameLocations":["552:4:18"],"nodeType":"IdentifierPath","referencedDeclaration":3036,"src":"552:4:18"},"nodeType":"UsingForDirective","src":"546:23:18","typeName":{"id":6357,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":6361,"mutability":"constant","name":"WAD","nameLocation":"599:3:18","nodeType":"VariableDeclaration","scope":7143,"src":"573:36:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6359,"name":"uint256","nodeType":"ElementaryTypeName","src":"573:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":6360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:4:18","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":6364,"mutability":"constant","name":"MAX_EXCHANGE","nameLocation":"718:12:18","nodeType":"VariableDeclaration","scope":7143,"src":"692:42:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6362,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":6363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"canonicalName":"SwapLibrary.SwapProtocol","documentation":{"id":6365,"nodeType":"StructuredDocumentation","src":"739:53:18","text":" @dev Enum with the different protocols"},"id":6369,"members":[{"id":6366,"name":"undefined","nameLocation":"819:9:18","nodeType":"EnumValue","src":"819:9:18"},{"id":6367,"name":"uniswap","nameLocation":"834:7:18","nodeType":"EnumValue","src":"834:7:18"},{"id":6368,"name":"curveRouter","nameLocation":"847:11:18","nodeType":"EnumValue","src":"847:11:18"}],"name":"SwapProtocol","nameLocation":"800:12:18","nodeType":"EnumDefinition","src":"795:67:18"},{"canonicalName":"SwapLibrary.SwapConfig","id":6377,"members":[{"constant":false,"id":6372,"mutability":"mutable","name":"protocol","nameLocation":"903:8:18","nodeType":"VariableDeclaration","scope":6377,"src":"890:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"typeName":{"id":6371,"nodeType":"UserDefinedTypeName","pathNode":{"id":6370,"name":"SwapProtocol","nameLocations":["890:12:18"],"nodeType":"IdentifierPath","referencedDeclaration":6369,"src":"890:12:18"},"referencedDeclaration":6369,"src":"890:12:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"visibility":"internal"},{"constant":false,"id":6374,"mutability":"mutable","name":"maxSlippage","nameLocation":"925:11:18","nodeType":"VariableDeclaration","scope":6377,"src":"917:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6373,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6376,"mutability":"mutable","name":"customParams","nameLocation":"948:12:18","nodeType":"VariableDeclaration","scope":6377,"src":"942:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":6375,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapConfig","nameLocation":"873:10:18","nodeType":"StructDefinition","scope":7143,"src":"866:99:18","visibility":"public"},{"canonicalName":"SwapLibrary.UniswapCustomParams","id":6383,"members":[{"constant":false,"id":6379,"mutability":"mutable","name":"feeTier","nameLocation":"1009:7:18","nodeType":"VariableDeclaration","scope":6383,"src":"1002:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":6378,"name":"uint24","nodeType":"ElementaryTypeName","src":"1002:6:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":6382,"mutability":"mutable","name":"router","nameLocation":"1034:6:18","nodeType":"VariableDeclaration","scope":6383,"src":"1022:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"},"typeName":{"id":6381,"nodeType":"UserDefinedTypeName","pathNode":{"id":6380,"name":"ISwapRouter","nameLocations":["1022:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":4915,"src":"1022:11:18"},"referencedDeclaration":4915,"src":"1022:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}},"visibility":"internal"}],"name":"UniswapCustomParams","nameLocation":"976:19:18","nodeType":"StructDefinition","scope":7143,"src":"969:76:18","visibility":"public"},{"errorSelector":"07f1c7d4","id":6385,"name":"InvalidProtocol","nameLocation":"1055:15:18","nodeType":"ErrorDefinition","parameters":{"id":6384,"nodeType":"ParameterList","parameters":[],"src":"1070:2:18"},"src":"1049:24:18"},{"errorSelector":"ece96d1c","id":6387,"name":"MaxSlippageCannotBeZero","nameLocation":"1082:23:18","nodeType":"ErrorDefinition","parameters":{"id":6386,"nodeType":"ParameterList","parameters":[],"src":"1105:2:18"},"src":"1076:32:18"},{"errorSelector":"e35d3f93","id":6389,"name":"UniswapRouterCannotBeZero","nameLocation":"1117:25:18","nodeType":"ErrorDefinition","parameters":{"id":6388,"nodeType":"ParameterList","parameters":[],"src":"1142:2:18"},"src":"1111:34:18"},{"errorSelector":"c087296d","id":6391,"name":"UniswapFeeTierCannotBeZero","nameLocation":"1154:26:18","nodeType":"ErrorDefinition","parameters":{"id":6390,"nodeType":"ParameterList","parameters":[],"src":"1180:2:18"},"src":"1148:35:18"},{"errorSelector":"511d53d0","id":6393,"name":"AllowanceShouldGoBackToZero","nameLocation":"1192:27:18","nodeType":"ErrorDefinition","parameters":{"id":6392,"nodeType":"ParameterList","parameters":[],"src":"1219:2:18"},"src":"1186:36:18"},{"errorSelector":"84135462","id":6399,"name":"ReceivedLessThanAcceptable","nameLocation":"1231:26:18","nodeType":"ErrorDefinition","parameters":{"id":6398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6395,"mutability":"mutable","name":"received","nameLocation":"1266:8:18","nodeType":"VariableDeclaration","scope":6399,"src":"1258:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6397,"mutability":"mutable","name":"amountOutMin","nameLocation":"1284:12:18","nodeType":"VariableDeclaration","scope":6399,"src":"1276:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1257:40:18"},"src":"1225:73:18"},{"errorSelector":"4641f9e1","id":6405,"name":"SpentMoreThanAcceptable","nameLocation":"1307:23:18","nodeType":"ErrorDefinition","parameters":{"id":6404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6401,"mutability":"mutable","name":"spent","nameLocation":"1339:5:18","nodeType":"VariableDeclaration","scope":6405,"src":"1331:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1331:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6403,"mutability":"mutable","name":"amountInMax","nameLocation":"1354:11:18","nodeType":"VariableDeclaration","scope":6405,"src":"1346:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6402,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1330:36:18"},"src":"1301:66:18"},{"body":{"id":6476,"nodeType":"Block","src":"1435:529:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6411,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"1445:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1456:11:18","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":6374,"src":"1445:22:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1471:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1445:27:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6418,"nodeType":"IfStatement","src":"1441:65:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6415,"name":"MaxSlippageCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6387,"src":"1481:23:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1481:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6417,"nodeType":"RevertStatement","src":"1474:32:18"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"id":6423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6419,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"1516:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1527:8:18","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"1516:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6421,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"1539:12:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$6369_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":6422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1552:7:18","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":6367,"src":"1539:20:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"1516:43:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"id":6462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6458,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"1820:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1831:8:18","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"1820:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6460,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"1843:12:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$6369_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":6461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1856:11:18","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":6368,"src":"1843:24:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"1820:47:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6471,"name":"InvalidProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6385,"src":"1942:15:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1942:17:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6473,"nodeType":"RevertStatement","src":"1935:24:18"},"id":6474,"nodeType":"IfStatement","src":"1816:143:18","trueBody":{"id":6470,"nodeType":"Block","src":"1869:60:18","statements":[{"expression":{"arguments":[{"expression":{"id":6466,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"1898:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1909:12:18","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":6376,"src":"1898:23:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":6463,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"1877:11:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":6465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1889:8:18","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":5477,"src":"1877:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":6468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1877:45:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6469,"nodeType":"ExpressionStatement","src":"1877:45:18"}]}},"id":6475,"nodeType":"IfStatement","src":"1512:447:18","trueBody":{"id":6457,"nodeType":"Block","src":"1561:249:18","statements":[{"assignments":[6426],"declarations":[{"constant":false,"id":6426,"mutability":"mutable","name":"cp","nameLocation":"1596:2:18","nodeType":"VariableDeclaration","scope":6457,"src":"1569:29:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":6425,"nodeType":"UserDefinedTypeName","pathNode":{"id":6424,"name":"UniswapCustomParams","nameLocations":["1569:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":6383,"src":"1569:19:18"},"referencedDeclaration":6383,"src":"1569:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":6434,"initialValue":{"arguments":[{"expression":{"id":6429,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"1612:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1623:12:18","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":6376,"src":"1612:23:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":6431,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"1638:19:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":6432,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1637:21:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":6427,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1601:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1605:6:18","memberName":"decode","nodeType":"MemberAccess","src":"1601:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1601:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"1569:90:18"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":6437,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6426,"src":"1679:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1682:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"1679:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}],"id":6436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1671:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6435,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:18","typeDescriptions":{}}},"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1671:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1701:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1693:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6440,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:18","typeDescriptions":{}}},"id":6443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1693:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:32:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6448,"nodeType":"IfStatement","src":"1667:72:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6445,"name":"UniswapRouterCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6389,"src":"1712:25:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:27:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6447,"nodeType":"RevertStatement","src":"1705:34:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6449,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6426,"src":"1751:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6450,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1754:7:18","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":6379,"src":"1751:10:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1765:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1751:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6456,"nodeType":"IfStatement","src":"1747:56:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6453,"name":"UniswapFeeTierCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6391,"src":"1775:26:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1775:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6455,"nodeType":"RevertStatement","src":"1768:35:18"}}]}}]},"functionSelector":"b2fca32c","id":6477,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1380:8:18","nodeType":"FunctionDefinition","parameters":{"id":6409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6408,"mutability":"mutable","name":"swapConfig","nameLocation":"1409:10:18","nodeType":"VariableDeclaration","scope":6477,"src":"1389:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":6407,"nodeType":"UserDefinedTypeName","pathNode":{"id":6406,"name":"SwapConfig","nameLocations":["1389:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"1389:10:18"},"referencedDeclaration":6377,"src":"1389:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"1388:32:18"},"returnParameters":{"id":6410,"nodeType":"ParameterList","parameters":[],"src":"1435:0:18"},"scope":7143,"src":"1371:593:18","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":6496,"nodeType":"Block","src":"2037:65:18","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":6484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2051:2:18","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":6485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2058:2:18","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6487,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6479,"src":"2078:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6486,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"2063:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2085:8:18","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":844,"src":"2063:30:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":6490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:32:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2058:37:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2057:39:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2051:45:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2050:47:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6483,"id":6495,"nodeType":"Return","src":"2043:54:18"}]},"id":6497,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1977:12:18","nodeType":"FunctionDefinition","parameters":{"id":6480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6479,"mutability":"mutable","name":"token","nameLocation":"1998:5:18","nodeType":"VariableDeclaration","scope":6497,"src":"1990:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6478,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1989:15:18"},"returnParameters":{"id":6483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6497,"src":"2028:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6481,"name":"uint256","nodeType":"ElementaryTypeName","src":"2028:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2027:9:18"},"scope":7143,"src":"1968:134:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6546,"nodeType":"Block","src":"3240:302:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"id":6518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6514,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"3250:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:8:18","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"3250:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6516,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"3273:12:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$6369_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":6517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3286:7:18","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":6367,"src":"3273:20:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"3250:43:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"id":6532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6528,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"3391:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3402:8:18","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"3391:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6530,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"3414:12:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$6369_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":6531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3427:11:18","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":6368,"src":"3414:24:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"3391:47:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6542,"nodeType":"IfStatement","src":"3387:137:18","trueBody":{"id":6541,"nodeType":"Block","src":"3440:84:18","statements":[{"expression":{"arguments":[{"id":6534,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"3472:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":6535,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6503,"src":"3484:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6536,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"3493:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6537,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"3503:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6538,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"3511:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6533,"name":"_exactInputCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6988,"src":"3455:16:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$6377_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":6539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3455:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6513,"id":6540,"nodeType":"Return","src":"3448:69:18"}]}},"id":6543,"nodeType":"IfStatement","src":"3246:278:18","trueBody":{"id":6527,"nodeType":"Block","src":"3295:86:18","statements":[{"expression":{"arguments":[{"id":6520,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6501,"src":"3329:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":6521,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6503,"src":"3341:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6522,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6505,"src":"3350:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6523,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6507,"src":"3360:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6524,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"3368:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6519,"name":"_exactInputUniswap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6779,"src":"3310:18:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$6377_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3310:64:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6513,"id":6526,"nodeType":"Return","src":"3303:71:18"}]}},{"expression":{"hexValue":"30","id":6544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3536:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6513,"id":6545,"nodeType":"Return","src":"3529:8:18"}]},"documentation":{"id":6498,"nodeType":"StructuredDocumentation","src":"2106:962:18","text":" @dev Executes a swap of `amount` from the input token (`tokenIn`) to the output token (`tokenOut`),\n @param swapConfig Swap configuration including the swap protocol to use.\n @param tokenIn The address of the token to be swapped.\n @param tokenOut The address of the token to be received as a result of the swap.\n @param amount The exact amount of input token to be swapped.\n @param price Approximate amount of units of tokenIn required to acquire a unit of tokenOut.\n              It will be validated against the swap rate considering the maxSlippage.\n @notice Should have at least `amount` of tokenIn in the contract to execute the transaction.\n Requirements:\n - tokenIn and tokenOut decimals <= 18\n - SwapConfig must be valid and should be validated using the `validate()` method.\n @return That exact `amount` went out and an tokenOut amount equal to amount/price +- slippage% came in."},"functionSelector":"77566915","id":6547,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"3080:10:18","nodeType":"FunctionDefinition","parameters":{"id":6510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6501,"mutability":"mutable","name":"swapConfig","nameLocation":"3116:10:18","nodeType":"VariableDeclaration","scope":6547,"src":"3096:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":6500,"nodeType":"UserDefinedTypeName","pathNode":{"id":6499,"name":"SwapConfig","nameLocations":["3096:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"3096:10:18"},"referencedDeclaration":6377,"src":"3096:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":6503,"mutability":"mutable","name":"tokenIn","nameLocation":"3140:7:18","nodeType":"VariableDeclaration","scope":6547,"src":"3132:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6502,"name":"address","nodeType":"ElementaryTypeName","src":"3132:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6505,"mutability":"mutable","name":"tokenOut","nameLocation":"3161:8:18","nodeType":"VariableDeclaration","scope":6547,"src":"3153:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6504,"name":"address","nodeType":"ElementaryTypeName","src":"3153:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6507,"mutability":"mutable","name":"amount","nameLocation":"3183:6:18","nodeType":"VariableDeclaration","scope":6547,"src":"3175:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6506,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6509,"mutability":"mutable","name":"price","nameLocation":"3203:5:18","nodeType":"VariableDeclaration","scope":6547,"src":"3195:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3195:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3090:122:18"},"returnParameters":{"id":6513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6547,"src":"3231:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6511,"name":"uint256","nodeType":"ElementaryTypeName","src":"3231:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3230:9:18"},"scope":7143,"src":"3071:471:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6596,"nodeType":"Block","src":"4764:304:18","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6564,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"4774:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4785:8:18","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"4774:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6566,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"4797:12:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$6369_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":6567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4810:7:18","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":6367,"src":"4797:20:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"4774:43:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"},"id":6582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6578,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"4916:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4927:8:18","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":6372,"src":"4916:19:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":6580,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"4939:12:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$6369_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":6581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4952:11:18","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":6368,"src":"4939:24:18","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$6369","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"4916:47:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6592,"nodeType":"IfStatement","src":"4912:138:18","trueBody":{"id":6591,"nodeType":"Block","src":"4965:85:18","statements":[{"expression":{"arguments":[{"id":6584,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"4998:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":6585,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"5010:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6586,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6555,"src":"5019:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6587,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"5029:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6588,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"5037:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6583,"name":"_exactOutputCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7142,"src":"4980:17:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$6377_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":6589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:63:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6563,"id":6590,"nodeType":"Return","src":"4973:70:18"}]}},"id":6593,"nodeType":"IfStatement","src":"4770:280:18","trueBody":{"id":6577,"nodeType":"Block","src":"4819:87:18","statements":[{"expression":{"arguments":[{"id":6570,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6551,"src":"4854:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":6571,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6553,"src":"4866:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6572,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6555,"src":"4875:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6573,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6557,"src":"4885:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6574,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6559,"src":"4893:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6569,"name":"_exactOutputUniswap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6887,"src":"4834:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$6377_calldata_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct SwapLibrary.SwapConfig calldata,address,address,uint256,uint256) returns (uint256)"}},"id":6575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:65:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6563,"id":6576,"nodeType":"Return","src":"4827:72:18"}]}},{"expression":{"hexValue":"30","id":6594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5062:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6563,"id":6595,"nodeType":"Return","src":"5055:8:18"}]},"documentation":{"id":6548,"nodeType":"StructuredDocumentation","src":"3546:1045:18","text":" @dev Executes a swap, where the desired output amount of `tokenOut` is specified,\n @param swapConfig Swap configuration including the protocol to use for the swap.\n @param tokenIn The address of the token to be used as input for the swap.\n @param tokenOut The address of the token to be received as a result of the swap.\n @param amount The desired amount of output tokens (`tokenOut`) to be obtained from the swap.\n @param price Approximate amount of units of tokenIn required to acquire a unit of tokenOut.\n              It will be validated against the swap rate considering the maxSlippage.\n @notice Should have sufficient `tokenIn` to fulfill the desired output amount.\n Requirements:\n - tokenIn and tokenOut decimals <= 18\n - SwapConfig must be valid and should be validated using the `validate()` method.\n @return The actual amount of input tokens (`tokenIn`) spent to obtain the desired output amount (`amount`)\n   should be within the expected slippage range."},"functionSelector":"581e517d","id":6597,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"4603:11:18","nodeType":"FunctionDefinition","parameters":{"id":6560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6551,"mutability":"mutable","name":"swapConfig","nameLocation":"4640:10:18","nodeType":"VariableDeclaration","scope":6597,"src":"4620:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":6550,"nodeType":"UserDefinedTypeName","pathNode":{"id":6549,"name":"SwapConfig","nameLocations":["4620:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"4620:10:18"},"referencedDeclaration":6377,"src":"4620:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":6553,"mutability":"mutable","name":"tokenIn","nameLocation":"4664:7:18","nodeType":"VariableDeclaration","scope":6597,"src":"4656:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6552,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6555,"mutability":"mutable","name":"tokenOut","nameLocation":"4685:8:18","nodeType":"VariableDeclaration","scope":6597,"src":"4677:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6554,"name":"address","nodeType":"ElementaryTypeName","src":"4677:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6557,"mutability":"mutable","name":"amount","nameLocation":"4707:6:18","nodeType":"VariableDeclaration","scope":6597,"src":"4699:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6556,"name":"uint256","nodeType":"ElementaryTypeName","src":"4699:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6559,"mutability":"mutable","name":"price","nameLocation":"4727:5:18","nodeType":"VariableDeclaration","scope":6597,"src":"4719:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6558,"name":"uint256","nodeType":"ElementaryTypeName","src":"4719:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4614:122:18"},"returnParameters":{"id":6563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6597,"src":"4755:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6561,"name":"uint256","nodeType":"ElementaryTypeName","src":"4755:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4754:9:18"},"scope":7143,"src":"4594:474:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":6629,"nodeType":"Block","src":"5239:108:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6619,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6361,"src":"5292:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6620,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6601,"src":"5298:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5292:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6622,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6607,"src":"5311:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6612,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6599,"src":"5253:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6614,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6603,"src":"5275:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6613,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5262:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5253:30:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5252:32:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5285:6:18","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"5252:39:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5252:65:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":6625,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6605,"src":"5333:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6624,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5320:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:22:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5252:90:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6611,"id":6628,"nodeType":"Return","src":"5245:97:18"}]},"id":6630,"implemented":true,"kind":"function","modifiers":[],"name":"_calcMinAmount","nameLocation":"5081:14:18","nodeType":"FunctionDefinition","parameters":{"id":6608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6599,"mutability":"mutable","name":"amount","nameLocation":"5109:6:18","nodeType":"VariableDeclaration","scope":6630,"src":"5101:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6598,"name":"uint256","nodeType":"ElementaryTypeName","src":"5101:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6601,"mutability":"mutable","name":"maxSlippage","nameLocation":"5129:11:18","nodeType":"VariableDeclaration","scope":6630,"src":"5121:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6600,"name":"uint256","nodeType":"ElementaryTypeName","src":"5121:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6603,"mutability":"mutable","name":"tokenIn","nameLocation":"5154:7:18","nodeType":"VariableDeclaration","scope":6630,"src":"5146:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6602,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6605,"mutability":"mutable","name":"tokenOut","nameLocation":"5175:8:18","nodeType":"VariableDeclaration","scope":6630,"src":"5167:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6604,"name":"address","nodeType":"ElementaryTypeName","src":"5167:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6607,"mutability":"mutable","name":"price","nameLocation":"5197:5:18","nodeType":"VariableDeclaration","scope":6630,"src":"5189:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6606,"name":"uint256","nodeType":"ElementaryTypeName","src":"5189:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5095:111:18"},"returnParameters":{"id":6611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6610,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6630,"src":"5230:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6609,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5229:9:18"},"scope":7143,"src":"5072:275:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6666,"nodeType":"Block","src":"5518:125:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6656,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6361,"src":"5591:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6657,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6634,"src":"5597:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5591:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6659,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6361,"src":"5610:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6652,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6640,"src":"5572:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6653,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6361,"src":"5579:3:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6645,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6632,"src":"5532:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":6647,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6638,"src":"5554:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6646,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5541:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:22:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5532:31:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5531:33:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5565:6:18","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"5531:40:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:52:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5584:6:18","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"5531:59:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:83:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":6662,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6636,"src":"5630:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6661,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6497,"src":"5617:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5531:107:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6644,"id":6665,"nodeType":"Return","src":"5524:114:18"}]},"id":6667,"implemented":true,"kind":"function","modifiers":[],"name":"_calcMaxAmount","nameLocation":"5360:14:18","nodeType":"FunctionDefinition","parameters":{"id":6641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6632,"mutability":"mutable","name":"amount","nameLocation":"5388:6:18","nodeType":"VariableDeclaration","scope":6667,"src":"5380:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6631,"name":"uint256","nodeType":"ElementaryTypeName","src":"5380:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6634,"mutability":"mutable","name":"maxSlippage","nameLocation":"5408:11:18","nodeType":"VariableDeclaration","scope":6667,"src":"5400:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6633,"name":"uint256","nodeType":"ElementaryTypeName","src":"5400:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6636,"mutability":"mutable","name":"tokenIn","nameLocation":"5433:7:18","nodeType":"VariableDeclaration","scope":6667,"src":"5425:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6635,"name":"address","nodeType":"ElementaryTypeName","src":"5425:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6638,"mutability":"mutable","name":"tokenOut","nameLocation":"5454:8:18","nodeType":"VariableDeclaration","scope":6667,"src":"5446:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6637,"name":"address","nodeType":"ElementaryTypeName","src":"5446:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6640,"mutability":"mutable","name":"price","nameLocation":"5476:5:18","nodeType":"VariableDeclaration","scope":6667,"src":"5468:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6639,"name":"uint256","nodeType":"ElementaryTypeName","src":"5468:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5374:111:18"},"returnParameters":{"id":6644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6667,"src":"5509:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6642,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:18"},"scope":7143,"src":"5351:292:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6778,"nodeType":"Block","src":"5824:1019:18","statements":[{"assignments":[6685],"declarations":[{"constant":false,"id":6685,"mutability":"mutable","name":"cp","nameLocation":"5857:2:18","nodeType":"VariableDeclaration","scope":6778,"src":"5830:29:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":6684,"nodeType":"UserDefinedTypeName","pathNode":{"id":6683,"name":"UniswapCustomParams","nameLocations":["5830:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":6383,"src":"5830:19:18"},"referencedDeclaration":6383,"src":"5830:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":6693,"initialValue":{"arguments":[{"expression":{"id":6688,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"5873:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5884:12:18","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":6376,"src":"5873:23:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":6690,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"5899:19:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":6691,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5898:21:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":6686,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5862:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5866:6:18","memberName":"decode","nodeType":"MemberAccess","src":"5862:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"5830:90:18"},{"assignments":[6695],"declarations":[{"constant":false,"id":6695,"mutability":"mutable","name":"amountOutMin","nameLocation":"5934:12:18","nodeType":"VariableDeclaration","scope":6778,"src":"5926:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6694,"name":"uint256","nodeType":"ElementaryTypeName","src":"5926:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6704,"initialValue":{"arguments":[{"id":6697,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"5964:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6698,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6670,"src":"5972:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5983:11:18","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":6374,"src":"5972:22:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6700,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"5996:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6701,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"6005:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6702,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6678,"src":"6015:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6696,"name":"_calcMinAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6630,"src":"5949:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":6703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5949:72:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5926:95:18"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6711,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"6068:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6071:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"6068:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}],"id":6710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6060:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6709,"name":"address","nodeType":"ElementaryTypeName","src":"6060:7:18","typeDescriptions":{}}},"id":6713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6060:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6714,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"6080:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6706,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"6043:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6705,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6028:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6052:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"6028:31:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:59:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6716,"nodeType":"ExpressionStatement","src":"6028:59:18"},{"assignments":[6721],"declarations":[{"constant":false,"id":6721,"mutability":"mutable","name":"params","nameLocation":"6135:6:18","nodeType":"VariableDeclaration","scope":6778,"src":"6093:48:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":6720,"nodeType":"UserDefinedTypeName","pathNode":{"id":6719,"name":"ISwapRouter.ExactInputSingleParams","nameLocations":["6093:11:18","6105:22:18"],"nodeType":"IdentifierPath","referencedDeclaration":4839,"src":"6093:34:18"},"referencedDeclaration":4839,"src":"6093:34:18","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"id":6738,"initialValue":{"arguments":[{"id":6724,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"6196:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6725,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"6221:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6726,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"6242:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6727,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6245:7:18","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":6379,"src":"6242:10:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":6730,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6279:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}],"id":6729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6271:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6728,"name":"address","nodeType":"ElementaryTypeName","src":"6271:7:18","typeDescriptions":{}}},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6271:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6732,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6302:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6308:9:18","memberName":"timestamp","nodeType":"MemberAccess","src":"6302:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6734,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"6335:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6735,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"6367:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":6736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6406:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":6722,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"6144:11:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$4915_$","typeString":"type(contract ISwapRouter)"}},"id":6723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6156:22:18","memberName":"ExactInputSingleParams","nodeType":"MemberAccess","referencedDeclaration":4839,"src":"6144:34:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputSingleParams_$4839_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputSingleParams storage pointer)"}},"id":6737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["6187:7:18","6211:8:18","6237:3:18","6260:9:18","6292:8:18","6325:8:18","6349:16:18","6387:17:18"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountIn","amountOutMinimum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"6144:380:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"6093:431:18"},{"assignments":[6740],"declarations":[{"constant":false,"id":6740,"mutability":"mutable","name":"received","nameLocation":"6539:8:18","nodeType":"VariableDeclaration","scope":6778,"src":"6531:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6739,"name":"uint256","nodeType":"ElementaryTypeName","src":"6531:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6746,"initialValue":{"arguments":[{"id":6744,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6721,"src":"6577:6:18","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}],"expression":{"expression":{"id":6741,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"6550:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6742,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6553:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"6550:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}},"id":6743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6560:16:18","memberName":"exactInputSingle","nodeType":"MemberAccess","referencedDeclaration":4848,"src":"6550:26:18","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputSingleParams_$4839_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)"}},"id":6745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6531:53:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":6753,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6636:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}],"id":6752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6628:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6751,"name":"address","nodeType":"ElementaryTypeName","src":"6628:7:18","typeDescriptions":{}}},"id":6754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6628:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":6757,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"6651:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6654:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"6651:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}],"id":6756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6643:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6755,"name":"address","nodeType":"ElementaryTypeName","src":"6643:7:18","typeDescriptions":{}}},"id":6759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6748,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6672,"src":"6609:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6747,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6594:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6618:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":796,"src":"6594:33:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":6760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:68:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6666:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6594:73:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6766,"nodeType":"IfStatement","src":"6590:115:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6763,"name":"AllowanceShouldGoBackToZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"6676:27:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6676:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6765,"nodeType":"RevertStatement","src":"6669:36:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6767,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6740,"src":"6735:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6768,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"6746:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6735:23:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6775,"nodeType":"IfStatement","src":"6731:86:18","trueBody":{"errorCall":{"arguments":[{"id":6771,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6740,"src":"6794:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6772,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6695,"src":"6804:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6770,"name":"ReceivedLessThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"6767:26:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":6773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6767:50:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6774,"nodeType":"RevertStatement","src":"6760:57:18"}},{"expression":{"id":6776,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6740,"src":"6830:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6682,"id":6777,"nodeType":"Return","src":"6823:15:18"}]},"id":6779,"implemented":true,"kind":"function","modifiers":[],"name":"_exactInputUniswap","nameLocation":"5656:18:18","nodeType":"FunctionDefinition","parameters":{"id":6679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6670,"mutability":"mutable","name":"swapConfig","nameLocation":"5700:10:18","nodeType":"VariableDeclaration","scope":6779,"src":"5680:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":6669,"nodeType":"UserDefinedTypeName","pathNode":{"id":6668,"name":"SwapConfig","nameLocations":["5680:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"5680:10:18"},"referencedDeclaration":6377,"src":"5680:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":6672,"mutability":"mutable","name":"tokenIn","nameLocation":"5724:7:18","nodeType":"VariableDeclaration","scope":6779,"src":"5716:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6671,"name":"address","nodeType":"ElementaryTypeName","src":"5716:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6674,"mutability":"mutable","name":"tokenOut","nameLocation":"5745:8:18","nodeType":"VariableDeclaration","scope":6779,"src":"5737:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6673,"name":"address","nodeType":"ElementaryTypeName","src":"5737:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6676,"mutability":"mutable","name":"amount","nameLocation":"5767:6:18","nodeType":"VariableDeclaration","scope":6779,"src":"5759:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6675,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6678,"mutability":"mutable","name":"price","nameLocation":"5787:5:18","nodeType":"VariableDeclaration","scope":6779,"src":"5779:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6677,"name":"uint256","nodeType":"ElementaryTypeName","src":"5779:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:122:18"},"returnParameters":{"id":6682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6779,"src":"5815:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6680,"name":"uint256","nodeType":"ElementaryTypeName","src":"5815:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5814:9:18"},"scope":7143,"src":"5647:1196:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6886,"nodeType":"Block","src":"7025:982:18","statements":[{"assignments":[6797],"declarations":[{"constant":false,"id":6797,"mutability":"mutable","name":"cp","nameLocation":"7058:2:18","nodeType":"VariableDeclaration","scope":6886,"src":"7031:29:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":6796,"nodeType":"UserDefinedTypeName","pathNode":{"id":6795,"name":"UniswapCustomParams","nameLocations":["7031:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":6383,"src":"7031:19:18"},"referencedDeclaration":6383,"src":"7031:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":6805,"initialValue":{"arguments":[{"expression":{"id":6800,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6782,"src":"7074:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7085:12:18","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":6376,"src":"7074:23:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":6802,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6383,"src":"7100:19:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":6803,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7099:21:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$6383_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":6798,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7063:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7067:6:18","memberName":"decode","nodeType":"MemberAccess","src":"7063:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7063:58:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7031:90:18"},{"assignments":[6807],"declarations":[{"constant":false,"id":6807,"mutability":"mutable","name":"amountInMax","nameLocation":"7136:11:18","nodeType":"VariableDeclaration","scope":6886,"src":"7128:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6806,"name":"uint256","nodeType":"ElementaryTypeName","src":"7128:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6816,"initialValue":{"arguments":[{"id":6809,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6788,"src":"7165:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6810,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6782,"src":"7173:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7184:11:18","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":6374,"src":"7173:22:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6812,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"7197:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6813,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6786,"src":"7206:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6814,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"7216:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6808,"name":"_calcMaxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"7150:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":6815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7150:72:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7128:94:18"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6823,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"7269:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7272:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"7269:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}],"id":6822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6821,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:18","typeDescriptions":{}}},"id":6825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7261:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":6828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7286:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6827,"name":"uint256","nodeType":"ElementaryTypeName","src":"7286:7:18","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":6826,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7281:4:18","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7281:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":6830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7295:3:18","memberName":"max","nodeType":"MemberAccess","src":"7281:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6818,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"7244:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6817,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7229:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7253:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"7229:31:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:70:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6832,"nodeType":"ExpressionStatement","src":"7229:70:18"},{"assignments":[6837],"declarations":[{"constant":false,"id":6837,"mutability":"mutable","name":"params","nameLocation":"7348:6:18","nodeType":"VariableDeclaration","scope":6886,"src":"7305:49:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":6836,"nodeType":"UserDefinedTypeName","pathNode":{"id":6835,"name":"ISwapRouter.ExactOutputSingleParams","nameLocations":["7305:11:18","7317:23:18"],"nodeType":"IdentifierPath","referencedDeclaration":4885,"src":"7305:35:18"},"referencedDeclaration":4885,"src":"7305:35:18","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"id":6854,"initialValue":{"arguments":[{"id":6840,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"7410:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6841,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6786,"src":"7435:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6842,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"7456:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7459:7:18","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":6379,"src":"7456:10:18","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":6846,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7493:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}],"id":6845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7485:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6844,"name":"address","nodeType":"ElementaryTypeName","src":"7485:7:18","typeDescriptions":{}}},"id":6847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":6848,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7516:5:18","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7522:9:18","memberName":"timestamp","nodeType":"MemberAccess","src":"7516:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6850,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6788,"src":"7550:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6851,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6807,"src":"7581:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":6852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7619:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint24","typeString":"uint24"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":6838,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"7357:11:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$4915_$","typeString":"type(contract ISwapRouter)"}},"id":6839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7369:23:18","memberName":"ExactOutputSingleParams","nodeType":"MemberAccess","referencedDeclaration":4885,"src":"7357:35:18","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactOutputSingleParams_$4885_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactOutputSingleParams storage pointer)"}},"id":6853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7401:7:18","7425:8:18","7451:3:18","7474:9:18","7506:8:18","7539:9:18","7564:15:18","7600:17:18"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountOut","amountInMaximum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"7357:380:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7305:432:18"},{"assignments":[6856],"declarations":[{"constant":false,"id":6856,"mutability":"mutable","name":"actualAmount","nameLocation":"7751:12:18","nodeType":"VariableDeclaration","scope":6886,"src":"7743:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6855,"name":"uint256","nodeType":"ElementaryTypeName","src":"7743:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6862,"initialValue":{"arguments":[{"id":6860,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6837,"src":"7794:6:18","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}],"expression":{"expression":{"id":6857,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"7766:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7769:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"7766:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}},"id":6859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7776:17:18","memberName":"exactOutputSingle","nodeType":"MemberAccess","referencedDeclaration":4894,"src":"7766:27:18","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactOutputSingleParams_$4885_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactOutputSingleParams memory) payable external returns (uint256)"}},"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7766:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7743:58:18"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":6869,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"7848:2:18","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$6383_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":6870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7851:6:18","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":6382,"src":"7848:9:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$4915","typeString":"contract ISwapRouter"}],"id":6868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7840:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6867,"name":"address","nodeType":"ElementaryTypeName","src":"7840:7:18","typeDescriptions":{}}},"id":6871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7840:18:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":6872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":6864,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6784,"src":"7823:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6863,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7808:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7808:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7832:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"7808:31:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7808:54:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6874,"nodeType":"ExpressionStatement","src":"7808:54:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6875,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6856,"src":"7892:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6876,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6807,"src":"7907:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7892:26:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6883,"nodeType":"IfStatement","src":"7888:89:18","trueBody":{"errorCall":{"arguments":[{"id":6879,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6856,"src":"7951:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6880,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6807,"src":"7965:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6878,"name":"SpentMoreThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6405,"src":"7927:23:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":6881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7927:50:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6882,"nodeType":"RevertStatement","src":"7920:57:18"}},{"expression":{"id":6884,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6856,"src":"7990:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6794,"id":6885,"nodeType":"Return","src":"7983:19:18"}]},"id":6887,"implemented":true,"kind":"function","modifiers":[],"name":"_exactOutputUniswap","nameLocation":"6856:19:18","nodeType":"FunctionDefinition","parameters":{"id":6791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6782,"mutability":"mutable","name":"swapConfig","nameLocation":"6901:10:18","nodeType":"VariableDeclaration","scope":6887,"src":"6881:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":6781,"nodeType":"UserDefinedTypeName","pathNode":{"id":6780,"name":"SwapConfig","nameLocations":["6881:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"6881:10:18"},"referencedDeclaration":6377,"src":"6881:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":6784,"mutability":"mutable","name":"tokenIn","nameLocation":"6925:7:18","nodeType":"VariableDeclaration","scope":6887,"src":"6917:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6783,"name":"address","nodeType":"ElementaryTypeName","src":"6917:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6786,"mutability":"mutable","name":"tokenOut","nameLocation":"6946:8:18","nodeType":"VariableDeclaration","scope":6887,"src":"6938:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6785,"name":"address","nodeType":"ElementaryTypeName","src":"6938:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6788,"mutability":"mutable","name":"amount","nameLocation":"6968:6:18","nodeType":"VariableDeclaration","scope":6887,"src":"6960:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6787,"name":"uint256","nodeType":"ElementaryTypeName","src":"6960:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6790,"mutability":"mutable","name":"price","nameLocation":"6988:5:18","nodeType":"VariableDeclaration","scope":6887,"src":"6980:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6789,"name":"uint256","nodeType":"ElementaryTypeName","src":"6980:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6875:122:18"},"returnParameters":{"id":6794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6887,"src":"7016:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6792,"name":"uint256","nodeType":"ElementaryTypeName","src":"7016:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7015:9:18"},"scope":7143,"src":"6847:1160:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6987,"nodeType":"Block","src":"8195:690:18","statements":[{"assignments":[6905,6908],"declarations":[{"constant":false,"id":6905,"mutability":"mutable","name":"router","nameLocation":"8215:6:18","nodeType":"VariableDeclaration","scope":6987,"src":"8202:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},"typeName":{"id":6904,"nodeType":"UserDefinedTypeName","pathNode":{"id":6903,"name":"ICurveRouter","nameLocations":["8202:12:18"],"nodeType":"IdentifierPath","referencedDeclaration":7420,"src":"8202:12:18"},"referencedDeclaration":7420,"src":"8202:12:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":6908,"mutability":"mutable","name":"route","nameLocation":"8253:5:18","nodeType":"VariableDeclaration","scope":6987,"src":"8223:35:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":6907,"nodeType":"UserDefinedTypeName","pathNode":{"id":6906,"name":"CurveRoutes.CurveRoute","nameLocations":["8223:11:18","8235:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"8223:22:18"},"referencedDeclaration":5297,"src":"8223:22:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":6916,"initialValue":{"arguments":[{"expression":{"id":6911,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"8291:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8302:12:18","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":6376,"src":"8291:23:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":6913,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6892,"src":"8322:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6914,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"8337:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6909,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"8262:11:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":6910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8274:9:18","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":5838,"src":"8262:21:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":6915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8262:89:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"8201:150:18"},{"assignments":[6918],"declarations":[{"constant":false,"id":6918,"mutability":"mutable","name":"amountOutMin","nameLocation":"8365:12:18","nodeType":"VariableDeclaration","scope":6987,"src":"8357:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6917,"name":"uint256","nodeType":"ElementaryTypeName","src":"8357:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6927,"initialValue":{"arguments":[{"id":6920,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"8395:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6921,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6890,"src":"8403:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":6922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8414:11:18","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":6374,"src":"8403:22:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6923,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6892,"src":"8427:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6924,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6894,"src":"8436:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6925,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6898,"src":"8446:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6919,"name":"_calcMinAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6630,"src":"8380:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":6926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8380:72:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8357:95:18"},{"expression":{"arguments":[{"arguments":[{"id":6934,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6905,"src":"8499:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}],"id":6933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8491:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6932,"name":"address","nodeType":"ElementaryTypeName","src":"8491:7:18","typeDescriptions":{}}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8491:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6936,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"8508:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":6929,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6892,"src":"8474:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6928,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"8459:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8459:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8483:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"8459:31:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":6937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8459:56:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6938,"nodeType":"ExpressionStatement","src":"8459:56:18"},{"expression":{"id":6955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6939,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"8521:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":6942,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"8548:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":6943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8554:5:18","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"8548:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":6944,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"8561:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":6945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8567:10:18","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"8561:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":6946,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6896,"src":"8579:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6947,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"8587:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":6948,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"8601:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":6949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8607:5:18","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":5296,"src":"8601:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},{"arguments":[{"id":6952,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8622:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}],"id":6951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6950,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:18","typeDescriptions":{}}},"id":6953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6940,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6905,"src":"8532:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8539:8:18","memberName":"exchange","nodeType":"MemberAccess","referencedDeclaration":7236,"src":"8532:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_address_$11_memory_ptr_$_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_address_$5_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[11] memory,uint256[5] memory[5] memory,uint256,uint256,address[5] memory,address) payable external returns (uint256)"}},"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8532:96:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8521:107:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6956,"nodeType":"ExpressionStatement","src":"8521:107:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":6963,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8681:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}],"id":6962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8673:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6961,"name":"address","nodeType":"ElementaryTypeName","src":"8673:7:18","typeDescriptions":{}}},"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8673:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6967,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6905,"src":"8696:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}],"id":6966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8688:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6965,"name":"address","nodeType":"ElementaryTypeName","src":"8688:7:18","typeDescriptions":{}}},"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8688:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6958,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6892,"src":"8654:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6957,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"8639:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":6959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8663:9:18","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":796,"src":"8639:33:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":6969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:65:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8708:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8639:70:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6975,"nodeType":"IfStatement","src":"8635:112:18","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":6972,"name":"AllowanceShouldGoBackToZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6393,"src":"8718:27:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":6973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6974,"nodeType":"RevertStatement","src":"8711:36:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6976,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"8777:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6977,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"8788:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8777:23:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6984,"nodeType":"IfStatement","src":"8773:86:18","trueBody":{"errorCall":{"arguments":[{"id":6980,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"8836:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6981,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"8846:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6979,"name":"ReceivedLessThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6399,"src":"8809:26:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":6982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8809:50:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6983,"nodeType":"RevertStatement","src":"8802:57:18"}},{"expression":{"id":6985,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"8872:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6902,"id":6986,"nodeType":"Return","src":"8865:15:18"}]},"id":6988,"implemented":true,"kind":"function","modifiers":[],"name":"_exactInputCurve","nameLocation":"8020:16:18","nodeType":"FunctionDefinition","parameters":{"id":6899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6890,"mutability":"mutable","name":"swapConfig","nameLocation":"8062:10:18","nodeType":"VariableDeclaration","scope":6988,"src":"8042:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":6889,"nodeType":"UserDefinedTypeName","pathNode":{"id":6888,"name":"SwapConfig","nameLocations":["8042:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"8042:10:18"},"referencedDeclaration":6377,"src":"8042:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":6892,"mutability":"mutable","name":"tokenIn","nameLocation":"8086:7:18","nodeType":"VariableDeclaration","scope":6988,"src":"8078:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6891,"name":"address","nodeType":"ElementaryTypeName","src":"8078:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6894,"mutability":"mutable","name":"tokenOut","nameLocation":"8107:8:18","nodeType":"VariableDeclaration","scope":6988,"src":"8099:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6893,"name":"address","nodeType":"ElementaryTypeName","src":"8099:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6896,"mutability":"mutable","name":"amount","nameLocation":"8129:6:18","nodeType":"VariableDeclaration","scope":6988,"src":"8121:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6895,"name":"uint256","nodeType":"ElementaryTypeName","src":"8121:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6898,"mutability":"mutable","name":"price","nameLocation":"8149:5:18","nodeType":"VariableDeclaration","scope":6988,"src":"8141:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6897,"name":"uint256","nodeType":"ElementaryTypeName","src":"8141:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8036:122:18"},"returnParameters":{"id":6902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6901,"mutability":"mutable","name":"received","nameLocation":"8185:8:18","nodeType":"VariableDeclaration","scope":6988,"src":"8177:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6900,"name":"uint256","nodeType":"ElementaryTypeName","src":"8177:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8176:18:18"},"scope":7143,"src":"8011:874:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7034,"nodeType":"Block","src":"9063:317:18","statements":[{"expression":{"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7003,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"9069:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7006,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"9100:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":7007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9106:5:18","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"9100:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":7008,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"9113:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":7009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9119:10:18","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"9113:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":7010,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6996,"src":"9131:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7011,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"9139:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":7012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9145:5:18","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":5296,"src":"9139:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}],"expression":{"id":7004,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"9086:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"id":7005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9093:6:18","memberName":"get_dx","nodeType":"MemberAccess","referencedDeclaration":7257,"src":"9086:13:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_array$_t_address_$11_memory_ptr_$_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_$_t_uint256_$_t_array$_t_address_$5_memory_ptr_$returns$_t_uint256_$","typeString":"function (address[11] memory,uint256[5] memory[5] memory,uint256,address[5] memory) view external returns (uint256)"}},"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9086:65:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9069:82:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7015,"nodeType":"ExpressionStatement","src":"9069:82:18"},{"expression":{"id":7032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7016,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6999,"src":"9157:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":7019,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"9191:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":7020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9197:5:18","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":5285,"src":"9191:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":7021,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"9210:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":7022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9216:10:18","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":5292,"src":"9210:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":7023,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"9234:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":7024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9256:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":7025,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"9337:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":7026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9343:5:18","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":5296,"src":"9337:11:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},{"arguments":[{"id":7029,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9364:4:18","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$7143","typeString":"library SwapLibrary"}],"id":7028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9356:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7027,"name":"address","nodeType":"ElementaryTypeName","src":"9356:7:18","typeDescriptions":{}}},"id":7030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9356:13:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"},{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7017,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6991,"src":"9168:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"id":7018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9175:8:18","memberName":"exchange","nodeType":"MemberAccess","referencedDeclaration":7236,"src":"9168:15:18","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_address_$11_memory_ptr_$_t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr_$_t_uint256_$_t_uint256_$_t_array$_t_address_$5_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[11] memory,uint256[5] memory[5] memory,uint256,uint256,address[5] memory,address) payable external returns (uint256)"}},"id":7031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9168:207:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9157:218:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7033,"nodeType":"ExpressionStatement","src":"9157:218:18"}]},"id":7035,"implemented":true,"kind":"function","modifiers":[],"name":"_exchangeCurve","nameLocation":"8898:14:18","nodeType":"FunctionDefinition","parameters":{"id":6997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6991,"mutability":"mutable","name":"router","nameLocation":"8931:6:18","nodeType":"VariableDeclaration","scope":7035,"src":"8918:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},"typeName":{"id":6990,"nodeType":"UserDefinedTypeName","pathNode":{"id":6989,"name":"ICurveRouter","nameLocations":["8918:12:18"],"nodeType":"IdentifierPath","referencedDeclaration":7420,"src":"8918:12:18"},"referencedDeclaration":7420,"src":"8918:12:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":6994,"mutability":"mutable","name":"route","nameLocation":"8973:5:18","nodeType":"VariableDeclaration","scope":7035,"src":"8943:35:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":6993,"nodeType":"UserDefinedTypeName","pathNode":{"id":6992,"name":"CurveRoutes.CurveRoute","nameLocations":["8943:11:18","8955:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"8943:22:18"},"referencedDeclaration":5297,"src":"8943:22:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"},{"constant":false,"id":6996,"mutability":"mutable","name":"amount","nameLocation":"8992:6:18","nodeType":"VariableDeclaration","scope":7035,"src":"8984:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6995,"name":"uint256","nodeType":"ElementaryTypeName","src":"8984:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8912:90:18"},"returnParameters":{"id":7002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6999,"mutability":"mutable","name":"received","nameLocation":"9029:8:18","nodeType":"VariableDeclaration","scope":7035,"src":"9021:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6998,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7001,"mutability":"mutable","name":"amountInActual","nameLocation":"9047:14:18","nodeType":"VariableDeclaration","scope":7035,"src":"9039:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7000,"name":"uint256","nodeType":"ElementaryTypeName","src":"9039:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9020:42:18"},"scope":7143,"src":"8889:491:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7141,"nodeType":"Block","src":"9560:799:18","statements":[{"assignments":[7053,7056],"declarations":[{"constant":false,"id":7053,"mutability":"mutable","name":"router","nameLocation":"9580:6:18","nodeType":"VariableDeclaration","scope":7141,"src":"9567:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},"typeName":{"id":7052,"nodeType":"UserDefinedTypeName","pathNode":{"id":7051,"name":"ICurveRouter","nameLocations":["9567:12:18"],"nodeType":"IdentifierPath","referencedDeclaration":7420,"src":"9567:12:18"},"referencedDeclaration":7420,"src":"9567:12:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":7056,"mutability":"mutable","name":"route","nameLocation":"9618:5:18","nodeType":"VariableDeclaration","scope":7141,"src":"9588:35:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":7055,"nodeType":"UserDefinedTypeName","pathNode":{"id":7054,"name":"CurveRoutes.CurveRoute","nameLocations":["9588:11:18","9600:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"9588:22:18"},"referencedDeclaration":5297,"src":"9588:22:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":7064,"initialValue":{"arguments":[{"expression":{"id":7059,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7038,"src":"9656:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":7060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9667:12:18","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":6376,"src":"9656:23:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":7061,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7040,"src":"9687:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7062,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"9702:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7057,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"9627:11:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":7058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9639:9:18","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":5838,"src":"9627:21:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":7063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9627:89:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"9566:150:18"},{"assignments":[7066],"declarations":[{"constant":false,"id":7066,"mutability":"mutable","name":"amountInMax","nameLocation":"9730:11:18","nodeType":"VariableDeclaration","scope":7141,"src":"9722:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7065,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7075,"initialValue":{"arguments":[{"id":7068,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"9759:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7069,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7038,"src":"9767:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9778:11:18","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":6374,"src":"9767:22:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7071,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7040,"src":"9791:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7072,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7042,"src":"9800:8:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7073,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7046,"src":"9810:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7067,"name":"_calcMaxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"9744:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,address,address,uint256) view returns (uint256)"}},"id":7074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9744:72:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9722:94:18"},{"expression":{"arguments":[{"arguments":[{"id":7082,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"9862:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}],"id":7081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9854:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7080,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:18","typeDescriptions":{}}},"id":7083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9854:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7084,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7066,"src":"9871:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7077,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7040,"src":"9837:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7076,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"9822:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9846:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"9822:31:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:61:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7086,"nodeType":"ExpressionStatement","src":"9822:61:18"},{"assignments":[7088],"declarations":[{"constant":false,"id":7088,"mutability":"mutable","name":"amountInConsumed","nameLocation":"9897:16:18","nodeType":"VariableDeclaration","scope":7141,"src":"9889:24:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7087,"name":"uint256","nodeType":"ElementaryTypeName","src":"9889:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7090,"initialValue":{"hexValue":"30","id":7089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9916:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9889:28:18"},{"body":{"id":7126,"nodeType":"Block","src":"10086:183:18","statements":[{"assignments":[7105,7107],"declarations":[{"constant":false,"id":7105,"mutability":"mutable","name":"received","nameLocation":"10103:8:18","nodeType":"VariableDeclaration","scope":7126,"src":"10095:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7104,"name":"uint256","nodeType":"ElementaryTypeName","src":"10095:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7107,"mutability":"mutable","name":"amountInActual","nameLocation":"10121:14:18","nodeType":"VariableDeclaration","scope":7126,"src":"10113:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7106,"name":"uint256","nodeType":"ElementaryTypeName","src":"10113:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7113,"initialValue":{"arguments":[{"id":7109,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"10154:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},{"id":7110,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7056,"src":"10162:5:18","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},{"id":7111,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"10169:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7108,"name":"_exchangeCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7035,"src":"10139:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract ICurveRouter,struct CurveRoutes.CurveRoute memory,uint256) returns (uint256,uint256)"}},"id":7112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10139:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10094:82:18"},{"expression":{"id":7120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7114,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"10184:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[{"id":7117,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"10203:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7118,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7105,"src":"10211:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7115,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"10194:4:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3036_$","typeString":"type(library Math)"}},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10199:3:18","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":1721,"src":"10194:8:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10194:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10184:36:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7121,"nodeType":"ExpressionStatement","src":"10184:36:18"},{"expression":{"id":7124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7122,"name":"amountInConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"10228:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7123,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"10248:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10228:34:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7125,"nodeType":"ExpressionStatement","src":"10228:34:18"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7094,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7044,"src":"10048:6:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10058:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10048:11:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7097,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7092,"src":"10063:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7098,"name":"MAX_EXCHANGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"10067:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10063:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10048:31:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7127,"initializationExpression":{"assignments":[7092],"declarations":[{"constant":false,"id":7092,"mutability":"mutable","name":"i","nameLocation":"10045:1:18","nodeType":"VariableDeclaration","scope":7127,"src":"10037:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7091,"name":"uint256","nodeType":"ElementaryTypeName","src":"10037:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7093,"nodeType":"VariableDeclarationStatement","src":"10037:9:18"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":7102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10081:3:18","subExpression":{"id":7101,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7092,"src":"10081:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7103,"nodeType":"ExpressionStatement","src":"10081:3:18"},"nodeType":"ForStatement","src":"10032:237:18"},{"expression":{"arguments":[{"arguments":[{"id":7134,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7053,"src":"10314:6:18","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}],"id":7133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10306:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7132,"name":"address","nodeType":"ElementaryTypeName","src":"10306:7:18","typeDescriptions":{}}},"id":7135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10306:15:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":7136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10323:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":7129,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7040,"src":"10289:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7128,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"10274:14:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10274:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10298:7:18","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":806,"src":"10274:31:18","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":7137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10274:51:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7138,"nodeType":"ExpressionStatement","src":"10274:51:18"},{"expression":{"id":7139,"name":"amountInConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7088,"src":"10338:16:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7050,"id":7140,"nodeType":"Return","src":"10331:23:18"}]},"id":7142,"implemented":true,"kind":"function","modifiers":[],"name":"_exactOutputCurve","nameLocation":"9393:17:18","nodeType":"FunctionDefinition","parameters":{"id":7047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7038,"mutability":"mutable","name":"swapConfig","nameLocation":"9436:10:18","nodeType":"VariableDeclaration","scope":7142,"src":"9416:30:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":7037,"nodeType":"UserDefinedTypeName","pathNode":{"id":7036,"name":"SwapConfig","nameLocations":["9416:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"9416:10:18"},"referencedDeclaration":6377,"src":"9416:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":7040,"mutability":"mutable","name":"tokenIn","nameLocation":"9460:7:18","nodeType":"VariableDeclaration","scope":7142,"src":"9452:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7039,"name":"address","nodeType":"ElementaryTypeName","src":"9452:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7042,"mutability":"mutable","name":"tokenOut","nameLocation":"9481:8:18","nodeType":"VariableDeclaration","scope":7142,"src":"9473:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7041,"name":"address","nodeType":"ElementaryTypeName","src":"9473:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7044,"mutability":"mutable","name":"amount","nameLocation":"9503:6:18","nodeType":"VariableDeclaration","scope":7142,"src":"9495:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7043,"name":"uint256","nodeType":"ElementaryTypeName","src":"9495:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7046,"mutability":"mutable","name":"price","nameLocation":"9523:5:18","nodeType":"VariableDeclaration","scope":7142,"src":"9515:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7045,"name":"uint256","nodeType":"ElementaryTypeName","src":"9515:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9410:122:18"},"returnParameters":{"id":7050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7142,"src":"9551:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7048,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9550:9:18"},"scope":7143,"src":"9384:975:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":7144,"src":"522:9839:18","usedErrors":[5299,5301,5303,5308,5312,5318,6385,6387,6389,6391,6393,6399,6405],"usedEvents":[]}],"src":"39:10323:18"},"id":18},"project/contracts/dependencies/ICurveRouter.sol":{"ast":{"absolutePath":"project/contracts/dependencies/ICurveRouter.sol","exportedSymbols":{"ICurveRouter":[7420]},"id":7421,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":7145,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"39:23:19"},{"abstract":false,"baseContracts":[],"canonicalName":"ICurveRouter","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":7420,"linearizedBaseContracts":[7420],"name":"ICurveRouter","nameLocation":"187:12:19","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"56d0661e240dfb199ef196e16e6f42473990366314f0226ac978f7be3cd9ee83","id":7169,"name":"Exchange","nameLocation":"212:8:19","nodeType":"EventDefinition","parameters":{"id":7168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7147,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"246:6:19","nodeType":"VariableDeclaration","scope":7169,"src":"230:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7146,"name":"address","nodeType":"ElementaryTypeName","src":"230:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7149,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"278:8:19","nodeType":"VariableDeclaration","scope":7169,"src":"262:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7148,"name":"address","nodeType":"ElementaryTypeName","src":"262:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7153,"indexed":false,"mutability":"mutable","name":"route","nameLocation":"308:5:19","nodeType":"VariableDeclaration","scope":7169,"src":"296:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7150,"name":"address","nodeType":"ElementaryTypeName","src":"296:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7152,"length":{"hexValue":"3131","id":7151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"304:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"296:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7159,"indexed":false,"mutability":"mutable","name":"swap_params","nameLocation":"337:11:19","nodeType":"VariableDeclaration","scope":7169,"src":"323:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7154,"name":"uint256","nodeType":"ElementaryTypeName","src":"323:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7156,"length":{"hexValue":"35","id":7155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"331:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"323:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7158,"length":{"hexValue":"35","id":7157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"334:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"323:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7163,"indexed":false,"mutability":"mutable","name":"pools","nameLocation":"369:5:19","nodeType":"VariableDeclaration","scope":7169,"src":"358:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7160,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7162,"length":{"hexValue":"35","id":7161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"366:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"358:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7165,"indexed":false,"mutability":"mutable","name":"in_amount","nameLocation":"392:9:19","nodeType":"VariableDeclaration","scope":7169,"src":"384:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7164,"name":"uint256","nodeType":"ElementaryTypeName","src":"384:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7167,"indexed":false,"mutability":"mutable","name":"out_amount","nameLocation":"419:10:19","nodeType":"VariableDeclaration","scope":7169,"src":"411:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7166,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"220:215:19"},"src":"206:230:19"},{"functionSelector":"371dc447","id":7188,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"451:8:19","nodeType":"FunctionDefinition","parameters":{"id":7184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7173,"mutability":"mutable","name":"_route","nameLocation":"479:6:19","nodeType":"VariableDeclaration","scope":7188,"src":"460:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7170,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7172,"length":{"hexValue":"3131","id":7171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"468:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"460:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7179,"mutability":"mutable","name":"_swap_params","nameLocation":"508:12:19","nodeType":"VariableDeclaration","scope":7188,"src":"487:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7174,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7176,"length":{"hexValue":"35","id":7175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"495:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"487:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7178,"length":{"hexValue":"35","id":7177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"498:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"487:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7181,"mutability":"mutable","name":"_amount","nameLocation":"530:7:19","nodeType":"VariableDeclaration","scope":7188,"src":"522:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7180,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7183,"mutability":"mutable","name":"_expected","nameLocation":"547:9:19","nodeType":"VariableDeclaration","scope":7188,"src":"539:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7182,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"459:98:19"},"returnParameters":{"id":7187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7186,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7188,"src":"608:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7185,"name":"uint256","nodeType":"ElementaryTypeName","src":"608:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"607:9:19"},"scope":7420,"src":"442:175:19","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"5c9c18e2","id":7211,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"631:8:19","nodeType":"FunctionDefinition","parameters":{"id":7207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7192,"mutability":"mutable","name":"_route","nameLocation":"668:6:19","nodeType":"VariableDeclaration","scope":7211,"src":"649:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7189,"name":"address","nodeType":"ElementaryTypeName","src":"649:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7191,"length":{"hexValue":"3131","id":7190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"657:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"649:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7198,"mutability":"mutable","name":"_swap_params","nameLocation":"705:12:19","nodeType":"VariableDeclaration","scope":7211,"src":"684:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7193,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7195,"length":{"hexValue":"35","id":7194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"692:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"684:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7197,"length":{"hexValue":"35","id":7196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"695:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"684:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7200,"mutability":"mutable","name":"_amount","nameLocation":"735:7:19","nodeType":"VariableDeclaration","scope":7211,"src":"727:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7199,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7202,"mutability":"mutable","name":"_expected","nameLocation":"760:9:19","nodeType":"VariableDeclaration","scope":7211,"src":"752:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7201,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7206,"mutability":"mutable","name":"_pools","nameLocation":"797:6:19","nodeType":"VariableDeclaration","scope":7211,"src":"779:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7203,"name":"address","nodeType":"ElementaryTypeName","src":"779:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7205,"length":{"hexValue":"35","id":7204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"787:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"779:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"639:170:19"},"returnParameters":{"id":7210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7211,"src":"836:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7208,"name":"uint256","nodeType":"ElementaryTypeName","src":"836:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"835:9:19"},"scope":7420,"src":"622:223:19","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c872a3c5","id":7236,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"859:8:19","nodeType":"FunctionDefinition","parameters":{"id":7232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7215,"mutability":"mutable","name":"_route","nameLocation":"896:6:19","nodeType":"VariableDeclaration","scope":7236,"src":"877:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7212,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7214,"length":{"hexValue":"3131","id":7213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"885:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"877:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7221,"mutability":"mutable","name":"_swap_params","nameLocation":"933:12:19","nodeType":"VariableDeclaration","scope":7236,"src":"912:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7216,"name":"uint256","nodeType":"ElementaryTypeName","src":"912:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7218,"length":{"hexValue":"35","id":7217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"912:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7220,"length":{"hexValue":"35","id":7219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"923:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"912:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7223,"mutability":"mutable","name":"_amount","nameLocation":"963:7:19","nodeType":"VariableDeclaration","scope":7236,"src":"955:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7222,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7225,"mutability":"mutable","name":"_expected","nameLocation":"988:9:19","nodeType":"VariableDeclaration","scope":7236,"src":"980:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7224,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7229,"mutability":"mutable","name":"_pools","nameLocation":"1025:6:19","nodeType":"VariableDeclaration","scope":7236,"src":"1007:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7226,"name":"address","nodeType":"ElementaryTypeName","src":"1007:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7228,"length":{"hexValue":"35","id":7227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1015:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1007:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7231,"mutability":"mutable","name":"_receiver","nameLocation":"1049:9:19","nodeType":"VariableDeclaration","scope":7236,"src":"1041:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7230,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"867:197:19"},"returnParameters":{"id":7235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7236,"src":"1091:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7233,"name":"uint256","nodeType":"ElementaryTypeName","src":"1091:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1090:9:19"},"scope":7420,"src":"850:250:19","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c07b5353","id":7257,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1114:6:19","nodeType":"FunctionDefinition","parameters":{"id":7253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7240,"mutability":"mutable","name":"_route","nameLocation":"1149:6:19","nodeType":"VariableDeclaration","scope":7257,"src":"1130:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7237,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7239,"length":{"hexValue":"3131","id":7238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1130:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7246,"mutability":"mutable","name":"_swap_params","nameLocation":"1186:12:19","nodeType":"VariableDeclaration","scope":7257,"src":"1165:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7241,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7243,"length":{"hexValue":"35","id":7242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1173:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1165:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7245,"length":{"hexValue":"35","id":7244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1176:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1165:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7248,"mutability":"mutable","name":"_out_amount","nameLocation":"1216:11:19","nodeType":"VariableDeclaration","scope":7257,"src":"1208:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7247,"name":"uint256","nodeType":"ElementaryTypeName","src":"1208:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7252,"mutability":"mutable","name":"_pools","nameLocation":"1255:6:19","nodeType":"VariableDeclaration","scope":7257,"src":"1237:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7249,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7251,"length":{"hexValue":"35","id":7250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1245:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1237:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1120:147:19"},"returnParameters":{"id":7256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7257,"src":"1291:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7254,"name":"uint256","nodeType":"ElementaryTypeName","src":"1291:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1290:9:19"},"scope":7420,"src":"1105:195:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81fc0ca5","id":7282,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1314:6:19","nodeType":"FunctionDefinition","parameters":{"id":7278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7261,"mutability":"mutable","name":"_route","nameLocation":"1349:6:19","nodeType":"VariableDeclaration","scope":7282,"src":"1330:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7258,"name":"address","nodeType":"ElementaryTypeName","src":"1330:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7260,"length":{"hexValue":"3131","id":7259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1338:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1330:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7267,"mutability":"mutable","name":"_swap_params","nameLocation":"1386:12:19","nodeType":"VariableDeclaration","scope":7282,"src":"1365:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7262,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7264,"length":{"hexValue":"35","id":7263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1373:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1365:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7266,"length":{"hexValue":"35","id":7265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1376:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1365:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7269,"mutability":"mutable","name":"_out_amount","nameLocation":"1416:11:19","nodeType":"VariableDeclaration","scope":7282,"src":"1408:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7268,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7273,"mutability":"mutable","name":"_pools","nameLocation":"1455:6:19","nodeType":"VariableDeclaration","scope":7282,"src":"1437:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7270,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7272,"length":{"hexValue":"35","id":7271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1445:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1437:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7277,"mutability":"mutable","name":"_base_pools","nameLocation":"1489:11:19","nodeType":"VariableDeclaration","scope":7282,"src":"1471:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7274,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7276,"length":{"hexValue":"35","id":7275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1479:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1471:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1320:186:19"},"returnParameters":{"id":7281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7282,"src":"1530:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1530:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1529:9:19"},"scope":7420,"src":"1305:234:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"90e7e205","id":7311,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1553:6:19","nodeType":"FunctionDefinition","parameters":{"id":7307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7286,"mutability":"mutable","name":"_route","nameLocation":"1588:6:19","nodeType":"VariableDeclaration","scope":7311,"src":"1569:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7283,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7285,"length":{"hexValue":"3131","id":7284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1577:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1569:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7292,"mutability":"mutable","name":"_swap_params","nameLocation":"1625:12:19","nodeType":"VariableDeclaration","scope":7311,"src":"1604:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7287,"name":"uint256","nodeType":"ElementaryTypeName","src":"1604:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7289,"length":{"hexValue":"35","id":7288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1612:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1604:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7291,"length":{"hexValue":"35","id":7290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1615:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1604:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7294,"mutability":"mutable","name":"_out_amount","nameLocation":"1655:11:19","nodeType":"VariableDeclaration","scope":7311,"src":"1647:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7293,"name":"uint256","nodeType":"ElementaryTypeName","src":"1647:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7298,"mutability":"mutable","name":"_pools","nameLocation":"1694:6:19","nodeType":"VariableDeclaration","scope":7311,"src":"1676:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7295,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7297,"length":{"hexValue":"35","id":7296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1684:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1676:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7302,"mutability":"mutable","name":"_base_pools","nameLocation":"1728:11:19","nodeType":"VariableDeclaration","scope":7311,"src":"1710:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7299,"name":"address","nodeType":"ElementaryTypeName","src":"1710:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7301,"length":{"hexValue":"35","id":7300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1718:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1710:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7306,"mutability":"mutable","name":"_base_tokens","nameLocation":"1767:12:19","nodeType":"VariableDeclaration","scope":7311,"src":"1749:30:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7303,"name":"address","nodeType":"ElementaryTypeName","src":"1749:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7305,"length":{"hexValue":"35","id":7304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1757:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1749:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1559:226:19"},"returnParameters":{"id":7310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7311,"src":"1809:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1809:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1808:9:19"},"scope":7420,"src":"1544:274:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d10eb385","id":7344,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1832:6:19","nodeType":"FunctionDefinition","parameters":{"id":7340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7315,"mutability":"mutable","name":"_route","nameLocation":"1867:6:19","nodeType":"VariableDeclaration","scope":7344,"src":"1848:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7312,"name":"address","nodeType":"ElementaryTypeName","src":"1848:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7314,"length":{"hexValue":"3131","id":7313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1848:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7321,"mutability":"mutable","name":"_swap_params","nameLocation":"1904:12:19","nodeType":"VariableDeclaration","scope":7344,"src":"1883:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7318,"length":{"hexValue":"35","id":7317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1891:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1883:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7320,"length":{"hexValue":"35","id":7319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1894:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1883:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7323,"mutability":"mutable","name":"_out_amount","nameLocation":"1934:11:19","nodeType":"VariableDeclaration","scope":7344,"src":"1926:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7322,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7327,"mutability":"mutable","name":"_pools","nameLocation":"1973:6:19","nodeType":"VariableDeclaration","scope":7344,"src":"1955:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7324,"name":"address","nodeType":"ElementaryTypeName","src":"1955:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7326,"length":{"hexValue":"35","id":7325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1955:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7331,"mutability":"mutable","name":"_base_pools","nameLocation":"2007:11:19","nodeType":"VariableDeclaration","scope":7344,"src":"1989:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7328,"name":"address","nodeType":"ElementaryTypeName","src":"1989:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7330,"length":{"hexValue":"35","id":7329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1997:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1989:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7335,"mutability":"mutable","name":"_base_tokens","nameLocation":"2046:12:19","nodeType":"VariableDeclaration","scope":7344,"src":"2028:30:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7332,"name":"address","nodeType":"ElementaryTypeName","src":"2028:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7334,"length":{"hexValue":"35","id":7333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2036:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2028:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7339,"mutability":"mutable","name":"_second_base_pools","nameLocation":"2086:18:19","nodeType":"VariableDeclaration","scope":7344,"src":"2068:36:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7336,"name":"address","nodeType":"ElementaryTypeName","src":"2068:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7338,"length":{"hexValue":"35","id":7337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2076:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2068:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1838:272:19"},"returnParameters":{"id":7343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7344,"src":"2134:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7341,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2133:9:19"},"scope":7420,"src":"1823:320:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6d654ccd","id":7381,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"2157:6:19","nodeType":"FunctionDefinition","parameters":{"id":7377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7348,"mutability":"mutable","name":"_route","nameLocation":"2192:6:19","nodeType":"VariableDeclaration","scope":7381,"src":"2173:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7345,"name":"address","nodeType":"ElementaryTypeName","src":"2173:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7347,"length":{"hexValue":"3131","id":7346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2173:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7354,"mutability":"mutable","name":"_swap_params","nameLocation":"2229:12:19","nodeType":"VariableDeclaration","scope":7381,"src":"2208:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7349,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7351,"length":{"hexValue":"35","id":7350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2216:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2208:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7353,"length":{"hexValue":"35","id":7352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2219:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2208:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7356,"mutability":"mutable","name":"_out_amount","nameLocation":"2259:11:19","nodeType":"VariableDeclaration","scope":7381,"src":"2251:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7355,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7360,"mutability":"mutable","name":"_pools","nameLocation":"2298:6:19","nodeType":"VariableDeclaration","scope":7381,"src":"2280:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7357,"name":"address","nodeType":"ElementaryTypeName","src":"2280:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7359,"length":{"hexValue":"35","id":7358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2288:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2280:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7364,"mutability":"mutable","name":"_base_pools","nameLocation":"2332:11:19","nodeType":"VariableDeclaration","scope":7381,"src":"2314:29:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7361,"name":"address","nodeType":"ElementaryTypeName","src":"2314:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7363,"length":{"hexValue":"35","id":7362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2314:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7368,"mutability":"mutable","name":"_base_tokens","nameLocation":"2371:12:19","nodeType":"VariableDeclaration","scope":7381,"src":"2353:30:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7365,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7367,"length":{"hexValue":"35","id":7366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2361:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2353:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7372,"mutability":"mutable","name":"_second_base_pools","nameLocation":"2411:18:19","nodeType":"VariableDeclaration","scope":7381,"src":"2393:36:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7369,"name":"address","nodeType":"ElementaryTypeName","src":"2393:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7371,"length":{"hexValue":"35","id":7370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2401:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2393:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":7376,"mutability":"mutable","name":"_second_base_tokens","nameLocation":"2457:19:19","nodeType":"VariableDeclaration","scope":7381,"src":"2439:37:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7373,"name":"address","nodeType":"ElementaryTypeName","src":"2439:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7375,"length":{"hexValue":"35","id":7374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2439:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"2163:319:19"},"returnParameters":{"id":7380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7379,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7381,"src":"2506:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7378,"name":"uint256","nodeType":"ElementaryTypeName","src":"2506:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:9:19"},"scope":7420,"src":"2148:367:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81889a2c","id":7398,"implemented":false,"kind":"function","modifiers":[],"name":"get_dy","nameLocation":"2529:6:19","nodeType":"FunctionDefinition","parameters":{"id":7394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7385,"mutability":"mutable","name":"_route","nameLocation":"2555:6:19","nodeType":"VariableDeclaration","scope":7398,"src":"2536:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7382,"name":"address","nodeType":"ElementaryTypeName","src":"2536:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7384,"length":{"hexValue":"3131","id":7383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2544:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2536:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7391,"mutability":"mutable","name":"_swap_params","nameLocation":"2584:12:19","nodeType":"VariableDeclaration","scope":7398,"src":"2563:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7386,"name":"uint256","nodeType":"ElementaryTypeName","src":"2563:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7388,"length":{"hexValue":"35","id":7387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2571:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2563:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7390,"length":{"hexValue":"35","id":7389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2563:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7393,"mutability":"mutable","name":"_amount","nameLocation":"2606:7:19","nodeType":"VariableDeclaration","scope":7398,"src":"2598:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7392,"name":"uint256","nodeType":"ElementaryTypeName","src":"2598:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2535:79:19"},"returnParameters":{"id":7397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7398,"src":"2662:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7395,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2661:9:19"},"scope":7420,"src":"2520:151:19","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"637653cb","id":7419,"implemented":false,"kind":"function","modifiers":[],"name":"get_dy","nameLocation":"2685:6:19","nodeType":"FunctionDefinition","parameters":{"id":7415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7402,"mutability":"mutable","name":"_route","nameLocation":"2720:6:19","nodeType":"VariableDeclaration","scope":7419,"src":"2701:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":7399,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7401,"length":{"hexValue":"3131","id":7400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2709:2:19","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2701:11:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":7408,"mutability":"mutable","name":"_swap_params","nameLocation":"2757:12:19","nodeType":"VariableDeclaration","scope":7419,"src":"2736:33:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5][5]"},"typeName":{"baseType":{"baseType":{"id":7403,"name":"uint256","nodeType":"ElementaryTypeName","src":"2736:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7405,"length":{"hexValue":"35","id":7404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2744:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2736:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":7407,"length":{"hexValue":"35","id":7406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2747:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2736:13:19","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":7410,"mutability":"mutable","name":"_amount","nameLocation":"2787:7:19","nodeType":"VariableDeclaration","scope":7419,"src":"2779:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7409,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7414,"mutability":"mutable","name":"_pools","nameLocation":"2822:6:19","nodeType":"VariableDeclaration","scope":7419,"src":"2804:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":7411,"name":"address","nodeType":"ElementaryTypeName","src":"2804:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7413,"length":{"hexValue":"35","id":7412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2804:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"2691:143:19"},"returnParameters":{"id":7418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7419,"src":"2858:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7416,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2857:9:19"},"scope":7420,"src":"2676:191:19","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7421,"src":"177:2692:19","usedErrors":[],"usedEvents":[7169]}],"src":"39:2831:19"},"id":19},"project/contracts/interfaces/ISwapRouterErrors.sol":{"ast":{"absolutePath":"project/contracts/interfaces/ISwapRouterErrors.sol","exportedSymbols":{"ISwapRouter":[4915],"ISwapRouterErrors":[7450]},"id":7451,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":7422,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:20"},{"absolutePath":"npm/@uniswap/v3-periphery@1.4.4/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":7424,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7451,"sourceUnit":4916,"src":"64:87:20","symbolAliases":[{"foreign":{"id":7423,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"72:11:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7426,"name":"ISwapRouter","nameLocations":["223:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":4915,"src":"223:11:20"},"id":7427,"nodeType":"InheritanceSpecifier","src":"223:11:20"}],"canonicalName":"ISwapRouterErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7425,"nodeType":"StructuredDocumentation","src":"153:38:20","text":" @title ISwapRouterErrors"},"fullyImplemented":false,"id":7450,"linearizedBaseContracts":[7450,4915,4815],"name":"ISwapRouterErrors","nameLocation":"202:17:20","nodeType":"ContractDefinition","nodes":[{"errorSelector":"296ba6e1","id":7433,"name":"OutputAmountLessThanSlippage","nameLocation":"245:28:20","nodeType":"ErrorDefinition","parameters":{"id":7432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7429,"mutability":"mutable","name":"amountOut","nameLocation":"282:9:20","nodeType":"VariableDeclaration","scope":7433,"src":"274:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7428,"name":"uint256","nodeType":"ElementaryTypeName","src":"274:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7431,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"301:16:20","nodeType":"VariableDeclaration","scope":7433,"src":"293:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7430,"name":"uint256","nodeType":"ElementaryTypeName","src":"293:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"273:45:20"},"src":"239:80:20"},{"errorSelector":"9a06025d","id":7439,"name":"InputAmountExceedsSlippage","nameLocation":"328:26:20","nodeType":"ErrorDefinition","parameters":{"id":7438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7435,"mutability":"mutable","name":"amountIn","nameLocation":"363:8:20","nodeType":"VariableDeclaration","scope":7439,"src":"355:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7434,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7437,"mutability":"mutable","name":"amountInMaximum","nameLocation":"381:15:20","nodeType":"VariableDeclaration","scope":7439,"src":"373:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7436,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"354:43:20"},"src":"322:76:20"},{"errorSelector":"ff1e9864","id":7441,"name":"DeadlineInThePast","nameLocation":"407:17:20","nodeType":"ErrorDefinition","parameters":{"id":7440,"nodeType":"ParameterList","parameters":[],"src":"424:2:20"},"src":"401:26:20"},{"errorSelector":"d11b25af","id":7443,"name":"AmountCannotBeZero","nameLocation":"436:18:20","nodeType":"ErrorDefinition","parameters":{"id":7442,"nodeType":"ParameterList","parameters":[],"src":"454:2:20"},"src":"430:27:20"},{"errorSelector":"596a094c","id":7445,"name":"TokenCannotBeZero","nameLocation":"466:17:20","nodeType":"ErrorDefinition","parameters":{"id":7444,"nodeType":"ParameterList","parameters":[],"src":"483:2:20"},"src":"460:26:20"},{"errorSelector":"70c73f80","id":7447,"name":"RecipientCannotBeZero","nameLocation":"495:21:20","nodeType":"ErrorDefinition","parameters":{"id":7446,"nodeType":"ParameterList","parameters":[],"src":"516:2:20"},"src":"489:30:20"},{"errorSelector":"d6234725","id":7449,"name":"NotImplemented","nameLocation":"528:14:20","nodeType":"ErrorDefinition","parameters":{"id":7448,"nodeType":"ParameterList","parameters":[],"src":"542:2:20"},"src":"522:23:20"}],"scope":7451,"src":"192:355:20","usedErrors":[7433,7439,7441,7443,7445,7447,7449],"usedEvents":[]}],"src":"39:509:20"},"id":20},"project/contracts/mocks/CurveRoutesTesterMock.sol":{"ast":{"absolutePath":"project/contracts/mocks/CurveRoutesTesterMock.sol","exportedSymbols":{"CurveRoutes":[5839],"CurveRoutesTesterMock":[7524],"ICurveRouter":[7420]},"id":7525,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":7452,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:21"},{"absolutePath":"project/contracts/CurveRoutes.sol","file":"./../CurveRoutes.sol","id":7454,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7525,"sourceUnit":5840,"src":"64:49:21","symbolAliases":[{"foreign":{"id":7453,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"72:11:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/dependencies/ICurveRouter.sol","file":"../dependencies/ICurveRouter.sol","id":7456,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7525,"sourceUnit":7421,"src":"114:62:21","symbolAliases":[{"foreign":{"id":7455,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"122:12:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CurveRoutesTesterMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":7524,"linearizedBaseContracts":[7524],"name":"CurveRoutesTesterMock","nameLocation":"187:21:21","nodeType":"ContractDefinition","nodes":[{"body":{"id":7467,"nodeType":"Block","src":"271:44:21","statements":[{"expression":{"arguments":[{"id":7464,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7458,"src":"298:11:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":7461,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"277:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":7463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"289:8:21","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":5477,"src":"277:20:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":7465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"277:33:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7466,"nodeType":"ExpressionStatement","src":"277:33:21"}]},"functionSelector":"c16e50ef","id":7468,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"222:8:21","nodeType":"FunctionDefinition","parameters":{"id":7459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7458,"mutability":"mutable","name":"curveRoutes","nameLocation":"244:11:21","nodeType":"VariableDeclaration","scope":7468,"src":"231:24:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7457,"name":"bytes","nodeType":"ElementaryTypeName","src":"231:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"230:26:21"},"returnParameters":{"id":7460,"nodeType":"ParameterList","parameters":[],"src":"271:0:21"},"scope":7524,"src":"213:102:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7486,"nodeType":"Block","src":"466:60:21","statements":[{"expression":{"arguments":[{"id":7482,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7470,"src":"501:11:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7483,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7472,"src":"514:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7480,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"479:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"491:9:21","memberName":"readRoute","nodeType":"MemberAccess","referencedDeclaration":5693,"src":"479:21:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":7484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"479:42:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"functionReturnParameters":7479,"id":7485,"nodeType":"Return","src":"472:49:21"}]},"functionSelector":"588f4ff4","id":7487,"implemented":true,"kind":"function","modifiers":[],"name":"readRoute","nameLocation":"328:9:21","nodeType":"FunctionDefinition","parameters":{"id":7473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7470,"mutability":"mutable","name":"curveRoutes","nameLocation":"356:11:21","nodeType":"VariableDeclaration","scope":7487,"src":"343:24:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7469,"name":"bytes","nodeType":"ElementaryTypeName","src":"343:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7472,"mutability":"mutable","name":"offset","nameLocation":"381:6:21","nodeType":"VariableDeclaration","scope":7487,"src":"373:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7471,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"337:54:21"},"returnParameters":{"id":7479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7475,"mutability":"mutable","name":"nSwaps","nameLocation":"421:6:21","nodeType":"VariableDeclaration","scope":7487,"src":"415:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7474,"name":"uint8","nodeType":"ElementaryTypeName","src":"415:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7478,"mutability":"mutable","name":"route","nameLocation":"459:5:21","nodeType":"VariableDeclaration","scope":7487,"src":"429:35:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":7477,"nodeType":"UserDefinedTypeName","pathNode":{"id":7476,"name":"CurveRoutes.CurveRoute","nameLocations":["429:11:21","441:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"429:22:21"},"referencedDeclaration":5297,"src":"429:22:21","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"414:51:21"},"scope":7524,"src":"319:207:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7499,"nodeType":"Block","src":"595:47:21","statements":[{"expression":{"arguments":[{"id":7496,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7489,"src":"630:6:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":7494,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"608:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":7495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"620:9:21","memberName":"routeSize","nodeType":"MemberAccess","referencedDeclaration":5721,"src":"608:21:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":7497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"608:29:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7493,"id":7498,"nodeType":"Return","src":"601:36:21"}]},"functionSelector":"7ea71c9b","id":7500,"implemented":true,"kind":"function","modifiers":[],"name":"routeSize","nameLocation":"539:9:21","nodeType":"FunctionDefinition","parameters":{"id":7490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7489,"mutability":"mutable","name":"nSwaps","nameLocation":"555:6:21","nodeType":"VariableDeclaration","scope":7500,"src":"549:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7488,"name":"uint8","nodeType":"ElementaryTypeName","src":"549:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"548:14:21"},"returnParameters":{"id":7493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7492,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7500,"src":"586:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7491,"name":"uint256","nodeType":"ElementaryTypeName","src":"586:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"585:9:21"},"scope":7524,"src":"530:112:21","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":7522,"nodeType":"Block","src":"823:71:21","statements":[{"expression":{"arguments":[{"id":7517,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7502,"src":"858:11:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7518,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"871:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7519,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7506,"src":"880:8:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7515,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5839,"src":"836:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$5839_$","typeString":"type(library CurveRoutes)"}},"id":7516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"848:9:21","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":5838,"src":"836:21:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":7520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"836:53:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$7420_$_t_struct$_CurveRoute_$5297_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"functionReturnParameters":7514,"id":7521,"nodeType":"Return","src":"829:60:21"}]},"functionSelector":"4eb94259","id":7523,"implemented":true,"kind":"function","modifiers":[],"name":"findRoute","nameLocation":"655:9:21","nodeType":"FunctionDefinition","parameters":{"id":7507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7502,"mutability":"mutable","name":"curveRoutes","nameLocation":"683:11:21","nodeType":"VariableDeclaration","scope":7523,"src":"670:24:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7501,"name":"bytes","nodeType":"ElementaryTypeName","src":"670:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7504,"mutability":"mutable","name":"tokenIn","nameLocation":"708:7:21","nodeType":"VariableDeclaration","scope":7523,"src":"700:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7503,"name":"address","nodeType":"ElementaryTypeName","src":"700:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7506,"mutability":"mutable","name":"tokenOut","nameLocation":"729:8:21","nodeType":"VariableDeclaration","scope":7523,"src":"721:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7505,"name":"address","nodeType":"ElementaryTypeName","src":"721:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"664:77:21"},"returnParameters":{"id":7514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7510,"mutability":"mutable","name":"router","nameLocation":"778:6:21","nodeType":"VariableDeclaration","scope":7523,"src":"765:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"},"typeName":{"id":7509,"nodeType":"UserDefinedTypeName","pathNode":{"id":7508,"name":"ICurveRouter","nameLocations":["765:12:21"],"nodeType":"IdentifierPath","referencedDeclaration":7420,"src":"765:12:21"},"referencedDeclaration":7420,"src":"765:12:21","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$7420","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":7513,"mutability":"mutable","name":"route","nameLocation":"816:5:21","nodeType":"VariableDeclaration","scope":7523,"src":"786:35:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":7512,"nodeType":"UserDefinedTypeName","pathNode":{"id":7511,"name":"CurveRoutes.CurveRoute","nameLocations":["786:11:21","798:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":5297,"src":"786:22:21"},"referencedDeclaration":5297,"src":"786:22:21","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$5297_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"764:58:21"},"scope":7524,"src":"646:248:21","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":7525,"src":"178:718:21","usedErrors":[5299,5301,5303,5308,5312,5318],"usedEvents":[]}],"src":"39:858:21"},"id":21},"project/contracts/mocks/SwapRouterMock.sol":{"ast":{"absolutePath":"project/contracts/mocks/SwapRouterMock.sol","exportedSymbols":{"IERC20Metadata":[845],"ISwapRouter":[4915],"ISwapRouterErrors":[7450],"Math":[3036],"SafeCast":[4801],"SafeERC20":[1300],"SwapRouterMock":[7977]},"id":7978,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":7526,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:22"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":7528,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7978,"sourceUnit":3037,"src":"64:65:22","symbolAliases":[{"foreign":{"id":7527,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"72:4:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":7530,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7978,"sourceUnit":4802,"src":"130:73:22","symbolAliases":[{"foreign":{"id":7529,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4801,"src":"138:8:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":7532,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7978,"sourceUnit":1301,"src":"204:82:22","symbolAliases":[{"foreign":{"id":7531,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"212:9:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@uniswap/v3-periphery@1.4.4/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":7534,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7978,"sourceUnit":4916,"src":"287:87:22","symbolAliases":[{"foreign":{"id":7533,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"295:11:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":7536,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7978,"sourceUnit":846,"src":"375:97:22","symbolAliases":[{"foreign":{"id":7535,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"383:14:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"project/contracts/interfaces/ISwapRouterErrors.sol","file":"../interfaces/ISwapRouterErrors.sol","id":7538,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7978,"sourceUnit":7451,"src":"473:70:22","symbolAliases":[{"foreign":{"id":7537,"name":"ISwapRouterErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7450,"src":"481:17:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7540,"name":"ISwapRouterErrors","nameLocations":["688:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":7450,"src":"688:17:22"},"id":7541,"nodeType":"InheritanceSpecifier","src":"688:17:22"}],"canonicalName":"SwapRouterMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":7539,"nodeType":"StructuredDocumentation","src":"545:115:22","text":" @title SwapRouterMock\n @notice SwapRouter mock that can swap a single type of token for several others"},"fullyImplemented":true,"id":7977,"linearizedBaseContracts":[7977,7450,4915,4815],"name":"SwapRouterMock","nameLocation":"670:14:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7545,"libraryName":{"id":7542,"name":"SafeERC20","nameLocations":["716:9:22"],"nodeType":"IdentifierPath","referencedDeclaration":1300,"src":"716:9:22"},"nodeType":"UsingForDirective","src":"710:35:22","typeName":{"id":7544,"nodeType":"UserDefinedTypeName","pathNode":{"id":7543,"name":"IERC20Metadata","nameLocations":["730:14:22"],"nodeType":"IdentifierPath","referencedDeclaration":845,"src":"730:14:22"},"referencedDeclaration":845,"src":"730:14:22","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}}},{"global":false,"id":7548,"libraryName":{"id":7546,"name":"Math","nameLocations":["754:4:22"],"nodeType":"IdentifierPath","referencedDeclaration":3036,"src":"754:4:22"},"nodeType":"UsingForDirective","src":"748:23:22","typeName":{"id":7547,"name":"uint256","nodeType":"ElementaryTypeName","src":"763:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":7551,"libraryName":{"id":7549,"name":"SafeCast","nameLocations":["780:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":4801,"src":"780:8:22"},"nodeType":"UsingForDirective","src":"774:27:22","typeName":{"id":7550,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":7554,"mutability":"constant","name":"WAD","nameLocation":"831:3:22","nodeType":"VariableDeclaration","scope":7977,"src":"805:36:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7552,"name":"uint256","nodeType":"ElementaryTypeName","src":"805:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":7553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:4:22","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"errorSelector":"6b35b1b7","id":7556,"name":"AdminCannotBeZero","nameLocation":"852:17:22","nodeType":"ErrorDefinition","parameters":{"id":7555,"nodeType":"ParameterList","parameters":[],"src":"869:2:22"},"src":"846:26:22"},{"anonymous":false,"eventSelector":"b71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10","id":7564,"name":"PriceUpdated","nameLocation":"881:12:22","nodeType":"EventDefinition","parameters":{"id":7563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7558,"indexed":false,"mutability":"mutable","name":"tokenIn","nameLocation":"902:7:22","nodeType":"VariableDeclaration","scope":7564,"src":"894:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7557,"name":"address","nodeType":"ElementaryTypeName","src":"894:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7560,"indexed":false,"mutability":"mutable","name":"tokenOut","nameLocation":"919:8:22","nodeType":"VariableDeclaration","scope":7564,"src":"911:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7559,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7562,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"937:5:22","nodeType":"VariableDeclaration","scope":7564,"src":"929:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7561,"name":"uint256","nodeType":"ElementaryTypeName","src":"929:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"893:50:22"},"src":"875:69:22"},{"errorSelector":"8f0f4206","id":7570,"name":"NotEnoughBalance","nameLocation":"953:16:22","nodeType":"ErrorDefinition","parameters":{"id":7569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7566,"mutability":"mutable","name":"available","nameLocation":"978:9:22","nodeType":"VariableDeclaration","scope":7570,"src":"970:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7565,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7568,"mutability":"mutable","name":"required","nameLocation":"997:8:22","nodeType":"VariableDeclaration","scope":7570,"src":"989:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7567,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:37:22"},"src":"947:60:22"},{"constant":false,"id":7576,"mutability":"mutable","name":"_prices","nameLocation":"1067:7:22","nodeType":"VariableDeclaration","scope":7977,"src":"1011:63:22","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7575,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7571,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1011:47:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7574,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":7572,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1030:27:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":7573,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"body":{"id":7592,"nodeType":"Block","src":"1106:60:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7582,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7578,"src":"1120:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1137:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1129:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7583,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:22","typeDescriptions":{}}},"id":7586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1129:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1120:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7588,"name":"AdminCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7556,"src":"1141:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1141:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7581,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1112:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7591,"nodeType":"ExpressionStatement","src":"1112:49:22"}]},"id":7593,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7578,"mutability":"mutable","name":"admin","nameLocation":"1099:5:22","nodeType":"VariableDeclaration","scope":7593,"src":"1091:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7577,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1090:15:22"},"returnParameters":{"id":7580,"nodeType":"ParameterList","parameters":[],"src":"1106:0:22"},"scope":7977,"src":"1079:87:22","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7612,"nodeType":"Block","src":"1239:65:22","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":7600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1253:2:22","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":7601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1260:2:22","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7603,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7595,"src":"1280:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7602,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"1265:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1265:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1287:8:22","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":844,"src":"1265:30:22","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":7606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1265:32:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1260:37:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7608,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1259:39:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1253:45:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7610,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1252:47:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7599,"id":7611,"nodeType":"Return","src":"1245:54:22"}]},"id":7613,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1179:12:22","nodeType":"FunctionDefinition","parameters":{"id":7596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7595,"mutability":"mutable","name":"token","nameLocation":"1200:5:22","nodeType":"VariableDeclaration","scope":7613,"src":"1192:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7594,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1191:15:22"},"returnParameters":{"id":7599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7613,"src":"1230:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:22"},"scope":7977,"src":"1170:134:22","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4848],"body":{"id":7720,"nodeType":"Block","src":"1460:711:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7623,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1474:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1481:9:22","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4830,"src":"1474:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1502:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1494:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7625,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:22","typeDescriptions":{}}},"id":7628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1494:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1474:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7630,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"1506:21:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1506:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7622,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1466:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1466:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7633,"nodeType":"ExpressionStatement","src":"1466:64:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7635,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1544:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1551:8:22","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":4832,"src":"1544:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":7637,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1563:5:22","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1569:9:22","memberName":"timestamp","nodeType":"MemberAccess","src":"1563:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1544:34:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7640,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"1580:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7634,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1536:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1536:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7643,"nodeType":"ExpressionStatement","src":"1536:64:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7645,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1614:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1621:8:22","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4834,"src":"1614:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1614:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7649,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"1635:18:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7644,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1606:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1606:50:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7652,"nodeType":"ExpressionStatement","src":"1606:50:22"},{"assignments":[7654],"declarations":[{"constant":false,"id":7654,"mutability":"mutable","name":"amountOutInWad","nameLocation":"1671:14:22","nodeType":"VariableDeclaration","scope":7720,"src":"1663:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7653,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7673,"initialValue":{"arguments":[{"id":7664,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"1751:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":7665,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"1762:7:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7668,"indexExpression":{"expression":{"id":7666,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1770:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1777:7:22","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4824,"src":"1770:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1762:23:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7671,"indexExpression":{"expression":{"id":7669,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1786:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1793:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4826,"src":"1786:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1762:40:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7655,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1689:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1696:8:22","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4834,"src":"1689:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":7658,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1720:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1727:7:22","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4824,"src":"1720:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7657,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"1707:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1707:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1689:46:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7662,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1688:48:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1737:6:22","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"1688:55:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:120:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1663:145:22"},{"expression":{"id":7681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7674,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"1814:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7675,"name":"amountOutInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7654,"src":"1826:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":7677,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1856:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1863:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4826,"src":"1856:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7676,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"1843:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1843:29:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1826:46:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1814:58:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7682,"nodeType":"ExpressionStatement","src":"1814:58:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7684,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"1886:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":7685,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1899:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1906:16:22","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":4836,"src":"1899:23:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1886:36:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7689,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"1953:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7690,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"1964:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1971:16:22","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":4836,"src":"1964:23:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7688,"name":"OutputAmountLessThanSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"1924:28:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":7692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7683,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1878:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1878:111:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7694,"nodeType":"ExpressionStatement","src":"1878:111:22"},{"expression":{"arguments":[{"expression":{"id":7700,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2044:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2048:6:22","memberName":"sender","nodeType":"MemberAccess","src":"2044:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7704,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2064:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$7977","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$7977","typeString":"contract SwapRouterMock"}],"id":7703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2056:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7702,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:22","typeDescriptions":{}}},"id":7705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2056:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7706,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"2071:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2078:8:22","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":4834,"src":"2071:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":7696,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"2011:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2018:7:22","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4824,"src":"2011:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7695,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"1996:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2027:16:22","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":925,"src":"1996:47:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":7708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:91:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7709,"nodeType":"ExpressionStatement","src":"1996:91:22"},{"expression":{"arguments":[{"expression":{"id":7715,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"2138:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2145:9:22","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4830,"src":"2138:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7717,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7620,"src":"2156:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":7711,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7617,"src":"2108:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":7712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2115:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4826,"src":"2108:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7710,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"2093:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:31:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2125:12:22","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":894,"src":"2093:44:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,uint256)"}},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:73:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7719,"nodeType":"ExpressionStatement","src":"2093:73:22"}]},"documentation":{"id":7614,"nodeType":"StructuredDocumentation","src":"1308:38:22","text":" @inheritdoc ISwapRouter"},"functionSelector":"414bf389","id":7721,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"1358:16:22","nodeType":"FunctionDefinition","parameters":{"id":7618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7617,"mutability":"mutable","name":"params","nameLocation":"1407:6:22","nodeType":"VariableDeclaration","scope":7721,"src":"1375:38:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":7616,"nodeType":"UserDefinedTypeName","pathNode":{"id":7615,"name":"ExactInputSingleParams","nameLocations":["1375:22:22"],"nodeType":"IdentifierPath","referencedDeclaration":4839,"src":"1375:22:22"},"referencedDeclaration":4839,"src":"1375:22:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$4839_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"1374:40:22"},"returnParameters":{"id":7621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7620,"mutability":"mutable","name":"amountOut","nameLocation":"1449:9:22","nodeType":"VariableDeclaration","scope":7721,"src":"1441:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7619,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1440:19:22"},"scope":7977,"src":"1349:822:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4894],"body":{"id":7853,"nodeType":"Block","src":"2328:867:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7731,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2342:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2349:9:22","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4876,"src":"2342:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2370:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2362:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7733,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:22","typeDescriptions":{}}},"id":7736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2362:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2342:30:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7738,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7447,"src":"2374:21:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2374:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7730,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2334:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7741,"nodeType":"ExpressionStatement","src":"2334:64:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7743,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2412:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2419:8:22","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":4878,"src":"2412:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":7745,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2431:5:22","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":7746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2437:9:22","memberName":"timestamp","nodeType":"MemberAccess","src":"2431:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:34:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7748,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7441,"src":"2448:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2448:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7742,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2404:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2404:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7751,"nodeType":"ExpressionStatement","src":"2404:64:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7753,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2482:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2489:9:22","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"2482:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2501:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2482:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7757,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7443,"src":"2504:18:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:20:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7752,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2474:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2474:51:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7760,"nodeType":"ExpressionStatement","src":"2474:51:22"},{"assignments":[7762],"declarations":[{"constant":false,"id":7762,"mutability":"mutable","name":"balance","nameLocation":"2539:7:22","nodeType":"VariableDeclaration","scope":7853,"src":"2531:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7761,"name":"uint256","nodeType":"ElementaryTypeName","src":"2531:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7773,"initialValue":{"arguments":[{"arguments":[{"id":7770,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2599:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$7977","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$7977","typeString":"contract SwapRouterMock"}],"id":7769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2591:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7768,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:22","typeDescriptions":{}}},"id":7771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2591:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":7764,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2564:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2571:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"2564:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7763,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"2549:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:31:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2581:9:22","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":776,"src":"2549:41:22","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":7772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:56:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2531:74:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7775,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7762,"src":"2619:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":7776,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2630:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2637:9:22","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"2630:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2619:27:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7780,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7762,"src":"2665:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7781,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2674:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2681:9:22","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"2674:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7779,"name":"NotEnoughBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"2648:16:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":7783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:43:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7774,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2611:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2611:81:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7785,"nodeType":"ExpressionStatement","src":"2611:81:22"},{"assignments":[7787],"declarations":[{"constant":false,"id":7787,"mutability":"mutable","name":"amountInWad","nameLocation":"2707:11:22","nodeType":"VariableDeclaration","scope":7853,"src":"2699:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7786,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7806,"initialValue":{"arguments":[{"baseExpression":{"baseExpression":{"id":7797,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"2786:7:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7800,"indexExpression":{"expression":{"id":7798,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2794:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2801:7:22","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4870,"src":"2794:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2786:23:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7803,"indexExpression":{"expression":{"id":7801,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2810:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2817:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"2810:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2786:40:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7804,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7554,"src":"2834:3:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7788,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2722:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2729:9:22","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"2722:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":7791,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2754:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"2754:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7790,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"2741:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2741:29:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2722:48:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2721:50:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2772:6:22","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"2721:57:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:122:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2699:144:22"},{"expression":{"id":7814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7807,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"2849:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7808,"name":"amountInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7787,"src":"2860:11:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":7810,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2887:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2894:7:22","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4870,"src":"2887:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7809,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7613,"src":"2874:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2860:42:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2849:53:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7815,"nodeType":"ExpressionStatement","src":"2849:53:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7817,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"2916:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":7818,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2928:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2935:15:22","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":4882,"src":"2928:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2916:34:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":7822,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"2979:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7823,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"2989:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2996:15:22","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":4882,"src":"2989:22:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7821,"name":"InputAmountExceedsSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7439,"src":"2952:26:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":7825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:60:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7816,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2908:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2908:105:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7827,"nodeType":"ExpressionStatement","src":"2908:105:22"},{"expression":{"arguments":[{"expression":{"id":7833,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3068:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3072:6:22","memberName":"sender","nodeType":"MemberAccess","src":"3068:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7837,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3088:4:22","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$7977","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$7977","typeString":"contract SwapRouterMock"}],"id":7836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7835,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:22","typeDescriptions":{}}},"id":7838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:13:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7839,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"3095:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":7829,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"3035:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3042:7:22","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":4870,"src":"3035:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7828,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3020:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3020:30:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3051:16:22","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":925,"src":"3020:47:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":7840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3020:84:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7841,"nodeType":"ExpressionStatement","src":"3020:84:22"},{"expression":{"arguments":[{"expression":{"id":7847,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"3155:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3162:9:22","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":4876,"src":"3155:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7849,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"3173:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3180:9:22","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":4880,"src":"3173:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":7843,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"3125:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":7844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3132:8:22","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":4872,"src":"3125:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7842,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3110:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:31:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3142:12:22","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":894,"src":"3110:44:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,uint256)"}},"id":7851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:80:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7852,"nodeType":"ExpressionStatement","src":"3110:80:22"}]},"documentation":{"id":7722,"nodeType":"StructuredDocumentation","src":"2175:38:22","text":" @inheritdoc ISwapRouter"},"functionSelector":"db3e2198","id":7854,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2225:17:22","nodeType":"FunctionDefinition","parameters":{"id":7726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7725,"mutability":"mutable","name":"params","nameLocation":"2276:6:22","nodeType":"VariableDeclaration","scope":7854,"src":"2243:39:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":7724,"nodeType":"UserDefinedTypeName","pathNode":{"id":7723,"name":"ExactOutputSingleParams","nameLocations":["2243:23:22"],"nodeType":"IdentifierPath","referencedDeclaration":4885,"src":"2243:23:22"},"referencedDeclaration":4885,"src":"2243:23:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$4885_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2242:41:22"},"returnParameters":{"id":7729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7728,"mutability":"mutable","name":"amountIn","nameLocation":"2318:8:22","nodeType":"VariableDeclaration","scope":7854,"src":"2310:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7727,"name":"uint256","nodeType":"ElementaryTypeName","src":"2310:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2309:18:22"},"scope":7977,"src":"2216:979:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":7889,"nodeType":"Block","src":"3257:166:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7862,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7856,"src":"3271:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3288:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3280:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7863,"name":"address","nodeType":"ElementaryTypeName","src":"3280:7:22","typeDescriptions":{}}},"id":7866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3280:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3271:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7868,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"3292:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3292:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7861,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3263:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3263:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7871,"nodeType":"ExpressionStatement","src":"3263:49:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7873,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"3326:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3335:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3326:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7876,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"3338:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7872,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3318:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:40:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7879,"nodeType":"ExpressionStatement","src":"3318:40:22"},{"expression":{"arguments":[{"expression":{"id":7884,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3399:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3403:6:22","memberName":"sender","nodeType":"MemberAccess","src":"3399:10:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7886,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7858,"src":"3411:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7881,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7856,"src":"3379:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7880,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"3364:14:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$845_$","typeString":"type(contract IERC20Metadata)"}},"id":7882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$845","typeString":"contract IERC20Metadata"}},"id":7883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3386:12:22","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":894,"src":"3364:34:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$819_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$819_$","typeString":"function (contract IERC20,address,uint256)"}},"id":7887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:54:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7888,"nodeType":"ExpressionStatement","src":"3364:54:22"}]},"functionSelector":"f3fef3a3","id":7890,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"3208:8:22","nodeType":"FunctionDefinition","parameters":{"id":7859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7856,"mutability":"mutable","name":"token","nameLocation":"3225:5:22","nodeType":"VariableDeclaration","scope":7890,"src":"3217:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7855,"name":"address","nodeType":"ElementaryTypeName","src":"3217:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7858,"mutability":"mutable","name":"amount","nameLocation":"3240:6:22","nodeType":"VariableDeclaration","scope":7890,"src":"3232:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7857,"name":"uint256","nodeType":"ElementaryTypeName","src":"3232:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3216:31:22"},"returnParameters":{"id":7860,"nodeType":"ParameterList","parameters":[],"src":"3257:0:22"},"scope":7977,"src":"3199:224:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":7935,"nodeType":"Block","src":"3512:211:22","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7900,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"3526:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3545:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3537:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7901,"name":"address","nodeType":"ElementaryTypeName","src":"3537:7:22","typeDescriptions":{}}},"id":7904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3526:21:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7906,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"3549:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3549:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7899,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3518:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3518:51:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7909,"nodeType":"ExpressionStatement","src":"3518:51:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7911,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7894,"src":"3583:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3603:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3595:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7912,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:22","typeDescriptions":{}}},"id":7915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3595:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3583:22:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7917,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7445,"src":"3607:17:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:19:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":7910,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3575:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":7919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3575:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7920,"nodeType":"ExpressionStatement","src":"3575:52:22"},{"expression":{"id":7927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7921,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7576,"src":"3633:7:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7924,"indexExpression":{"id":7922,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"3641:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3633:16:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7925,"indexExpression":{"id":7923,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7894,"src":"3650:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3633:26:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7926,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7896,"src":"3662:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:35:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7928,"nodeType":"ExpressionStatement","src":"3633:35:22"},{"eventCall":{"arguments":[{"id":7930,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7892,"src":"3692:7:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7931,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7894,"src":"3701:8:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7932,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7896,"src":"3711:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7929,"name":"PriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7564,"src":"3679:12:22","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3679:39:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7934,"nodeType":"EmitStatement","src":"3674:44:22"}]},"functionSelector":"4562e015","id":7936,"implemented":true,"kind":"function","modifiers":[],"name":"setCurrentPrice","nameLocation":"3436:15:22","nodeType":"FunctionDefinition","parameters":{"id":7897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7892,"mutability":"mutable","name":"tokenIn","nameLocation":"3460:7:22","nodeType":"VariableDeclaration","scope":7936,"src":"3452:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7891,"name":"address","nodeType":"ElementaryTypeName","src":"3452:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7894,"mutability":"mutable","name":"tokenOut","nameLocation":"3477:8:22","nodeType":"VariableDeclaration","scope":7936,"src":"3469:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7893,"name":"address","nodeType":"ElementaryTypeName","src":"3469:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7896,"mutability":"mutable","name":"price_","nameLocation":"3495:6:22","nodeType":"VariableDeclaration","scope":7936,"src":"3487:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7895,"name":"uint256","nodeType":"ElementaryTypeName","src":"3487:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3451:51:22"},"returnParameters":{"id":7898,"nodeType":"ParameterList","parameters":[],"src":"3512:0:22"},"scope":7977,"src":"3427:296:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4914],"body":{"id":7948,"nodeType":"Block","src":"3898:34:22","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7945,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"3911:14:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3911:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7947,"nodeType":"RevertStatement","src":"3904:23:22"}]},"documentation":{"id":7937,"nodeType":"StructuredDocumentation","src":"3727:84:22","text":" @inheritdoc ISwapRouter\n @notice This function is not implemented"},"functionSelector":"f28c0498","id":7949,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"3823:11:22","nodeType":"FunctionDefinition","parameters":{"id":7941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7940,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7949,"src":"3835:26:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$4905_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":7939,"nodeType":"UserDefinedTypeName","pathNode":{"id":7938,"name":"ExactOutputParams","nameLocations":["3835:17:22"],"nodeType":"IdentifierPath","referencedDeclaration":4905,"src":"3835:17:22"},"referencedDeclaration":4905,"src":"3835:17:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$4905_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"3834:28:22"},"returnParameters":{"id":7944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7949,"src":"3889:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7942,"name":"uint256","nodeType":"ElementaryTypeName","src":"3889:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3888:9:22"},"scope":7977,"src":"3814:118:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4868],"body":{"id":7961,"nodeType":"Block","src":"4105:34:22","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7958,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4118:14:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7960,"nodeType":"RevertStatement","src":"4111:23:22"}]},"documentation":{"id":7950,"nodeType":"StructuredDocumentation","src":"3936:84:22","text":" @inheritdoc ISwapRouter\n @notice This function is not implemented"},"functionSelector":"c04b8d59","id":7962,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"4032:10:22","nodeType":"FunctionDefinition","parameters":{"id":7954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7962,"src":"4043:25:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$4859_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":7952,"nodeType":"UserDefinedTypeName","pathNode":{"id":7951,"name":"ExactInputParams","nameLocations":["4043:16:22"],"nodeType":"IdentifierPath","referencedDeclaration":4859,"src":"4043:16:22"},"referencedDeclaration":4859,"src":"4043:16:22","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$4859_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"4042:27:22"},"returnParameters":{"id":7957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7956,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7962,"src":"4096:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7955,"name":"uint256","nodeType":"ElementaryTypeName","src":"4096:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4095:9:22"},"scope":7977,"src":"4023:116:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[4814],"body":{"id":7975,"nodeType":"Block","src":"4278:34:22","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7972,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7449,"src":"4291:14:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7974,"nodeType":"RevertStatement","src":"4284:23:22"}]},"documentation":{"id":7963,"nodeType":"StructuredDocumentation","src":"4143:55:22","text":" @notice This function is not implemented"},"functionSelector":"fa461e33","id":7976,"implemented":true,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"4210:21:22","nodeType":"FunctionDefinition","parameters":{"id":7970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7976,"src":"4232:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7964,"name":"int256","nodeType":"ElementaryTypeName","src":"4232:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7976,"src":"4240:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7966,"name":"int256","nodeType":"ElementaryTypeName","src":"4240:6:22","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7976,"src":"4248:14:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7968,"name":"bytes","nodeType":"ElementaryTypeName","src":"4248:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4231:32:22"},"returnParameters":{"id":7971,"nodeType":"ParameterList","parameters":[],"src":"4278:0:22"},"scope":7977,"src":"4201:111:22","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":7978,"src":"661:3653:22","usedErrors":[857,7433,7439,7441,7443,7445,7447,7449,7556,7570],"usedEvents":[7564]}],"src":"39:4276:22"},"id":22},"project/contracts/mocks/SwapTesterMock.sol":{"ast":{"absolutePath":"project/contracts/mocks/SwapTesterMock.sol","exportedSymbols":{"SwapLibrary":[7143],"SwapTesterMock":[8064]},"id":8065,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":7979,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:23"},{"absolutePath":"project/contracts/SwapLibrary.sol","file":"./../SwapLibrary.sol","id":7981,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8065,"sourceUnit":7144,"src":"64:49:23","symbolAliases":[{"foreign":{"id":7980,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"72:11:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SwapTesterMock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8064,"linearizedBaseContracts":[8064],"name":"SwapTesterMock","nameLocation":"124:14:23","nodeType":"ContractDefinition","nodes":[{"global":false,"id":7985,"libraryName":{"id":7982,"name":"SwapLibrary","nameLocations":["149:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":7143,"src":"149:11:23"},"nodeType":"UsingForDirective","src":"143:45:23","typeName":{"id":7984,"nodeType":"UserDefinedTypeName","pathNode":{"id":7983,"name":"SwapLibrary.SwapConfig","nameLocations":["165:11:23","177:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"165:22:23"},"referencedDeclaration":6377,"src":"165:22:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"anonymous":false,"eventSelector":"59fbbb51cc726a41bc000734e10c34b705550e4d5c75611780ec30c767064e48","id":7989,"name":"ExactInputResult","nameLocation":"198:16:23","nodeType":"EventDefinition","parameters":{"id":7988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7987,"indexed":false,"mutability":"mutable","name":"input","nameLocation":"223:5:23","nodeType":"VariableDeclaration","scope":7989,"src":"215:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7986,"name":"uint256","nodeType":"ElementaryTypeName","src":"215:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"214:15:23"},"src":"192:38:23"},{"anonymous":false,"eventSelector":"7d1251252437180878066577dd1c280db8feb2152d57a044f147003bd04ba4eb","id":7993,"name":"ExactOutputResult","nameLocation":"239:17:23","nodeType":"EventDefinition","parameters":{"id":7992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7991,"indexed":false,"mutability":"mutable","name":"output","nameLocation":"265:6:23","nodeType":"VariableDeclaration","scope":7993,"src":"257:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7990,"name":"uint256","nodeType":"ElementaryTypeName","src":"257:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"256:16:23"},"src":"233:40:23"},{"body":{"id":8021,"nodeType":"Block","src":"455:112:23","statements":[{"assignments":[8008],"declarations":[{"constant":false,"id":8008,"mutability":"mutable","name":"ret","nameLocation":"469:3:23","nodeType":"VariableDeclaration","scope":8021,"src":"461:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8007,"name":"uint256","nodeType":"ElementaryTypeName","src":"461:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8016,"initialValue":{"arguments":[{"id":8011,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7998,"src":"497:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8012,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"506:8:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8013,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8002,"src":"516:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8014,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8004,"src":"524:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8009,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7996,"src":"475:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":8010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"486:10:23","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":6547,"src":"475:21:23","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$6377_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$6377_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":8015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"475:55:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"461:69:23"},{"eventCall":{"arguments":[{"id":8018,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8008,"src":"558:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8017,"name":"ExactInputResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7989,"src":"541:16:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"541:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8020,"nodeType":"EmitStatement","src":"536:26:23"}]},"functionSelector":"1922e4d7","id":8022,"implemented":true,"kind":"function","modifiers":[],"name":"executeExactInput","nameLocation":"286:17:23","nodeType":"FunctionDefinition","parameters":{"id":8005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7996,"mutability":"mutable","name":"swapConfig","nameLocation":"341:10:23","nodeType":"VariableDeclaration","scope":8022,"src":"309:42:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":7995,"nodeType":"UserDefinedTypeName","pathNode":{"id":7994,"name":"SwapLibrary.SwapConfig","nameLocations":["309:11:23","321:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"309:22:23"},"referencedDeclaration":6377,"src":"309:22:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":7998,"mutability":"mutable","name":"tokenIn","nameLocation":"365:7:23","nodeType":"VariableDeclaration","scope":8022,"src":"357:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7997,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8000,"mutability":"mutable","name":"tokenOut","nameLocation":"386:8:23","nodeType":"VariableDeclaration","scope":8022,"src":"378:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7999,"name":"address","nodeType":"ElementaryTypeName","src":"378:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8002,"mutability":"mutable","name":"amount","nameLocation":"408:6:23","nodeType":"VariableDeclaration","scope":8022,"src":"400:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8001,"name":"uint256","nodeType":"ElementaryTypeName","src":"400:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8004,"mutability":"mutable","name":"price","nameLocation":"428:5:23","nodeType":"VariableDeclaration","scope":8022,"src":"420:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8003,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"303:134:23"},"returnParameters":{"id":8006,"nodeType":"ParameterList","parameters":[],"src":"455:0:23"},"scope":8064,"src":"277:290:23","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":8050,"nodeType":"Block","src":"750:114:23","statements":[{"assignments":[8037],"declarations":[{"constant":false,"id":8037,"mutability":"mutable","name":"ret","nameLocation":"764:3:23","nodeType":"VariableDeclaration","scope":8050,"src":"756:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8036,"name":"uint256","nodeType":"ElementaryTypeName","src":"756:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8045,"initialValue":{"arguments":[{"id":8040,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8027,"src":"793:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8041,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8029,"src":"802:8:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8042,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8031,"src":"812:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8043,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8033,"src":"820:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8038,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8025,"src":"770:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":8039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"781:11:23","memberName":"exactOutput","nodeType":"MemberAccess","referencedDeclaration":6597,"src":"770:22:23","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$6377_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$6377_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"770:56:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"756:70:23"},{"eventCall":{"arguments":[{"id":8047,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8037,"src":"855:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8046,"name":"ExactOutputResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7993,"src":"837:17:23","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":8048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"837:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8049,"nodeType":"EmitStatement","src":"832:27:23"}]},"functionSelector":"178fc642","id":8051,"implemented":true,"kind":"function","modifiers":[],"name":"executeExactOutput","nameLocation":"580:18:23","nodeType":"FunctionDefinition","parameters":{"id":8034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8025,"mutability":"mutable","name":"swapConfig","nameLocation":"636:10:23","nodeType":"VariableDeclaration","scope":8051,"src":"604:42:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":8024,"nodeType":"UserDefinedTypeName","pathNode":{"id":8023,"name":"SwapLibrary.SwapConfig","nameLocations":["604:11:23","616:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"604:22:23"},"referencedDeclaration":6377,"src":"604:22:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":8027,"mutability":"mutable","name":"tokenIn","nameLocation":"660:7:23","nodeType":"VariableDeclaration","scope":8051,"src":"652:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8026,"name":"address","nodeType":"ElementaryTypeName","src":"652:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8029,"mutability":"mutable","name":"tokenOut","nameLocation":"681:8:23","nodeType":"VariableDeclaration","scope":8051,"src":"673:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8028,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8031,"mutability":"mutable","name":"amount","nameLocation":"703:6:23","nodeType":"VariableDeclaration","scope":8051,"src":"695:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8030,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8033,"mutability":"mutable","name":"price","nameLocation":"723:5:23","nodeType":"VariableDeclaration","scope":8051,"src":"715:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8032,"name":"uint256","nodeType":"ElementaryTypeName","src":"715:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"598:134:23"},"returnParameters":{"id":8035,"nodeType":"ParameterList","parameters":[],"src":"750:0:23"},"scope":8064,"src":"571:293:23","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":8062,"nodeType":"Block","src":"953:32:23","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8057,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8054,"src":"959:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":8059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:8:23","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":6477,"src":"959:19:23","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$6377_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$6377_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":8060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8061,"nodeType":"ExpressionStatement","src":"959:21:23"}]},"functionSelector":"d74018a7","id":8063,"implemented":true,"kind":"function","modifiers":[],"name":"validateConfig","nameLocation":"877:14:23","nodeType":"FunctionDefinition","parameters":{"id":8055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8054,"mutability":"mutable","name":"swapConfig","nameLocation":"924:10:23","nodeType":"VariableDeclaration","scope":8063,"src":"892:42:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":8053,"nodeType":"UserDefinedTypeName","pathNode":{"id":8052,"name":"SwapLibrary.SwapConfig","nameLocations":["892:11:23","904:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":6377,"src":"892:22:23"},"referencedDeclaration":6377,"src":"892:22:23","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$6377_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"891:44:23"},"returnParameters":{"id":8056,"nodeType":"ParameterList","parameters":[],"src":"953:0:23"},"scope":8064,"src":"868:117:23","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":8065,"src":"115:872:23","usedErrors":[],"usedEvents":[7989,7993]}],"src":"39:949:23"},"id":23},"project/contracts/mocks/TestCurrency.sol":{"ast":{"absolutePath":"project/contracts/mocks/TestCurrency.sol","exportedSymbols":{"ERC20":[741],"TestCurrency":[8115]},"id":8116,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":8066,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:24"},{"absolutePath":"npm/@openzeppelin/contracts@5.5.0/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":8068,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8116,"sourceUnit":742,"src":"63:68:24","symbolAliases":[{"foreign":{"id":8067,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"71:5:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8069,"name":"ERC20","nameLocations":["158:5:24"],"nodeType":"IdentifierPath","referencedDeclaration":741,"src":"158:5:24"},"id":8070,"nodeType":"InheritanceSpecifier","src":"158:5:24"}],"canonicalName":"TestCurrency","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8115,"linearizedBaseContracts":[8115,741,131,845,819,1330],"name":"TestCurrency","nameLocation":"142:12:24","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8072,"mutability":"mutable","name":"_owner","nameLocation":"184:6:24","nodeType":"VariableDeclaration","scope":8115,"src":"168:22:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8071,"name":"address","nodeType":"ElementaryTypeName","src":"168:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":8074,"mutability":"immutable","name":"_decimals","nameLocation":"219:9:24","nodeType":"VariableDeclaration","scope":8115,"src":"194:34:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8073,"name":"uint8","nodeType":"ElementaryTypeName","src":"194:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"body":{"id":8104,"nodeType":"Block","src":"371:95:24","statements":[{"expression":{"id":8092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8089,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8072,"src":"377:6:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8090,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"386:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"390:6:24","memberName":"sender","nodeType":"MemberAccess","src":"386:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"377:19:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8093,"nodeType":"ExpressionStatement","src":"377:19:24"},{"expression":{"id":8096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8094,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8074,"src":"402:9:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8095,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"414:9:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"402:21:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":8097,"nodeType":"ExpressionStatement","src":"402:21:24"},{"expression":{"arguments":[{"expression":{"id":8099,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"435:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"439:6:24","memberName":"sender","nodeType":"MemberAccess","src":"435:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8101,"name":"initialSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8080,"src":"447:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8098,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"429:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"429:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8103,"nodeType":"ExpressionStatement","src":"429:32:24"}]},"id":8105,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8085,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8076,"src":"355:5:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":8086,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8078,"src":"362:7:24","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":8087,"kind":"baseConstructorSpecifier","modifierName":{"id":8084,"name":"ERC20","nameLocations":["349:5:24"],"nodeType":"IdentifierPath","referencedDeclaration":741,"src":"349:5:24"},"nodeType":"ModifierInvocation","src":"349:21:24"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8076,"mutability":"mutable","name":"name_","nameLocation":"264:5:24","nodeType":"VariableDeclaration","scope":8105,"src":"250:19:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8075,"name":"string","nodeType":"ElementaryTypeName","src":"250:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8078,"mutability":"mutable","name":"symbol_","nameLocation":"289:7:24","nodeType":"VariableDeclaration","scope":8105,"src":"275:21:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8077,"name":"string","nodeType":"ElementaryTypeName","src":"275:6:24","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8080,"mutability":"mutable","name":"initialSupply","nameLocation":"310:13:24","nodeType":"VariableDeclaration","scope":8105,"src":"302:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8079,"name":"uint256","nodeType":"ElementaryTypeName","src":"302:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8082,"mutability":"mutable","name":"decimals_","nameLocation":"335:9:24","nodeType":"VariableDeclaration","scope":8105,"src":"329:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8081,"name":"uint8","nodeType":"ElementaryTypeName","src":"329:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"244:104:24"},"returnParameters":{"id":8088,"nodeType":"ParameterList","parameters":[],"src":"371:0:24"},"scope":8115,"src":"233:233:24","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[305],"body":{"id":8113,"nodeType":"Block","src":"535:27:24","statements":[{"expression":{"id":8111,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8074,"src":"548:9:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":8110,"id":8112,"nodeType":"Return","src":"541:16:24"}]},"functionSelector":"313ce567","id":8114,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"479:8:24","nodeType":"FunctionDefinition","overrides":{"id":8107,"nodeType":"OverrideSpecifier","overrides":[],"src":"510:8:24"},"parameters":{"id":8106,"nodeType":"ParameterList","parameters":[],"src":"487:2:24"},"returnParameters":{"id":8110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8109,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8114,"src":"528:5:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8108,"name":"uint8","nodeType":"ElementaryTypeName","src":"528:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"527:7:24"},"scope":8115,"src":"470:92:24","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":8116,"src":"133:431:24","usedErrors":[101,106,111,120,125,130],"usedEvents":[753,762]}],"src":"38:527:24"},"id":24}}}}