{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeERC20Withdrawal","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l1Usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"l2TokenBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"l2Usdc","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"ERC20DepositInitiated","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20WithdrawalFinalized","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061113d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638f601f6611610076578063a1b4bc041161005b578063a1b4bc0414610191578063a9f9e675146101b1578063c89701a2146101c457600080fd5b80638f601f661461013a57806391c49bf81461017357600080fd5b80633cb747bf146100a8578063540abf73146100f257806356c3b587146101075780638708762314610127575b600080fd5b6000546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610105610100366004610d28565b6101e4565b005b6002546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b610105610135366004610dbe565b6101fd565b610165610148366004610e41565b600460209081526000928352604080842090915290825290205481565b6040519081526020016100e9565b60015473ffffffffffffffffffffffffffffffffffffffff166100c8565b6003546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b6101056101bf366004610e7a565b6102a9565b6001546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b6101f4878733888888888861064b565b50505050505050565b333b15610291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6102a1868633338888888861064b565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801561037e5750600154600054604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190610ef3565b73ffffffffffffffffffffffffffffffffffffffff16145b610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a401610288565b600254879073ffffffffffffffffffffffffffffffffffffffff8083169116146104b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610288565b600354879073ffffffffffffffffffffffffffffffffffffffff80831691161461053c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610288565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600460209081526040808320938c168352929052205461057a908690610f3f565b73ffffffffffffffffffffffffffffffffffffffff808b166000818152600460209081526040808320948e16835293905291909120919091556105be908787610990565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3898989896040516106389493929190610f9f565b60405180910390a4505050505050505050565b600254889073ffffffffffffffffffffffffffffffffffffffff8083169116146106d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610288565b600354889073ffffffffffffffffffffffffffffffffffffffff808316911614610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610288565b61077973ffffffffffffffffffffffffffffffffffffffff8b16893089610a16565b73ffffffffffffffffffffffffffffffffffffffff808b166000908152600460209081526040808320938d16835292905220546107b7908790610fd5565b73ffffffffffffffffffffffffffffffffffffffff808c1660009081526004602090815260408083208e851684529091528082209390935554600154925190821692633dbb202b9216907f662a633a000000000000000000000000000000000000000000000000000000009061083d908f908f908f908f908f908e908e90602401610fed565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526108d092918a90600401611076565b600060405180830381600087803b1580156108ea57600080fd5b505af11580156108fe573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a898960405161097c9493929190610f9f565b60405180910390a450505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a1191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a62565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a5c9186918216906323b872dd906084016109ca565b50505050565b6000610a8473ffffffffffffffffffffffffffffffffffffffff841683610af8565b90508051600014158015610aa9575080806020019051810190610aa791906110f2565b155b15610a11576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610288565b6060610b0683836000610b0d565b9392505050565b606081471015610b4b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610288565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610b749190611114565b60006040518083038185875af1925050503d8060008114610bb1576040519150601f19603f3d011682016040523d82523d6000602084013e610bb6565b606091505b5091509150610bc6868383610bd0565b9695505050505050565b606082610be557610be082610c5f565b610b06565b8151158015610c09575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610c58576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610288565b5080610b06565b805115610c6f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff81168114610ca157600080fd5b803563ffffffff81168114610cda57600080fd5b919050565b60008083601f840112610cf157600080fd5b50813567ffffffffffffffff811115610d0957600080fd5b602083019150836020828501011115610d2157600080fd5b9250929050565b600080600080600080600060c0888a031215610d4357600080fd5b8735610d4e81610ca4565b96506020880135610d5e81610ca4565b95506040880135610d6e81610ca4565b945060608801359350610d8360808901610cc6565b925060a088013567ffffffffffffffff811115610d9f57600080fd5b610dab8a828b01610cdf565b989b979a50959850939692959293505050565b60008060008060008060a08789031215610dd757600080fd5b8635610de281610ca4565b95506020870135610df281610ca4565b945060408701359350610e0760608801610cc6565b9250608087013567ffffffffffffffff811115610e2357600080fd5b610e2f89828a01610cdf565b979a9699509497509295939492505050565b60008060408385031215610e5457600080fd5b8235610e5f81610ca4565b91506020830135610e6f81610ca4565b809150509250929050565b600080600080600080600060c0888a031215610e9557600080fd5b8735610ea081610ca4565b96506020880135610eb081610ca4565b95506040880135610ec081610ca4565b94506060880135610ed081610ca4565b93506080880135925060a088013567ffffffffffffffff811115610d9f57600080fd5b600060208284031215610f0557600080fd5b8151610b0681610ca4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610f5157610f51610f10565b500390565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610bc6606083018486610f56565b60008219821115610fe857610fe8610f10565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261103d60c083018486610f56565b9998505050505050505050565b60005b8381101561106557818101518382015260200161104d565b83811115610a5c5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083518060608401526110b181608085016020880161104a565b63ffffffff93909316604083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160800192915050565b60006020828403121561110457600080fd5b81518015158114610b0657600080fd5b6000825161112681846020870161104a565b919091019291505056fea164736f6c634300080f000a","sourceMap":"735:6954:262:-:0;;;1654:17;;;;;;;;;;735:6954;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80638f601f6611610076578063a1b4bc041161005b578063a1b4bc0414610191578063a9f9e675146101b1578063c89701a2146101c457600080fd5b80638f601f661461013a57806391c49bf81461017357600080fd5b80633cb747bf146100a8578063540abf73146100f257806356c3b587146101075780638708762314610127575b600080fd5b6000546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610105610100366004610d28565b6101e4565b005b6002546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b610105610135366004610dbe565b6101fd565b610165610148366004610e41565b600460209081526000928352604080842090915290825290205481565b6040519081526020016100e9565b60015473ffffffffffffffffffffffffffffffffffffffff166100c8565b6003546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b6101056101bf366004610e7a565b6102a9565b6001546100c89073ffffffffffffffffffffffffffffffffffffffff1681565b6101f4878733888888888861064b565b50505050505050565b333b15610291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6102a1868633338888888861064b565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801561037e5750600154600054604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691636e296e45916004808201926020929091908290030181865afa158015610342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103669190610ef3565b73ffffffffffffffffffffffffffffffffffffffff16145b610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a401610288565b600254879073ffffffffffffffffffffffffffffffffffffffff8083169116146104b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610288565b600354879073ffffffffffffffffffffffffffffffffffffffff80831691161461053c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610288565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600460209081526040808320938c168352929052205461057a908690610f3f565b73ffffffffffffffffffffffffffffffffffffffff808b166000818152600460209081526040808320948e16835293905291909120919091556105be908787610990565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3898989896040516106389493929190610f9f565b60405180910390a4505050505050505050565b600254889073ffffffffffffffffffffffffffffffffffffffff8083169116146106d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3120757364630000000000000000000000000000000000000000006044820152606401610288565b600354889073ffffffffffffffffffffffffffffffffffffffff808316911614610757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e6f74204c3220757364630000000000000000000000000000000000000000006044820152606401610288565b61077973ffffffffffffffffffffffffffffffffffffffff8b16893089610a16565b73ffffffffffffffffffffffffffffffffffffffff808b166000908152600460209081526040808320938d16835292905220546107b7908790610fd5565b73ffffffffffffffffffffffffffffffffffffffff808c1660009081526004602090815260408083208e851684529091528082209390935554600154925190821692633dbb202b9216907f662a633a000000000000000000000000000000000000000000000000000000009061083d908f908f908f908f908f908e908e90602401610fed565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526108d092918a90600401611076565b600060405180830381600087803b1580156108ea57600080fd5b505af11580156108fe573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a898960405161097c9493929190610f9f565b60405180910390a450505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a1191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610a62565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a5c9186918216906323b872dd906084016109ca565b50505050565b6000610a8473ffffffffffffffffffffffffffffffffffffffff841683610af8565b90508051600014158015610aa9575080806020019051810190610aa791906110f2565b155b15610a11576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610288565b6060610b0683836000610b0d565b9392505050565b606081471015610b4b576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610288565b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051610b749190611114565b60006040518083038185875af1925050503d8060008114610bb1576040519150601f19603f3d011682016040523d82523d6000602084013e610bb6565b606091505b5091509150610bc6868383610bd0565b9695505050505050565b606082610be557610be082610c5f565b610b06565b8151158015610c09575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610c58576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610288565b5080610b06565b805115610c6f5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff81168114610ca157600080fd5b803563ffffffff81168114610cda57600080fd5b919050565b60008083601f840112610cf157600080fd5b50813567ffffffffffffffff811115610d0957600080fd5b602083019150836020828501011115610d2157600080fd5b9250929050565b600080600080600080600060c0888a031215610d4357600080fd5b8735610d4e81610ca4565b96506020880135610d5e81610ca4565b95506040880135610d6e81610ca4565b945060608801359350610d8360808901610cc6565b925060a088013567ffffffffffffffff811115610d9f57600080fd5b610dab8a828b01610cdf565b989b979a50959850939692959293505050565b60008060008060008060a08789031215610dd757600080fd5b8635610de281610ca4565b95506020870135610df281610ca4565b945060408701359350610e0760608801610cc6565b9250608087013567ffffffffffffffff811115610e2357600080fd5b610e2f89828a01610cdf565b979a9699509497509295939492505050565b60008060408385031215610e5457600080fd5b8235610e5f81610ca4565b91506020830135610e6f81610ca4565b809150509250929050565b600080600080600080600060c0888a031215610e9557600080fd5b8735610ea081610ca4565b96506020880135610eb081610ca4565b95506040880135610ec081610ca4565b94506060880135610ed081610ca4565b93506080880135925060a088013567ffffffffffffffff811115610d9f57600080fd5b600060208284031215610f0557600080fd5b8151610b0681610ca4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610f5157610f51610f10565b500390565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610bc6606083018486610f56565b60008219821115610fe857610fe8610f10565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261103d60c083018486610f56565b9998505050505050505050565b60005b8381101561106557818101518382015260200161104d565b83811115610a5c5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083518060608401526110b181608085016020880161104a565b63ffffffff93909316604083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160800192915050565b60006020828403121561110457600080fd5b81518015158114610b0657600080fd5b6000825161112681846020870161104a565b919091019291505056fea164736f6c634300080f000a","sourceMap":"735:6954:262:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;94:24:266;;;;;;;;;;;;190:42:416;178:55;;;160:74;;148:2;133:18;94:24:266;;;;;;;;4696:338:262;;;;;;:::i;:::-;;:::i;:::-;;156:21:266;;;;;;;;;3644:338:262;;;;;;:::i;:::-;;:::i;201:63:264:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;3269:25:416;;;3257:2;3242:18;201:63:264;3123:177:416;6220:101:262;6302:11;;;;6220:101;;183:21:266;;;;;;;;;5499:529:262;;;;;;:::i;:::-;;:::i;124:26:266:-;;;;;;;;;4696:338:262;4934:93;4956:8;4966;4976:10;4988:3;4993:7;5002:12;5016:10;;4934:21;:93::i;:::-;4696:338;;;;;;;:::o;3644:::-;1186:10;1465:19:265;:23;1158:99:262;;;;;;;4550:2:416;1158:99:262;;;4532:21:416;4589:2;4569:18;;;4562:30;4628:34;4608:18;;;4601:62;4699:25;4679:18;;;4672:53;4742:19;;1158:99:262;;;;;;;;;3875:100:::1;3897:8;3907;3917:10;3929;3941:7;3950:12;3964:10;;3875:21;:100::i;:::-;3644:338:::0;;;;;;:::o;5499:529::-;1456:9;;;;1442:10;:23;:97;;;;-1:-1:-1;1528:11:262;;;1491:9;1469:55;;;;;;;;1528:11;;;;;1491:9;;;;1469:53;;:55;;;;;;;;;;;;;;;1491:9;1469:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;;;1442:97;1421:209;;;;;;;5230:2:416;1421:209:262;;;5212:21:416;5269:2;5249:18;;;5242:30;5308:34;5288:18;;;5281:62;5379:34;5359:18;;;5352:62;5451:3;5430:19;;;5423:32;5472:19;;1421:209:262;5028:469:416;1421:209:262;273:6:266::1;::::0;5754:8:262;;273:6:266::1;264:15:::0;;::::1;273:6:::0;::::1;264:15;256:39;;;::::0;::::1;::::0;;5704:2:416;256:39:266::1;::::0;::::1;5686:21:416::0;5743:2;5723:18;;;5716:30;5782:13;5762:18;;;5755:41;5813:18;;256:39:266::1;5502:335:416::0;256:39:266::1;381:6:::2;::::0;5783:8:262;;381:6:266::2;372:15:::0;;::::2;381:6:::0;::::2;372:15;364:39;;;::::0;::::2;::::0;;6044:2:416;364:39:266::2;::::0;::::2;6026:21:416::0;6083:2;6063:18;;;6056:30;6122:13;6102:18;;;6095:41;6153:18;;364:39:266::2;5842:335:416::0;364:39:266::2;5838:18:262::3;::::0;;::::3;;::::0;;;:8:::3;:18;::::0;;;;;;;:28;;::::3;::::0;;;;;;;:38:::3;::::0;5869:7;;5838:38:::3;:::i;:::-;5807:18;::::0;;::::3;;::::0;;;:8:::3;:18;::::0;;;;;;;:28;;::::3;::::0;;;;;;;;;:69;;;;5886:43:::3;::::0;5916:3;5921:7;5886:29:::3;:43::i;:::-;5989:5;5944:77;;5979:8;5944:77;;5969:8;5944:77;;;5996:3;6001:7;6010:10;;5944:77;;;;;;;;;:::i;:::-;;;;;;;;305:1:266::2;1640::262::1;5499:529:::0;;;;;;;:::o;6862:825::-;273:6:266;;7120:8:262;;273:6:266;264:15;;;273:6;;264:15;256:39;;;;;;;5704:2:416;256:39:266;;;5686:21:416;5743:2;5723:18;;;5716:30;5782:13;5762:18;;;5755:41;5813:18;;256:39:266;5502:335:416;256:39:266;381:6:::1;::::0;7149:8:262;;381:6:266::1;372:15:::0;;::::1;381:6:::0;::::1;372:15;364:39;;;::::0;::::1;::::0;;6044:2:416;364:39:266::1;::::0;::::1;6026:21:416::0;6083:2;6063:18;;;6056:30;6122:13;6102:18;;;6095:41;6153:18;;364:39:266::1;5842:335:416::0;364:39:266::1;7173:64:262::2;:33;::::0;::::2;7207:5:::0;7222:4:::2;7229:7:::0;7173:33:::2;:64::i;:::-;7278:18;::::0;;::::2;;::::0;;;:8:::2;:18;::::0;;;;;;;:28;;::::2;::::0;;;;;;;:38:::2;::::0;7309:7;;7278:38:::2;:::i;:::-;7247:18;::::0;;::::2;;::::0;;;:8:::2;:18;::::0;;;;;;;:28;;::::2;::::0;;;;;;;;:69;;;;7349:9;;7385:11;7410:145;;7349:9;;::::2;::::0;7327:44:::2;::::0;7385:11:::2;::::0;7450:38;;7410:145:::2;::::0;7256:8;;7266;;7510:5;;7517:3;;7522:7;;7531:10;;;;7410:145:::2;;;:::i;:::-;;::::0;;;;;::::2;::::0;;;;;;::::2;::::0;::::2;::::0;;::::2;;::::0;;;::::2;;::::0;;7327:264;::::2;::::0;;;;;;;;::::2;::::0;;7569:12;;7327:264:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;7648:5;7606:74;;7638:8;7606:74;;7628:8;7606:74;;;7655:3;7660:7;7669:10;;7606:74;;;;;;;;;:::i;:::-;;;;;;;;305:1:266::1;6862:825:262::0;;;;;;;;;:::o;1282:160:260:-;1391:43;;1406:14;9217:55:416;;;1391:43:260;;;9199:74:416;9289:18;;;9282:34;;;1364:71:260;;1384:5;;1406:14;;;;;9172:18:416;;1391:43:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:19;:71::i;:::-;1282:160;;;:::o;1681:188::-;1808:53;;1823:18;9608:15:416;;;1808:53:260;;;9590:34:416;9660:15;;;9640:18;;;9633:43;9692:18;;;9685:34;;;1781:81:260;;1801:5;;1823:18;;;;;9502::416;;1808:53:260;9327:398:416;1781:81:260;1681:188;;;;:::o;4038:629::-;4457:23;4483:33;:27;;;4511:4;4483:27;:33::i;:::-;4457:59;;4530:10;:17;4551:1;4530:22;;:57;;;;;4568:10;4557:30;;;;;;;;;;;;:::i;:::-;4556:31;4530:57;4526:135;;;4610:40;;;;;190:42:416;178:55;;4610:40:260;;;160:74:416;133:18;;4610:40:260;14:226:416;2719:151:253;2794:12;2825:38;2847:6;2855:4;2861:1;2825:21;:38::i;:::-;2818:45;2719:151;-1:-1:-1;;;2719:151:253:o;3194:394::-;3293:12;3345:5;3321:21;:29;3317:108;;;3373:41;;;;;3408:4;3373:41;;;160:74:416;133:18;;3373:41:253;14:226:416;3317:108:253;3435:12;3449:23;3476:6;:11;;3496:5;3504:4;3476:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3434:75;;;;3526:55;3553:6;3561:7;3570:10;3526:26;:55::i;:::-;3519:62;3194:394;-1:-1:-1;;;;;;3194:394:253:o;4641:610::-;4809:12;4842:7;4837:408;;4865:19;4873:10;4865:7;:19::i;:::-;4837:408;;;5089:17;;:22;:49;;;;-1:-1:-1;5115:18:253;;;;:23;5089:49;5085:119;;;5165:24;;;;;190:42:416;178:55;;5165:24:253;;;160:74:416;133:18;;5165:24:253;14:226:416;5085:119:253;-1:-1:-1;5224:10:253;5217:17;;5787:516;5918:17;;:21;5914:383;;6146:10;6140:17;6202:15;6189:10;6185:2;6181:19;6174:44;5914:383;6269:17;;;;;;;;;;;;;;5914:383;5787:516;:::o;245:154:416:-;331:42;324:5;320:54;313:5;310:65;300:93;;389:1;386;379:12;404:163;471:20;;531:10;520:22;;510:33;;500:61;;557:1;554;547:12;500:61;404:163;;;:::o;572:347::-;623:8;633:6;687:3;680:4;672:6;668:17;664:27;654:55;;705:1;702;695:12;654:55;-1:-1:-1;728:20:416;;771:18;760:30;;757:50;;;803:1;800;793:12;757:50;840:4;832:6;828:17;816:29;;892:3;885:4;876:6;868;864:19;860:30;857:39;854:59;;;909:1;906;899:12;854:59;572:347;;;;;:::o;924:969::-;1038:6;1046;1054;1062;1070;1078;1086;1139:3;1127:9;1118:7;1114:23;1110:33;1107:53;;;1156:1;1153;1146:12;1107:53;1195:9;1182:23;1214:31;1239:5;1214:31;:::i;:::-;1264:5;-1:-1:-1;1321:2:416;1306:18;;1293:32;1334:33;1293:32;1334:33;:::i;:::-;1386:7;-1:-1:-1;1445:2:416;1430:18;;1417:32;1458:33;1417:32;1458:33;:::i;:::-;1510:7;-1:-1:-1;1564:2:416;1549:18;;1536:32;;-1:-1:-1;1587:38:416;1620:3;1605:19;;1587:38;:::i;:::-;1577:48;;1676:3;1665:9;1661:19;1648:33;1704:18;1696:6;1693:30;1690:50;;;1736:1;1733;1726:12;1690:50;1775:58;1825:7;1816:6;1805:9;1801:22;1775:58;:::i;:::-;924:969;;;;-1:-1:-1;924:969:416;;-1:-1:-1;924:969:416;;;;1749:84;;-1:-1:-1;;;924:969:416:o;1898:827::-;2003:6;2011;2019;2027;2035;2043;2096:3;2084:9;2075:7;2071:23;2067:33;2064:53;;;2113:1;2110;2103:12;2064:53;2152:9;2139:23;2171:31;2196:5;2171:31;:::i;:::-;2221:5;-1:-1:-1;2278:2:416;2263:18;;2250:32;2291:33;2250:32;2291:33;:::i;:::-;2343:7;-1:-1:-1;2397:2:416;2382:18;;2369:32;;-1:-1:-1;2420:37:416;2453:2;2438:18;;2420:37;:::i;:::-;2410:47;;2508:3;2497:9;2493:19;2480:33;2536:18;2528:6;2525:30;2522:50;;;2568:1;2565;2558:12;2522:50;2607:58;2657:7;2648:6;2637:9;2633:22;2607:58;:::i;:::-;1898:827;;;;-1:-1:-1;1898:827:416;;-1:-1:-1;1898:827:416;;2684:8;;1898:827;-1:-1:-1;;;1898:827:416:o;2730:388::-;2798:6;2806;2859:2;2847:9;2838:7;2834:23;2830:32;2827:52;;;2875:1;2872;2865:12;2827:52;2914:9;2901:23;2933:31;2958:5;2933:31;:::i;:::-;2983:5;-1:-1:-1;3040:2:416;3025:18;;3012:32;3053:33;3012:32;3053:33;:::i;:::-;3105:7;3095:17;;;2730:388;;;;;:::o;3305:1038::-;3420:6;3428;3436;3444;3452;3460;3468;3521:3;3509:9;3500:7;3496:23;3492:33;3489:53;;;3538:1;3535;3528:12;3489:53;3577:9;3564:23;3596:31;3621:5;3596:31;:::i;:::-;3646:5;-1:-1:-1;3703:2:416;3688:18;;3675:32;3716:33;3675:32;3716:33;:::i;:::-;3768:7;-1:-1:-1;3827:2:416;3812:18;;3799:32;3840:33;3799:32;3840:33;:::i;:::-;3892:7;-1:-1:-1;3951:2:416;3936:18;;3923:32;3964:33;3923:32;3964:33;:::i;:::-;4016:7;-1:-1:-1;4070:3:416;4055:19;;4042:33;;-1:-1:-1;4126:3:416;4111:19;;4098:33;4154:18;4143:30;;4140:50;;;4186:1;4183;4176:12;4772:251;4842:6;4895:2;4883:9;4874:7;4870:23;4866:32;4863:52;;;4911:1;4908;4901:12;4863:52;4943:9;4937:16;4962:31;4987:5;4962:31;:::i;6182:184::-;6234:77;6231:1;6224:88;6331:4;6328:1;6321:15;6355:4;6352:1;6345:15;6371:125;6411:4;6439:1;6436;6433:8;6430:34;;;6444:18;;:::i;:::-;-1:-1:-1;6481:9:416;;6371:125::o;6501:325::-;6589:6;6584:3;6577:19;6641:6;6634:5;6627:4;6622:3;6618:14;6605:43;;6693:1;6686:4;6677:6;6672:3;6668:16;6664:27;6657:38;6559:3;6815:4;6745:66;6740:2;6732:6;6728:15;6724:88;6719:3;6715:98;6711:109;6704:116;;6501:325;;;;:::o;6831:435::-;7056:42;7048:6;7044:55;7033:9;7026:74;7136:6;7131:2;7120:9;7116:18;7109:34;7179:2;7174;7163:9;7159:18;7152:30;7007:4;7199:61;7256:2;7245:9;7241:18;7233:6;7225;7199:61;:::i;7271:128::-;7311:3;7342:1;7338:6;7335:1;7332:13;7329:39;;;7348:18;;:::i;:::-;-1:-1:-1;7384:9:416;;7271:128::o;7404:700::-;7664:4;7693:42;7774:2;7766:6;7762:15;7751:9;7744:34;7826:2;7818:6;7814:15;7809:2;7798:9;7794:18;7787:43;7878:2;7870:6;7866:15;7861:2;7850:9;7846:18;7839:43;7930:2;7922:6;7918:15;7913:2;7902:9;7898:18;7891:43;;7971:6;7965:3;7954:9;7950:19;7943:35;8015:3;8009;7998:9;7994:19;7987:32;8036:62;8093:3;8082:9;8078:19;8070:6;8062;8036:62;:::i;:::-;8028:70;7404:700;-1:-1:-1;;;;;;;;;7404:700:416:o;8109:258::-;8181:1;8191:113;8205:6;8202:1;8199:13;8191:113;;;8281:11;;;8275:18;8262:11;;;8255:39;8227:2;8220:10;8191:113;;;8322:6;8319:1;8316:13;8313:48;;;-1:-1:-1;;8357:1:416;8339:16;;8332:27;8109:258::o;8372:648::-;8585:42;8577:6;8573:55;8562:9;8555:74;8665:2;8660;8649:9;8645:18;8638:30;8536:4;8697:6;8691:13;8740:6;8735:2;8724:9;8720:18;8713:34;8756:67;8816:6;8810:3;8799:9;8795:19;8790:2;8782:6;8778:15;8756:67;:::i;:::-;9002:10;8990:23;;;;8985:2;8970:18;;8963:51;-1:-1:-1;8875:2:416;8863:15;;;;8880:66;8859:88;8844:104;8950:3;8840:114;;8372:648;-1:-1:-1;;8372:648:416:o;9730:277::-;9797:6;9850:2;9838:9;9829:7;9825:23;9821:32;9818:52;;;9866:1;9863;9856:12;9818:52;9898:9;9892:16;9951:5;9944:13;9937:21;9930:5;9927:32;9917:60;;9973:1;9970;9963:12;10012:274;10141:3;10179:6;10173:13;10195:53;10241:6;10236:3;10229:4;10221:6;10217:17;10195:53;:::i;:::-;10264:16;;;;;10012:274;-1:-1:-1;;10012:274:416:o","linkReferences":{}},"methodIdentifiers":{"bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","deposits(address,address)":"8f601f66","finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)":"a9f9e675","l1Usdc()":"56c3b587","l2TokenBridge()":"91c49bf8","l2Usdc()":"a1b4bc04","messenger()":"3cb747bf","otherBridge()":"c89701a2"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20DepositInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20WithdrawalFinalized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeERC20Withdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Usdc\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2TokenBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Usdc\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"ERC20DepositInitiated(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 deposit is initiated.\",\"params\":{\"amount\":\"Amount of the ERC20 deposited.\",\"extraData\":\"Extra data attached to the deposit.\",\"from\":\"Address of the depositor.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L2.\"}},\"ERC20WithdrawalFinalized(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 withdrawal is finalized.\",\"params\":{\"amount\":\"Amount of the ERC20 withdrawn.\",\"extraData\":\"Extra data attached to the withdrawal.\",\"from\":\"Address of the withdrawer.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L1.\"}}},\"kind\":\"dev\",\"methods\":{\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Deposits some amount of ERC20 tokens into the sender's account on L2.\",\"params\":{\"_amount\":\"Amount of the ERC20 to deposit.\",\"_extraData\":\"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.\",\"_l1Token\":\"Address of the L1 token being deposited.\",\"_l2Token\":\"Address of the corresponding token on L2.\",\"_minGasLimit\":\"Minimum gas limit for the deposit message on L2.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Deposits some amount of ERC20 tokens into a target account on L2.\",\"params\":{\"_amount\":\"Amount of the ERC20 to deposit.\",\"_extraData\":\"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.\",\"_l1Token\":\"Address of the L1 token being deposited.\",\"_l2Token\":\"Address of the corresponding token on L2.\",\"_minGasLimit\":\"Minimum gas limit for the deposit message on L2.\",\"_to\":\"Address of the recipient on L2.\"}},\"finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Finalizes a withdrawal of ERC20 tokens from L2.\",\"params\":{\"_amount\":\"Amount of the ERC20 to withdraw.\",\"_extraData\":\"Optional data forwarded from L2.\",\"_from\":\"Address of the withdrawer on L2.\",\"_l1Token\":\"Address of the token on L1.\",\"_l2Token\":\"Address of the corresponding token on L2.\",\"_to\":\"Address of the recipient on L1.\"}},\"l2TokenBridge()\":{\"custom:legacy\":\"@notice Retrieves the access of the corresponding L2 bridge contract.\",\"returns\":{\"_0\":\"Address of the corresponding L2 bridge contract.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol\":\"L1UsdcBridge\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/tokamak-contracts/USDC/L1/libraries/Address.sol\":{\"keccak256\":\"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3\",\"dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ\"]},\"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol\":{\"keccak256\":\"0x32fc81940e398095a082754088b43bcd70dda770a819586abc34fe8b387a42b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e2c83e48dbd6c4576400811d11eccbbe8dd44d652fdbaabab22b6fa1188bba\",\"dweb:/ipfs/QmZkWkDCQGwJH44EN61jov9MY34qg15WYtAvJYvkSJusx4\"]},\"src/tokamak-contracts/USDC/L1/libraries/IERC20Permit.sol\":{\"keccak256\":\"0x38fa29834657581cb1cdb1a18762bf9f730e7f68523d63fb181606f6bea7b173\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d2fa77781be9fa115f4837d80d431761f4af463c3dbd9d5b103a4e2dcf8eee1\",\"dweb:/ipfs/QmSHYchPnZBddirEAa5wnGUgFVnBfq6v9gVJ4wdrtYxsrc\"]},\"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol\":{\"keccak256\":\"0x1b796214de865837b31080bf4286131652925a25e206d11c1b870ea267742bae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e527f3891bbc917742346bb4cc230893bbf68eb925d2f0c70b475f3b901b3dd\",\"dweb:/ipfs/QmNeJTgxQKX7zvRCGYA81SJRMjkxcNEdemFcqpZsWJ4q9s\"]},\"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol\":{\"keccak256\":\"0xbd0042d258b9f10397ccb81dea8fc2ee5d787e5e20bc6d03f28aa62948b8be87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2cdb3bbe78dbcf306b0a49b09f149e94ee6d1c22b16d3e2315d5b5e356dc9\",\"dweb:/ipfs/QmUcRuWcqqzDboPkVLLwdDGqj4vzc83DWp98cxsbZ1pixj\"]},\"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridgeStorage.sol\":{\"keccak256\":\"0xcca6b8186e534ad59a4878f6756334175cd50aca504c4139d21930fce77e5b00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4a647cb71c35e41a53248db3c03a3d05ae169180465ee6947b48efd05afd4f5\",\"dweb:/ipfs/Qmf26yXFLCm8LmX4CKCoZ6wg6pGrnJmC3VYXhLFNHsA49i\"]},\"src/tokamak-contracts/USDC/libraries/Address.sol\":{\"keccak256\":\"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246\",\"dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx\"]},\"src/tokamak-contracts/USDC/universal/StandardBridgeStorage.sol\":{\"keccak256\":\"0xc61c40717e55341880ec5ba5c8f7366c7f7cbe045e55cd5bab643dbb60295bac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://237615182e4d1bb0447434f22e494222f5ff9ca97f2673d55b99918eb84bd723\",\"dweb:/ipfs/Qmd8GxkGfN3uhxLQygkQws1c7d47YA6K5p6PSFYM3m8bpT\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20DepositInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20WithdrawalFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeERC20Withdrawal"},{"inputs":[],"stateMutability":"view","type":"function","name":"l1Usdc","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2TokenBridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"l2Usdc","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"bridgeERC20(address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Deposits some amount of ERC20 tokens into the sender's account on L2.","params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Deposits some amount of ERC20 tokens into a target account on L2.","params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2.","_to":"Address of the recipient on L2."}},"finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)":{"custom:legacy":"@notice Finalizes a withdrawal of ERC20 tokens from L2.","params":{"_amount":"Amount of the ERC20 to withdraw.","_extraData":"Optional data forwarded from L2.","_from":"Address of the withdrawer on L2.","_l1Token":"Address of the token on L1.","_l2Token":"Address of the corresponding token on L2.","_to":"Address of the recipient on L1."}},"l2TokenBridge()":{"custom:legacy":"@notice Retrieves the access of the corresponding L2 bridge contract.","returns":{"_0":"Address of the corresponding L2 bridge contract."}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol":"L1UsdcBridge"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/L1/libraries/Address.sol":{"keccak256":"0x7a2becd0fc138ccd81f63dc85f73aa43ac9e16107b1060dfb9bfcbc46e089060","urls":["bzz-raw://a9cfc1478aba538118b63dca8c71983d8d522b9ac97b96364ae27dc505b675a3","dweb:/ipfs/QmQJnCRPn61XoPbDtykyGGcXS4YYydmMCxcWDymhBTG6JJ"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol":{"keccak256":"0x32fc81940e398095a082754088b43bcd70dda770a819586abc34fe8b387a42b4","urls":["bzz-raw://59e2c83e48dbd6c4576400811d11eccbbe8dd44d652fdbaabab22b6fa1188bba","dweb:/ipfs/QmZkWkDCQGwJH44EN61jov9MY34qg15WYtAvJYvkSJusx4"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/IERC20Permit.sol":{"keccak256":"0x38fa29834657581cb1cdb1a18762bf9f730e7f68523d63fb181606f6bea7b173","urls":["bzz-raw://4d2fa77781be9fa115f4837d80d431761f4af463c3dbd9d5b103a4e2dcf8eee1","dweb:/ipfs/QmSHYchPnZBddirEAa5wnGUgFVnBfq6v9gVJ4wdrtYxsrc"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol":{"keccak256":"0x1b796214de865837b31080bf4286131652925a25e206d11c1b870ea267742bae","urls":["bzz-raw://1e527f3891bbc917742346bb4cc230893bbf68eb925d2f0c70b475f3b901b3dd","dweb:/ipfs/QmNeJTgxQKX7zvRCGYA81SJRMjkxcNEdemFcqpZsWJ4q9s"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol":{"keccak256":"0xbd0042d258b9f10397ccb81dea8fc2ee5d787e5e20bc6d03f28aa62948b8be87","urls":["bzz-raw://81e2cdb3bbe78dbcf306b0a49b09f149e94ee6d1c22b16d3e2315d5b5e356dc9","dweb:/ipfs/QmUcRuWcqqzDboPkVLLwdDGqj4vzc83DWp98cxsbZ1pixj"],"license":"MIT"},"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridgeStorage.sol":{"keccak256":"0xcca6b8186e534ad59a4878f6756334175cd50aca504c4139d21930fce77e5b00","urls":["bzz-raw://c4a647cb71c35e41a53248db3c03a3d05ae169180465ee6947b48efd05afd4f5","dweb:/ipfs/Qmf26yXFLCm8LmX4CKCoZ6wg6pGrnJmC3VYXhLFNHsA49i"],"license":"MIT"},"src/tokamak-contracts/USDC/libraries/Address.sol":{"keccak256":"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f","urls":["bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246","dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx"],"license":"MIT"},"src/tokamak-contracts/USDC/universal/StandardBridgeStorage.sol":{"keccak256":"0xc61c40717e55341880ec5ba5c8f7366c7f7cbe045e55cd5bab643dbb60295bac","urls":["bzz-raw://237615182e4d1bb0447434f22e494222f5ff9ca97f2673d55b99918eb84bd723","dweb:/ipfs/Qmd8GxkGfN3uhxLQygkQws1c7d47YA6K5p6PSFYM3m8bpT"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":121163,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"messenger","offset":0,"slot":"0","type":"t_address"},{"astId":121165,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"otherBridge","offset":0,"slot":"1","type":"t_address"},{"astId":121167,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"l1Usdc","offset":0,"slot":"2","type":"t_address"},{"astId":121169,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"l2Usdc","offset":0,"slot":"3","type":"t_address"},{"astId":120863,"contract":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol:L1UsdcBridge","label":"deposits","offset":0,"slot":"4","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","methods":{"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the ERC20 to deposit.","_extraData":"Optional data to forward to L2. Data supplied here will not be used to                     execute any code on L2 and is only emitted as extra data for the                     convenience of off-chain tooling.","_l1Token":"Address of the L1 token being deposited.","_l2Token":"Address of the corresponding token on L2.","_minGasLimit":"Minimum gas limit for the deposit message on L2.","_to":"Address of the recipient on L2."}},"finalizeERC20Withdrawal(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 to withdraw.","_extraData":"Optional data forwarded from L2.","_from":"Address of the withdrawer on L2.","_l1Token":"Address of the token on L1.","_l2Token":"Address of the corresponding token on L2.","_to":"Address of the recipient on L1."}},"l2TokenBridge()":{"returns":{"_0":"Address of the corresponding L2 bridge contract."}}},"events":{"ERC20DepositInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 deposited.","extraData":"Extra data attached to the deposit.","from":"Address of the depositor.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L2."}},"ERC20WithdrawalFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 withdrawn.","extraData":"Extra data attached to the withdrawal.","from":"Address of the withdrawer.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L1."}}},"errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"AddressInsufficientBalance(address)":[{"details":"The ETH balance of the account is not enough to perform the operation."}],"FailedInnerCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC20 token failed."}]}},"ast":{"absolutePath":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridge.sol","id":120672,"exportedSymbols":{"Address":[121159],"ICrossDomainMessenger":[120373],"IERC20":[119876],"IL2USDCBridge":[120389],"L1UsdcBridge":[120671],"L1UsdcBridgeStorage":[120864],"SafeERC20":[120238]},"nodeType":"SourceUnit","src":"32:7658:262","nodes":[{"id":120350,"nodeType":"PragmaDirective","src":"32:23:262","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":120352,"nodeType":"ImportDirective","src":"57:49:262","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/IERC20.sol","file":"../libraries/IERC20.sol","nameLocation":"-1:-1:-1","scope":120672,"sourceUnit":119877,"symbolAliases":[{"foreign":{"id":120351,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119876,"src":"66:6:262","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120354,"nodeType":"ImportDirective","src":"107:54:262","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/libraries/Address.sol","file":"../../libraries/Address.sol","nameLocation":"-1:-1:-1","scope":120672,"sourceUnit":121160,"symbolAliases":[{"foreign":{"id":120353,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121159,"src":"116:7:262","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120356,"nodeType":"ImportDirective","src":"162:55:262","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/libraries/SafeERC20.sol","file":"../libraries/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":120672,"sourceUnit":120239,"symbolAliases":[{"foreign":{"id":120355,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120238,"src":"171:9:262","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120358,"nodeType":"ImportDirective","src":"219:64:262","nodes":[],"absolutePath":"src/tokamak-contracts/USDC/L1/tokamak-UsdcBridge/L1UsdcBridgeStorage.sol","file":"./L1UsdcBridgeStorage.sol","nameLocation":"-1:-1:-1","scope":120672,"sourceUnit":120865,"symbolAliases":[{"foreign":{"id":120357,"name":"L1UsdcBridgeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120864,"src":"228:19:262","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120373,"nodeType":"ContractDefinition","src":"285:210:262","nodes":[{"id":120363,"nodeType":"FunctionDefinition","src":"323:64:262","nodes":[],"functionSelector":"6e296e45","implemented":false,"kind":"function","modifiers":[],"name":"xDomainMessageSender","nameLocation":"332:20:262","parameters":{"id":120359,"nodeType":"ParameterList","parameters":[],"src":"352:2:262"},"returnParameters":{"id":120362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120363,"src":"378:7:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120360,"name":"address","nodeType":"ElementaryTypeName","src":"378:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"377:9:262"},"scope":120373,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120372,"nodeType":"FunctionDefinition","src":"392:101:262","nodes":[],"functionSelector":"3dbb202b","implemented":false,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"401:11:262","parameters":{"id":120370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120365,"mutability":"mutable","name":"_target","nameLocation":"421:7:262","nodeType":"VariableDeclaration","scope":120372,"src":"413:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120364,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120367,"mutability":"mutable","name":"_message","nameLocation":"445:8:262","nodeType":"VariableDeclaration","scope":120372,"src":"430:23:262","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120366,"name":"bytes","nodeType":"ElementaryTypeName","src":"430:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120369,"mutability":"mutable","name":"_minGasLimit","nameLocation":"462:12:262","nodeType":"VariableDeclaration","scope":120372,"src":"455:19:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120368,"name":"uint32","nodeType":"ElementaryTypeName","src":"455:6:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"412:63:262"},"returnParameters":{"id":120371,"nodeType":"ParameterList","parameters":[],"src":"492:0:262"},"scope":120373,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ICrossDomainMessenger","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[120373],"name":"ICrossDomainMessenger","nameLocation":"295:21:262","scope":120672,"usedErrors":[]},{"id":120389,"nodeType":"ContractDefinition","src":"497:236:262","nodes":[{"id":120388,"nodeType":"FunctionDefinition","src":"527:204:262","nodes":[],"functionSelector":"662a633a","implemented":false,"kind":"function","modifiers":[],"name":"finalizeDeposit","nameLocation":"536:15:262","parameters":{"id":120386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120375,"mutability":"mutable","name":"_l1Token","nameLocation":"569:8:262","nodeType":"VariableDeclaration","scope":120388,"src":"561:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120374,"name":"address","nodeType":"ElementaryTypeName","src":"561:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120377,"mutability":"mutable","name":"_l2Token","nameLocation":"595:8:262","nodeType":"VariableDeclaration","scope":120388,"src":"587:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120376,"name":"address","nodeType":"ElementaryTypeName","src":"587:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120379,"mutability":"mutable","name":"_from","nameLocation":"621:5:262","nodeType":"VariableDeclaration","scope":120388,"src":"613:13:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120378,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120381,"mutability":"mutable","name":"_to","nameLocation":"644:3:262","nodeType":"VariableDeclaration","scope":120388,"src":"636:11:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120380,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120383,"mutability":"mutable","name":"_amount","nameLocation":"665:7:262","nodeType":"VariableDeclaration","scope":120388,"src":"657:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120382,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120385,"mutability":"mutable","name":"_extraData","nameLocation":"697:10:262","nodeType":"VariableDeclaration","scope":120388,"src":"682:25:262","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120384,"name":"bytes","nodeType":"ElementaryTypeName","src":"682:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"551:162:262"},"returnParameters":{"id":120387,"nodeType":"ParameterList","parameters":[],"src":"730:0:262"},"scope":120389,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IL2USDCBridge","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[120389],"name":"IL2USDCBridge","nameLocation":"507:13:262","scope":120672,"usedErrors":[]},{"id":120671,"nodeType":"ContractDefinition","src":"735:6954:262","nodes":[{"id":120395,"nodeType":"UsingForDirective","src":"786:27:262","nodes":[],"global":false,"libraryName":{"id":120392,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":120238,"src":"792:9:262"},"typeName":{"id":120394,"nodeType":"UserDefinedTypeName","pathNode":{"id":120393,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":119876,"src":"806:6:262"},"referencedDeclaration":119876,"src":"806:6:262","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$119876","typeString":"contract IERC20"}}},{"id":120410,"nodeType":"ModifierDefinition","src":"1129:146:262","nodes":[],"body":{"id":120409,"nodeType":"Block","src":"1148:127:262","nodes":[],"statements":[{"expression":{"arguments":[{"id":120404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1166:31:262","subExpression":{"arguments":[{"expression":{"id":120401,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1186:3:262","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1186:10:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":120399,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121159,"src":"1167:7:262","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$121159_$","typeString":"type(library Address)"}},"id":120400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":120882,"src":"1167:18:262","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1167:30:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20616e20454f41","id":120405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1199:57:262","typeDescriptions":{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""},"value":"StandardBridge: function can only be called from an EOA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""}],"id":120398,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1158:7:262","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1158:99:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120407,"nodeType":"ExpressionStatement","src":"1158:99:262"},{"id":120408,"nodeType":"PlaceholderStatement","src":"1267:1:262"}]},"documentation":{"id":120396,"nodeType":"StructuredDocumentation","src":"818:305:262","text":" @notice Only allow EOAs to call the functions. Note that this is not safe against contracts\n         calling code within their constructors, but also doesn't really matter since we're\n         just trying to prevent users accidentally depositing with smart contract wallets."},"name":"onlyEOA","nameLocation":"1138:7:262","parameters":{"id":120397,"nodeType":"ParameterList","parameters":[],"src":"1145:2:262"},"virtual":false,"visibility":"internal"},{"id":120431,"nodeType":"ModifierDefinition","src":"1384:264:262","nodes":[],"body":{"id":120430,"nodeType":"Block","src":"1411:237:262","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120414,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1442:3:262","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1442:10:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120416,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121163,"src":"1456:9:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1442:23:262","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120419,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121163,"src":"1491:9:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120418,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120373,"src":"1469:21:262","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICrossDomainMessenger_$120373_$","typeString":"type(contract ICrossDomainMessenger)"}},"id":120420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1469:32:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$120373","typeString":"contract ICrossDomainMessenger"}},"id":120421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"xDomainMessageSender","nodeType":"MemberAccess","referencedDeclaration":120363,"src":"1469:53:262","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1469:55:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120423,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121165,"src":"1528:11:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1469:70:262","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1442:97:262","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20746865206f7468657220627269646765","id":120426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1553:67:262","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""},"value":"StandardBridge: function can only be called from the other bridge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""}],"id":120413,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1421:7:262","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1421:209:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120428,"nodeType":"ExpressionStatement","src":"1421:209:262"},{"id":120429,"nodeType":"PlaceholderStatement","src":"1640:1:262"}]},"documentation":{"id":120411,"nodeType":"StructuredDocumentation","src":"1281:98:262","text":" @notice Ensures that the caller is a cross-chain message from the other bridge."},"name":"onlyOtherBridge","nameLocation":"1393:15:262","parameters":{"id":120412,"nodeType":"ParameterList","parameters":[],"src":"1408:2:262"},"virtual":false,"visibility":"internal"},{"id":120435,"nodeType":"FunctionDefinition","src":"1654:17:262","nodes":[],"body":{"id":120434,"nodeType":"Block","src":"1668:3:262","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":120432,"nodeType":"ParameterList","parameters":[],"src":"1665:2:262"},"returnParameters":{"id":120433,"nodeType":"ParameterList","parameters":[],"src":"1668:0:262"},"scope":120671,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":120450,"nodeType":"EventDefinition","src":"2124:199:262","nodes":[],"anonymous":false,"documentation":{"id":120436,"nodeType":"StructuredDocumentation","src":"1677:442:262","text":" @custom:legacy\n @notice Emitted whenever an ERC20 deposit is initiated.\n @param l1Token   Address of the token on L1.\n @param l2Token   Address of the corresponding token on L2.\n @param from      Address of the depositor.\n @param to        Address of the recipient on L2.\n @param amount    Amount of the ERC20 deposited.\n @param extraData Extra data attached to the deposit."},"eventSelector":"718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d0396","name":"ERC20DepositInitiated","nameLocation":"2130:21:262","parameters":{"id":120449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120438,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2177:7:262","nodeType":"VariableDeclaration","scope":120450,"src":"2161:23:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120437,"name":"address","nodeType":"ElementaryTypeName","src":"2161:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120440,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2210:7:262","nodeType":"VariableDeclaration","scope":120450,"src":"2194:23:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120439,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120442,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2243:4:262","nodeType":"VariableDeclaration","scope":120450,"src":"2227:20:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120441,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120444,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2265:2:262","nodeType":"VariableDeclaration","scope":120450,"src":"2257:10:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120443,"name":"address","nodeType":"ElementaryTypeName","src":"2257:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120446,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2285:6:262","nodeType":"VariableDeclaration","scope":120450,"src":"2277:14:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120445,"name":"uint256","nodeType":"ElementaryTypeName","src":"2277:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120448,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2307:9:262","nodeType":"VariableDeclaration","scope":120450,"src":"2301:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120447,"name":"bytes","nodeType":"ElementaryTypeName","src":"2301:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2151:171:262"}},{"id":120465,"nodeType":"EventDefinition","src":"2783:202:262","nodes":[],"anonymous":false,"documentation":{"id":120451,"nodeType":"StructuredDocumentation","src":"2329:449:262","text":" @custom:legacy\n @notice Emitted whenever an ERC20 withdrawal is finalized.\n @param l1Token   Address of the token on L1.\n @param l2Token   Address of the corresponding token on L2.\n @param from      Address of the withdrawer.\n @param to        Address of the recipient on L1.\n @param amount    Amount of the ERC20 withdrawn.\n @param extraData Extra data attached to the withdrawal."},"eventSelector":"3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b3","name":"ERC20WithdrawalFinalized","nameLocation":"2789:24:262","parameters":{"id":120464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120453,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2839:7:262","nodeType":"VariableDeclaration","scope":120465,"src":"2823:23:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120452,"name":"address","nodeType":"ElementaryTypeName","src":"2823:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120455,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2872:7:262","nodeType":"VariableDeclaration","scope":120465,"src":"2856:23:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120454,"name":"address","nodeType":"ElementaryTypeName","src":"2856:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120457,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2905:4:262","nodeType":"VariableDeclaration","scope":120465,"src":"2889:20:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120456,"name":"address","nodeType":"ElementaryTypeName","src":"2889:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120459,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2927:2:262","nodeType":"VariableDeclaration","scope":120465,"src":"2919:10:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120458,"name":"address","nodeType":"ElementaryTypeName","src":"2919:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120461,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2947:6:262","nodeType":"VariableDeclaration","scope":120465,"src":"2939:14:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120460,"name":"uint256","nodeType":"ElementaryTypeName","src":"2939:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120463,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2969:9:262","nodeType":"VariableDeclaration","scope":120465,"src":"2963:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120462,"name":"bytes","nodeType":"ElementaryTypeName","src":"2963:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2813:171:262"}},{"id":120494,"nodeType":"FunctionDefinition","src":"3644:338:262","nodes":[],"body":{"id":120493,"nodeType":"Block","src":"3865:117:262","nodes":[],"statements":[{"expression":{"arguments":[{"id":120482,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120468,"src":"3897:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120483,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120470,"src":"3907:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120484,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3917:3:262","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3917:10:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120486,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3929:3:262","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3929:10:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120488,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120472,"src":"3941:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120489,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120474,"src":"3950:12:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120490,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120476,"src":"3964:10:262","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120481,"name":"_initiateERC20Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120670,"src":"3875:21:262","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes calldata)"}},"id":120491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3875:100:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120492,"nodeType":"ExpressionStatement","src":"3875:100:262"}]},"documentation":{"id":120466,"nodeType":"StructuredDocumentation","src":"2991:648:262","text":" @custom:legacy\n @notice Deposits some amount of ERC20 tokens into the sender's account on L2.\n @param _l1Token     Address of the L1 token being deposited.\n @param _l2Token     Address of the corresponding token on L2.\n @param _amount      Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData   Optional data to forward to L2. Data supplied here will not be used to\n                     execute any code on L2 and is only emitted as extra data for the\n                     convenience of off-chain tooling."},"functionSelector":"87087623","implemented":true,"kind":"function","modifiers":[{"id":120479,"kind":"modifierInvocation","modifierName":{"id":120478,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120410,"src":"3853:7:262"},"nodeType":"ModifierInvocation","src":"3853:7:262"}],"name":"bridgeERC20","nameLocation":"3653:11:262","parameters":{"id":120477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120468,"mutability":"mutable","name":"_l1Token","nameLocation":"3682:8:262","nodeType":"VariableDeclaration","scope":120494,"src":"3674:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120467,"name":"address","nodeType":"ElementaryTypeName","src":"3674:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120470,"mutability":"mutable","name":"_l2Token","nameLocation":"3708:8:262","nodeType":"VariableDeclaration","scope":120494,"src":"3700:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120469,"name":"address","nodeType":"ElementaryTypeName","src":"3700:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120472,"mutability":"mutable","name":"_amount","nameLocation":"3734:7:262","nodeType":"VariableDeclaration","scope":120494,"src":"3726:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120471,"name":"uint256","nodeType":"ElementaryTypeName","src":"3726:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120474,"mutability":"mutable","name":"_minGasLimit","nameLocation":"3758:12:262","nodeType":"VariableDeclaration","scope":120494,"src":"3751:19:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120473,"name":"uint32","nodeType":"ElementaryTypeName","src":"3751:6:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120476,"mutability":"mutable","name":"_extraData","nameLocation":"3795:10:262","nodeType":"VariableDeclaration","scope":120494,"src":"3780:25:262","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120475,"name":"bytes","nodeType":"ElementaryTypeName","src":"3780:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3664:147:262"},"returnParameters":{"id":120480,"nodeType":"ParameterList","parameters":[],"src":"3865:0:262"},"scope":120671,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":120522,"nodeType":"FunctionDefinition","src":"4696:338:262","nodes":[],"body":{"id":120521,"nodeType":"Block","src":"4924:110:262","nodes":[],"statements":[{"expression":{"arguments":[{"id":120511,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120497,"src":"4956:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120512,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120499,"src":"4966:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120513,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4976:3:262","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4976:10:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120515,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120501,"src":"4988:3:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120516,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120503,"src":"4993:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120517,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120505,"src":"5002:12:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120518,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120507,"src":"5016:10:262","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120510,"name":"_initiateERC20Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120670,"src":"4934:21:262","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes calldata)"}},"id":120519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4934:93:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120520,"nodeType":"ExpressionStatement","src":"4934:93:262"}]},"documentation":{"id":120495,"nodeType":"StructuredDocumentation","src":"3988:703:262","text":" @custom:legacy\n @notice Deposits some amount of ERC20 tokens into a target account on L2.\n @param _l1Token     Address of the L1 token being deposited.\n @param _l2Token     Address of the corresponding token on L2.\n @param _to          Address of the recipient on L2.\n @param _amount      Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData   Optional data to forward to L2. Data supplied here will not be used to\n                     execute any code on L2 and is only emitted as extra data for the\n                     convenience of off-chain tooling."},"functionSelector":"540abf73","implemented":true,"kind":"function","modifiers":[],"name":"bridgeERC20To","nameLocation":"4705:13:262","parameters":{"id":120508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120497,"mutability":"mutable","name":"_l1Token","nameLocation":"4736:8:262","nodeType":"VariableDeclaration","scope":120522,"src":"4728:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120496,"name":"address","nodeType":"ElementaryTypeName","src":"4728:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120499,"mutability":"mutable","name":"_l2Token","nameLocation":"4762:8:262","nodeType":"VariableDeclaration","scope":120522,"src":"4754:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120498,"name":"address","nodeType":"ElementaryTypeName","src":"4754:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120501,"mutability":"mutable","name":"_to","nameLocation":"4788:3:262","nodeType":"VariableDeclaration","scope":120522,"src":"4780:11:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120500,"name":"address","nodeType":"ElementaryTypeName","src":"4780:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120503,"mutability":"mutable","name":"_amount","nameLocation":"4809:7:262","nodeType":"VariableDeclaration","scope":120522,"src":"4801:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120502,"name":"uint256","nodeType":"ElementaryTypeName","src":"4801:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120505,"mutability":"mutable","name":"_minGasLimit","nameLocation":"4833:12:262","nodeType":"VariableDeclaration","scope":120522,"src":"4826:19:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120504,"name":"uint32","nodeType":"ElementaryTypeName","src":"4826:6:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120507,"mutability":"mutable","name":"_extraData","nameLocation":"4870:10:262","nodeType":"VariableDeclaration","scope":120522,"src":"4855:25:262","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120506,"name":"bytes","nodeType":"ElementaryTypeName","src":"4855:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4718:168:262"},"returnParameters":{"id":120509,"nodeType":"ParameterList","parameters":[],"src":"4924:0:262"},"scope":120671,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":120578,"nodeType":"FunctionDefinition","src":"5499:529:262","nodes":[],"body":{"id":120577,"nodeType":"Block","src":"5797:231:262","nodes":[],"statements":[{"expression":{"id":120558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120546,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120863,"src":"5807:8:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120549,"indexExpression":{"id":120547,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120525,"src":"5816:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5807:18:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120550,"indexExpression":{"id":120548,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120527,"src":"5826:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5807:28:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120551,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120863,"src":"5838:8:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120553,"indexExpression":{"id":120552,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120525,"src":"5847:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5838:18:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120555,"indexExpression":{"id":120554,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120527,"src":"5857:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5838:28:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":120556,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120533,"src":"5869:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5838:38:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5807:69:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120559,"nodeType":"ExpressionStatement","src":"5807:69:262"},{"expression":{"arguments":[{"id":120564,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120531,"src":"5916:3:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120565,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120533,"src":"5921:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120561,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120525,"src":"5893:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120560,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119876,"src":"5886:6:262","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$119876_$","typeString":"type(contract IERC20)"}},"id":120562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5886:16:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$119876","typeString":"contract IERC20"}},"id":120563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":119998,"src":"5886:29:262","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$119876_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$119876_$","typeString":"function (contract IERC20,address,uint256)"}},"id":120566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5886:43:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120567,"nodeType":"ExpressionStatement","src":"5886:43:262"},{"eventCall":{"arguments":[{"id":120569,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120525,"src":"5969:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120570,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120527,"src":"5979:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120571,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120529,"src":"5989:5:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120572,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120531,"src":"5996:3:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120573,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120533,"src":"6001:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120574,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120535,"src":"6010:10:262","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120568,"name":"ERC20WithdrawalFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120465,"src":"5944:24:262","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5944:77:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120576,"nodeType":"EmitStatement","src":"5939:82:262"}]},"documentation":{"id":120523,"nodeType":"StructuredDocumentation","src":"5040:454:262","text":" @custom:legacy\n @notice Finalizes a withdrawal of ERC20 tokens from L2.\n @param _l1Token   Address of the token on L1.\n @param _l2Token   Address of the corresponding token on L2.\n @param _from      Address of the withdrawer on L2.\n @param _to        Address of the recipient on L1.\n @param _amount    Amount of the ERC20 to withdraw.\n @param _extraData Optional data forwarded from L2."},"functionSelector":"a9f9e675","implemented":true,"kind":"function","modifiers":[{"id":120538,"kind":"modifierInvocation","modifierName":{"id":120537,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120431,"src":"5719:15:262"},"nodeType":"ModifierInvocation","src":"5719:15:262"},{"arguments":[{"id":120540,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120525,"src":"5754:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":120541,"kind":"modifierInvocation","modifierName":{"id":120539,"name":"onlyL1Usdc","nodeType":"IdentifierPath","referencedDeclaration":121182,"src":"5743:10:262"},"nodeType":"ModifierInvocation","src":"5743:20:262"},{"arguments":[{"id":120543,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120527,"src":"5783:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":120544,"kind":"modifierInvocation","modifierName":{"id":120542,"name":"onlyL2Usdc","nodeType":"IdentifierPath","referencedDeclaration":121195,"src":"5772:10:262"},"nodeType":"ModifierInvocation","src":"5772:20:262"}],"name":"finalizeERC20Withdrawal","nameLocation":"5508:23:262","parameters":{"id":120536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120525,"mutability":"mutable","name":"_l1Token","nameLocation":"5549:8:262","nodeType":"VariableDeclaration","scope":120578,"src":"5541:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120524,"name":"address","nodeType":"ElementaryTypeName","src":"5541:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120527,"mutability":"mutable","name":"_l2Token","nameLocation":"5575:8:262","nodeType":"VariableDeclaration","scope":120578,"src":"5567:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120526,"name":"address","nodeType":"ElementaryTypeName","src":"5567:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120529,"mutability":"mutable","name":"_from","nameLocation":"5601:5:262","nodeType":"VariableDeclaration","scope":120578,"src":"5593:13:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120528,"name":"address","nodeType":"ElementaryTypeName","src":"5593:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120531,"mutability":"mutable","name":"_to","nameLocation":"5624:3:262","nodeType":"VariableDeclaration","scope":120578,"src":"5616:11:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120530,"name":"address","nodeType":"ElementaryTypeName","src":"5616:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120533,"mutability":"mutable","name":"_amount","nameLocation":"5645:7:262","nodeType":"VariableDeclaration","scope":120578,"src":"5637:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120532,"name":"uint256","nodeType":"ElementaryTypeName","src":"5637:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120535,"mutability":"mutable","name":"_extraData","nameLocation":"5677:10:262","nodeType":"VariableDeclaration","scope":120578,"src":"5662:25:262","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120534,"name":"bytes","nodeType":"ElementaryTypeName","src":"5662:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5531:162:262"},"returnParameters":{"id":120545,"nodeType":"ParameterList","parameters":[],"src":"5797:0:262"},"scope":120671,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":120590,"nodeType":"FunctionDefinition","src":"6220:101:262","nodes":[],"body":{"id":120589,"nodeType":"Block","src":"6277:44:262","nodes":[],"statements":[{"expression":{"arguments":[{"id":120586,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121165,"src":"6302:11:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6294:7:262","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120584,"name":"address","nodeType":"ElementaryTypeName","src":"6294:7:262","typeDescriptions":{}}},"id":120587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6294:20:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":120583,"id":120588,"nodeType":"Return","src":"6287:27:262"}]},"documentation":{"id":120579,"nodeType":"StructuredDocumentation","src":"6034:181:262","text":" @custom:legacy\n @notice Retrieves the access of the corresponding L2 bridge contract.\n @return Address of the corresponding L2 bridge contract."},"functionSelector":"91c49bf8","implemented":true,"kind":"function","modifiers":[],"name":"l2TokenBridge","nameLocation":"6229:13:262","parameters":{"id":120580,"nodeType":"ParameterList","parameters":[],"src":"6242:2:262"},"returnParameters":{"id":120583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120590,"src":"6268:7:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120581,"name":"address","nodeType":"ElementaryTypeName","src":"6268:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6267:9:262"},"scope":120671,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120670,"nodeType":"FunctionDefinition","src":"6862:825:262","nodes":[],"body":{"id":120669,"nodeType":"Block","src":"7163:524:262","nodes":[],"statements":[{"expression":{"arguments":[{"id":120618,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"7207:5:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":120621,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7222:4:262","typeDescriptions":{"typeIdentifier":"t_contract$_L1UsdcBridge_$120671","typeString":"contract L1UsdcBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L1UsdcBridge_$120671","typeString":"contract L1UsdcBridge"}],"id":120620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7214:7:262","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120619,"name":"address","nodeType":"ElementaryTypeName","src":"7214:7:262","typeDescriptions":{}}},"id":120622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7214:13:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120623,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120601,"src":"7229:7:262","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":[{"id":120615,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"7180:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120614,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119876,"src":"7173:6:262","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$119876_$","typeString":"type(contract IERC20)"}},"id":120616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7173:16:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$119876","typeString":"contract IERC20"}},"id":120617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":120025,"src":"7173:33:262","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$119876_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$119876_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":120624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7173:64:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120625,"nodeType":"ExpressionStatement","src":"7173:64:262"},{"expression":{"id":120638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120626,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120863,"src":"7247:8:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120629,"indexExpression":{"id":120627,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"7256:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7247:18:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120630,"indexExpression":{"id":120628,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"7266:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7247:28:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120631,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120863,"src":"7278:8:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120633,"indexExpression":{"id":120632,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"7287:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7278:18:262","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120635,"indexExpression":{"id":120634,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"7297:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7278:28:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":120636,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120601,"src":"7309:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7278:38:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7247:69:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120639,"nodeType":"ExpressionStatement","src":"7247:69:262"},{"expression":{"arguments":[{"id":120644,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121165,"src":"7385:11:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120647,"name":"IL2USDCBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120389,"src":"7450:13:262","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL2USDCBridge_$120389_$","typeString":"type(contract IL2USDCBridge)"}},"id":120648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"finalizeDeposit","nodeType":"MemberAccess","referencedDeclaration":120388,"src":"7450:29:262","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function IL2USDCBridge.finalizeDeposit(address,address,address,address,uint256,bytes calldata)"}},"id":120649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"7450:38:262","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120650,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"7490:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120651,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"7500:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120652,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"7510:5:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120653,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120599,"src":"7517:3:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120654,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120601,"src":"7522:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120655,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120605,"src":"7531:10:262","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":120645,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7410:3:262","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7410:22:262","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7410:145:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120657,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120603,"src":"7569:12:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"arguments":[{"id":120641,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121163,"src":"7349:9:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120640,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120373,"src":"7327:21:262","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICrossDomainMessenger_$120373_$","typeString":"type(contract ICrossDomainMessenger)"}},"id":120642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7327:32:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$120373","typeString":"contract ICrossDomainMessenger"}},"id":120643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":120372,"src":"7327:44:262","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7327:264:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120659,"nodeType":"ExpressionStatement","src":"7327:264:262"},{"eventCall":{"arguments":[{"id":120661,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"7628:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120662,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"7638:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120663,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"7648:5:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120664,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120599,"src":"7655:3:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120665,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120601,"src":"7660:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120666,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120605,"src":"7669:10:262","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120660,"name":"ERC20DepositInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120450,"src":"7606:21:262","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7606:74:262","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120668,"nodeType":"EmitStatement","src":"7601:79:262"}]},"documentation":{"id":120591,"nodeType":"StructuredDocumentation","src":"6327:530:262","text":" @notice Internal function for initiating an ERC20 deposit.\n @param _l1Token     Address of the L1 token being deposited.\n @param _l2Token     Address of the corresponding token on L2.\n @param _from        Address of the sender on L1.\n @param _to          Address of the recipient on L2.\n @param _amount      Amount of the ERC20 to deposit.\n @param _minGasLimit Minimum gas limit for the deposit message on L2.\n @param _extraData   Optional data to forward to L2."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":120608,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"7120:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":120609,"kind":"modifierInvocation","modifierName":{"id":120607,"name":"onlyL1Usdc","nodeType":"IdentifierPath","referencedDeclaration":121182,"src":"7109:10:262"},"nodeType":"ModifierInvocation","src":"7109:20:262"},{"arguments":[{"id":120611,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"7149:8:262","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":120612,"kind":"modifierInvocation","modifierName":{"id":120610,"name":"onlyL2Usdc","nodeType":"IdentifierPath","referencedDeclaration":121195,"src":"7138:10:262"},"nodeType":"ModifierInvocation","src":"7138:20:262"}],"name":"_initiateERC20Deposit","nameLocation":"6871:21:262","parameters":{"id":120606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120593,"mutability":"mutable","name":"_l1Token","nameLocation":"6910:8:262","nodeType":"VariableDeclaration","scope":120670,"src":"6902:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120592,"name":"address","nodeType":"ElementaryTypeName","src":"6902:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120595,"mutability":"mutable","name":"_l2Token","nameLocation":"6936:8:262","nodeType":"VariableDeclaration","scope":120670,"src":"6928:16:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120594,"name":"address","nodeType":"ElementaryTypeName","src":"6928:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120597,"mutability":"mutable","name":"_from","nameLocation":"6962:5:262","nodeType":"VariableDeclaration","scope":120670,"src":"6954:13:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120596,"name":"address","nodeType":"ElementaryTypeName","src":"6954:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120599,"mutability":"mutable","name":"_to","nameLocation":"6985:3:262","nodeType":"VariableDeclaration","scope":120670,"src":"6977:11:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120598,"name":"address","nodeType":"ElementaryTypeName","src":"6977:7:262","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120601,"mutability":"mutable","name":"_amount","nameLocation":"7006:7:262","nodeType":"VariableDeclaration","scope":120670,"src":"6998:15:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120600,"name":"uint256","nodeType":"ElementaryTypeName","src":"6998:7:262","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120603,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7030:12:262","nodeType":"VariableDeclaration","scope":120670,"src":"7023:19:262","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120602,"name":"uint32","nodeType":"ElementaryTypeName","src":"7023:6:262","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120605,"mutability":"mutable","name":"_extraData","nameLocation":"7067:10:262","nodeType":"VariableDeclaration","scope":120670,"src":"7052:25:262","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120604,"name":"bytes","nodeType":"ElementaryTypeName","src":"7052:5:262","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6892:191:262"},"returnParameters":{"id":120613,"nodeType":"ParameterList","parameters":[],"src":"7163:0:262"},"scope":120671,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":120390,"name":"L1UsdcBridgeStorage","nodeType":"IdentifierPath","referencedDeclaration":120864,"src":"760:19:262"},"id":120391,"nodeType":"InheritanceSpecifier","src":"760:19:262"}],"canonicalName":"L1UsdcBridge","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[120671,120864,121196],"name":"L1UsdcBridge","nameLocation":"744:12:262","scope":120672,"usedErrors":[119202,119207,119210,119965]}],"license":"MIT"},"id":262}