{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"OTHER_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","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":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","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":"bridgeETH","inputs":[{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bridgeETHTo","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"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":"finalizeBridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","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":"finalizeBridgeETH","inputs":[{"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":"payable"},{"type":"function","name":"finalizeDeposit","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":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_otherBridge","type":"address","internalType":"contract StandardBridge"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l1TokenBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"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":"payable"},{"type":"function","name":"withdrawTo","inputs":[{"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":"payable"},{"type":"event","name":"DepositFinalized","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":"ERC20BridgeFinalized","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","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":"ERC20BridgeInitiated","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","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":"ETHBridgeFinalized","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeInitiated","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"WithdrawalInitiated","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}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001e600062000024565b62000217565b600054610100900460ff1615808015620000455750600054600160ff909116105b8062000075575062000062306200016d60201b620004811760201c565b15801562000075575060005460ff166001145b620000de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000102576000805461ff0019166101001790555b62000122734200000000000000000000000000000000000007836200017c565b801562000169576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d5565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b612a8380620002276000396000f3fe60806040526004361061012d5760003560e01c8063662a633a116100a5578063927ede2d11610074578063c4d66de811610059578063c4d66de814610421578063c89701a214610441578063e11013dd1461046e57600080fd5b8063927ede2d146103e3578063a3a795481461040e57600080fd5b8063662a633a1461036a5780637f46ddb21461025a578063870876231461037d5780638f601f661461039d57600080fd5b806336c717c1116100fc578063540abf73116100e1578063540abf73146102d857806354fd4d50146102f85780635c975abb1461034e57600080fd5b806336c717c11461025a5780633cb747bf146102ab57600080fd5b80630166a07a1461020157806309fc8843146102215780631635f5fd1461023457806332b7006d1461024757600080fd5b366101fc57333b156101c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101fa73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d406040518060200160405280600081525061049d565b005b600080fd5b34801561020d57600080fd5b506101fa61021c366004612476565b610578565b6101fa61022f366004612527565b61091a565b6101fa61024236600461257a565b6109f1565b6101fa6102553660046125ed565b610e43565b34801561026657600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156102b757600080fd5b506003546102819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102e457600080fd5b506101fa6102f3366004612641565b610f1d565b34801561030457600080fd5b506103416040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516102a2919061272e565b34801561035a57600080fd5b50604051600081526020016102a2565b6101fa610378366004612476565b610f62565b34801561038957600080fd5b506101fa610398366004612741565b610fd5565b3480156103a957600080fd5b506103d56103b83660046127c4565b600260209081526000928352604080842090915290825290205481565b6040519081526020016102a2565b3480156103ef57600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610281565b6101fa61041c366004612741565b6110a9565b34801561042d57600080fd5b506101fa61043c3660046127fd565b6110ed565b34801561044d57600080fd5b506004546102819073ffffffffffffffffffffffffffffffffffffffff1681565b6101fa61047c36600461281a565b611296565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff8716016104ec576104e785858585856112df565b610570565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055d919061287d565b905061056e878288888888886114a9565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314801561064b575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610633919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b610706876117d4565b15610854576107158787611836565b6107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050506108d6565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a16835292905220546108929084906128c9565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c16835293905291909120919091556108d6908585611956565b61056e878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2a92505050565b333b156109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b6109ec3333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610ac4575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b610b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b823414610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101bd565b3073ffffffffffffffffffffffffffffffffffffffff851603610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101bd565b610d9785858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ab892505050565b6000610db4855a8660405180602001604052806000815250611b59565b905080610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b333b15610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b610f16853333878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b5050505050565b61056e87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b73ffffffffffffffffffffffffffffffffffffffff8716158015610faf575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b15610fc657610fc185858585856109f1565b61056e565b61056e86888787878787610578565b333b15611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b61057086863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b610570863387878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b600054610100900460ff161580801561110d5750600054600160ff909116105b806111275750303b158015611127575060005460ff166001145b6111b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101bd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561121157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61122f73420000000000000000000000000000000000000783611b73565b801561129257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6112d93385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b50505050565b82341461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101bd565b61137a85858584611c5d565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd00000000000000000000000000000000000000000000000000000000906113dd908b908b9086908a906024016128e0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261147092918890600401612929565b6000604051808303818588803b15801561148957600080fd5b505af115801561149d573d6000803e3d6000fd5b50505050505050505050565b6114b2876117d4565b15611600576114c18787611836565b611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156115e357600080fd5b505af11580156115f7573d6000803e3d6000fd5b50505050611694565b61162273ffffffffffffffffffffffffffffffffffffffff8816863086611cfe565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461166090849061296e565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6116a2878787878786611d5c565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090611706908b908d908c908c908c908b90602401612986565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825261179992918790600401612929565b600060405180830381600087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b5050505050505050505050565b6000611800827f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b806118305750611830827fec4fc8e300000000000000000000000000000000000000000000000000000000611dea565b92915050565b6000611862837f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b1561190b578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d6919061287d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611830565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109ec9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e0d565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611aa2939291906129e1565b60405180910390a4610570868686868686611f19565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611b45939291906129e1565b60405180910390a46112d984848484611fa1565b600080600080845160208601878a8af19695505050505050565b600054610100900460ff16611c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101bd565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611cea939291906129e1565b60405180910390a46112d98484848461200e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526112d99085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016119a8565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611dd4939291906129e1565b60405180910390a461057086868686868661206d565b6000611df5836120e5565b8015611e065750611e068383612149565b9392505050565b6000611e6f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166122189092919063ffffffff16565b8051909150156109ec5780806020019051810190611e8d9190612a1f565b6109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101bd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f91939291906129e1565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612000929190612a41565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612000929190612a41565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f91939291906129e1565b6000612111827f01ffc9a700000000000000000000000000000000000000000000000000000000612149565b80156118305750612142827fffffffff00000000000000000000000000000000000000000000000000000000612149565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612201575060208210155b801561220d5750600081115b979650505050505050565b6060612227848460008561222f565b949350505050565b6060824710156122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101bd565b73ffffffffffffffffffffffffffffffffffffffff85163b61233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101bd565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516123689190612a5a565b60006040518083038185875af1925050503d80600081146123a5576040519150601f19603f3d011682016040523d82523d6000602084013e6123aa565b606091505b509150915061220d828286606083156123c4575081611e06565b8251156123d45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bd919061272e565b73ffffffffffffffffffffffffffffffffffffffff8116811461242a57600080fd5b50565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b600080600080600080600060c0888a03121561249157600080fd5b873561249c81612408565b965060208801356124ac81612408565b955060408801356124bc81612408565b945060608801356124cc81612408565b93506080880135925060a088013567ffffffffffffffff8111156124ef57600080fd5b6124fb8a828b0161242d565b989b979a50959850939692959293505050565b803563ffffffff8116811461252257600080fd5b919050565b60008060006040848603121561253c57600080fd5b6125458461250e565b9250602084013567ffffffffffffffff81111561256157600080fd5b61256d8682870161242d565b9497909650939450505050565b60008060008060006080868803121561259257600080fd5b853561259d81612408565b945060208601356125ad81612408565b935060408601359250606086013567ffffffffffffffff8111156125d057600080fd5b6125dc8882890161242d565b969995985093965092949392505050565b60008060008060006080868803121561260557600080fd5b853561261081612408565b9450602086013593506126256040870161250e565b9250606086013567ffffffffffffffff8111156125d057600080fd5b600080600080600080600060c0888a03121561265c57600080fd5b873561266781612408565b9650602088013561267781612408565b9550604088013561268781612408565b94506060880135935061269c6080890161250e565b925060a088013567ffffffffffffffff8111156124ef57600080fd5b60005b838110156126d35781810151838201526020016126bb565b838111156112d95750506000910152565b600081518084526126fc8160208601602086016126b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e0660208301846126e4565b60008060008060008060a0878903121561275a57600080fd5b863561276581612408565b9550602087013561277581612408565b94506040870135935061278a6060880161250e565b9250608087013567ffffffffffffffff8111156127a657600080fd5b6127b289828a0161242d565b979a9699509497509295939492505050565b600080604083850312156127d757600080fd5b82356127e281612408565b915060208301356127f281612408565b809150509250929050565b60006020828403121561280f57600080fd5b8135611e0681612408565b6000806000806060858703121561283057600080fd5b843561283b81612408565b93506128496020860161250e565b9250604085013567ffffffffffffffff81111561286557600080fd5b6128718782880161242d565b95989497509550505050565b60006020828403121561288f57600080fd5b8151611e0681612408565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156128db576128db61289a565b500390565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261291f60808301846126e4565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061295860608301856126e4565b905063ffffffff83166040830152949350505050565b600082198211156129815761298161289a565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a08301526129d560c08301846126e4565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612a1660608301846126e4565b95945050505050565b600060208284031215612a3157600080fd5b81518015158114611e0657600080fd5b82815260406020820152600061222760408301846126e4565b60008251612a6c8184602087016126b8565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1141:9307:149:-:0;;;2615:113;;;;;;;;;-1:-1:-1;2656:65:149::1;2714:1;2656:10;:65::i;:::-;1141:9307:::0;;2849:242;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:43;;216:2:357;3146:190:43;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:357;;;338:44;399:19;;3146:190:43;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:43;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:43;;;;;3372:65;2927:157:149::1;480:42:199;3061:12:149::0;2927:21:::1;:157::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:43;;;3531:14;;-1:-1:-1;581:36:357;;3531:14:43;;569:2:357;554:18;3531:14:43;;;;;;;3457:99;3090:472;2849:242:149;:::o;1175:320:59:-;-1:-1:-1;;;;;1465:19:59;;:23;;;1175:320::o;5373:236:235:-;4888:13:43;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:43;;830:2:357;4880:69:43;;;812:21:357;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:357;;;952:41;1010:19;;4880:69:43;628:407:357;4880:69:43;5544:9:235::1;:22:::0;;-1:-1:-1;;;;;5544:22:235;;::::1;-1:-1:-1::0;;;;;;5544:22:235;;::::1;;::::0;;;5576:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;5373:236::o;628:407:357:-;1141:9307:149;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061012d5760003560e01c8063662a633a116100a5578063927ede2d11610074578063c4d66de811610059578063c4d66de814610421578063c89701a214610441578063e11013dd1461046e57600080fd5b8063927ede2d146103e3578063a3a795481461040e57600080fd5b8063662a633a1461036a5780637f46ddb21461025a578063870876231461037d5780638f601f661461039d57600080fd5b806336c717c1116100fc578063540abf73116100e1578063540abf73146102d857806354fd4d50146102f85780635c975abb1461034e57600080fd5b806336c717c11461025a5780633cb747bf146102ab57600080fd5b80630166a07a1461020157806309fc8843146102215780631635f5fd1461023457806332b7006d1461024757600080fd5b366101fc57333b156101c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101fa73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d406040518060200160405280600081525061049d565b005b600080fd5b34801561020d57600080fd5b506101fa61021c366004612476565b610578565b6101fa61022f366004612527565b61091a565b6101fa61024236600461257a565b6109f1565b6101fa6102553660046125ed565b610e43565b34801561026657600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156102b757600080fd5b506003546102819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102e457600080fd5b506101fa6102f3366004612641565b610f1d565b34801561030457600080fd5b506103416040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516102a2919061272e565b34801561035a57600080fd5b50604051600081526020016102a2565b6101fa610378366004612476565b610f62565b34801561038957600080fd5b506101fa610398366004612741565b610fd5565b3480156103a957600080fd5b506103d56103b83660046127c4565b600260209081526000928352604080842090915290825290205481565b6040519081526020016102a2565b3480156103ef57600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610281565b6101fa61041c366004612741565b6110a9565b34801561042d57600080fd5b506101fa61043c3660046127fd565b6110ed565b34801561044d57600080fd5b506004546102819073ffffffffffffffffffffffffffffffffffffffff1681565b6101fa61047c36600461281a565b611296565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff8716016104ec576104e785858585856112df565b610570565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055d919061287d565b905061056e878288888888886114a9565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314801561064b575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610633919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b610706876117d4565b15610854576107158787611836565b6107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050506108d6565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a16835292905220546108929084906128c9565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c16835293905291909120919091556108d6908585611956565b61056e878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2a92505050565b333b156109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b6109ec3333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610ac4575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b610b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b823414610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101bd565b3073ffffffffffffffffffffffffffffffffffffffff851603610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101bd565b610d9785858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ab892505050565b6000610db4855a8660405180602001604052806000815250611b59565b905080610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b333b15610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b610f16853333878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b5050505050565b61056e87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b73ffffffffffffffffffffffffffffffffffffffff8716158015610faf575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b15610fc657610fc185858585856109f1565b61056e565b61056e86888787878787610578565b333b15611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b61057086863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b610570863387878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b600054610100900460ff161580801561110d5750600054600160ff909116105b806111275750303b158015611127575060005460ff166001145b6111b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101bd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561121157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61122f73420000000000000000000000000000000000000783611b73565b801561129257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6112d93385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b50505050565b82341461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101bd565b61137a85858584611c5d565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd00000000000000000000000000000000000000000000000000000000906113dd908b908b9086908a906024016128e0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261147092918890600401612929565b6000604051808303818588803b15801561148957600080fd5b505af115801561149d573d6000803e3d6000fd5b50505050505050505050565b6114b2876117d4565b15611600576114c18787611836565b611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156115e357600080fd5b505af11580156115f7573d6000803e3d6000fd5b50505050611694565b61162273ffffffffffffffffffffffffffffffffffffffff8816863086611cfe565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461166090849061296e565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6116a2878787878786611d5c565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090611706908b908d908c908c908c908b90602401612986565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825261179992918790600401612929565b600060405180830381600087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b5050505050505050505050565b6000611800827f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b806118305750611830827fec4fc8e300000000000000000000000000000000000000000000000000000000611dea565b92915050565b6000611862837f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b1561190b578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d6919061287d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611830565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109ec9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e0d565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611aa2939291906129e1565b60405180910390a4610570868686868686611f19565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611b45939291906129e1565b60405180910390a46112d984848484611fa1565b600080600080845160208601878a8af19695505050505050565b600054610100900460ff16611c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101bd565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611cea939291906129e1565b60405180910390a46112d98484848461200e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526112d99085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016119a8565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611dd4939291906129e1565b60405180910390a461057086868686868661206d565b6000611df5836120e5565b8015611e065750611e068383612149565b9392505050565b6000611e6f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166122189092919063ffffffff16565b8051909150156109ec5780806020019051810190611e8d9190612a1f565b6109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101bd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f91939291906129e1565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612000929190612a41565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612000929190612a41565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f91939291906129e1565b6000612111827f01ffc9a700000000000000000000000000000000000000000000000000000000612149565b80156118305750612142827fffffffff00000000000000000000000000000000000000000000000000000000612149565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612201575060208210155b801561220d5750600081115b979650505050505050565b6060612227848460008561222f565b949350505050565b6060824710156122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101bd565b73ffffffffffffffffffffffffffffffffffffffff85163b61233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101bd565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516123689190612a5a565b60006040518083038185875af1925050503d80600081146123a5576040519150601f19603f3d011682016040523d82523d6000602084013e6123aa565b606091505b509150915061220d828286606083156123c4575081611e06565b8251156123d45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bd919061272e565b73ffffffffffffffffffffffffffffffffffffffff8116811461242a57600080fd5b50565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b600080600080600080600060c0888a03121561249157600080fd5b873561249c81612408565b965060208801356124ac81612408565b955060408801356124bc81612408565b945060608801356124cc81612408565b93506080880135925060a088013567ffffffffffffffff8111156124ef57600080fd5b6124fb8a828b0161242d565b989b979a50959850939692959293505050565b803563ffffffff8116811461252257600080fd5b919050565b60008060006040848603121561253c57600080fd5b6125458461250e565b9250602084013567ffffffffffffffff81111561256157600080fd5b61256d8682870161242d565b9497909650939450505050565b60008060008060006080868803121561259257600080fd5b853561259d81612408565b945060208601356125ad81612408565b935060408601359250606086013567ffffffffffffffff8111156125d057600080fd5b6125dc8882890161242d565b969995985093965092949392505050565b60008060008060006080868803121561260557600080fd5b853561261081612408565b9450602086013593506126256040870161250e565b9250606086013567ffffffffffffffff8111156125d057600080fd5b600080600080600080600060c0888a03121561265c57600080fd5b873561266781612408565b9650602088013561267781612408565b9550604088013561268781612408565b94506060880135935061269c6080890161250e565b925060a088013567ffffffffffffffff8111156124ef57600080fd5b60005b838110156126d35781810151838201526020016126bb565b838111156112d95750506000910152565b600081518084526126fc8160208601602086016126b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e0660208301846126e4565b60008060008060008060a0878903121561275a57600080fd5b863561276581612408565b9550602087013561277581612408565b94506040870135935061278a6060880161250e565b9250608087013567ffffffffffffffff8111156127a657600080fd5b6127b289828a0161242d565b979a9699509497509295939492505050565b600080604083850312156127d757600080fd5b82356127e281612408565b915060208301356127f281612408565b809150509250929050565b60006020828403121561280f57600080fd5b8135611e0681612408565b6000806000806060858703121561283057600080fd5b843561283b81612408565b93506128496020860161250e565b9250604085013567ffffffffffffffff81111561286557600080fd5b6128718782880161242d565b95989497509550505050565b60006020828403121561288f57600080fd5b8151611e0681612408565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156128db576128db61289a565b500390565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261291f60808301846126e4565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061295860608301856126e4565b905063ffffffff83166040830152949350505050565b600082198211156129815761298161289a565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a08301526129d560c08301846126e4565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612a1660608301846126e4565b95945050505050565b600060208284031215612a3157600080fd5b81518015158114611e0657600080fd5b82815260406020820152600061222760408301846126e4565b60008251612a6c8184602087016126b8565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1141:9307:149:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4741:10:235;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;;;;;;;;;3228:143:149::1;2708:42:199;3290:10:149;3302;3314:9;1343:7:235;3352:9:149;;;;;;;;;;;::::0;3228:19:::1;:143::i;:::-;1141:9307:::0;;;;;12867:1084:235;;;;;;;;;;-1:-1:-1;12867:1084:235;;;;;:::i;:::-;;:::i;7253:186::-;;;;;;:::i;:::-;;:::i;11233:902::-;;;;;;:::i;:::-;;:::i;3897:313:149:-;;;;;;:::i;:::-;;:::i;6764:101::-;;;;;;;;;;-1:-1:-1;6846:11:149;;;;6764:101;;;4271:42:357;4259:55;;;4241:74;;4229:2;4214:18;6764:101:149;;;;;;;;1893:37:235;;;;;;;;;;-1:-1:-1;1893:37:235;;;;;;;;10320:349;;;;;;;;;;-1:-1:-1;10320:349:235;;;;;:::i;:::-;;:::i;2510:40:149:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6750:82:235:-;;;;;;;;;;-1:-1:-1;6750:82:235;;6797:4;6512:41:357;;6500:2;6485:18;6750:82:235;6372:187:357;6087:505:149;;;;;;:::i;:::-;;:::i;9277:349:235:-;;;;;;;;;;-1:-1:-1;9277:349:235;;;;;:::i;:::-;;:::i;1739:63::-;;;;;;;;;;-1:-1:-1;1739:63:235;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8199:25:357;;;8187:2;8172:18;1739:63:235;8053:177:357;6024:99:235;;;;;;;;;;-1:-1:-1;6107:9:235;;;;6024:99;;5197:313:149;;;;;;:::i;:::-;;:::i;2849:242::-;;;;;;;;;;-1:-1:-1;2849:242:149;;;;;:::i;:::-;;:::i;2028:33:235:-;;;;;;;;;;-1:-1:-1;2028:33:235;;;;;;;;8450:186;;;;;;:::i;:::-;;:::i;1175:320:59:-;1465:19;;;:23;;;1175:320::o;7372:554:149:-;7599:39;;;;;7595:325;;7654:65;7673:5;7680:3;7685:7;7694:12;7708:10;7654:18;:65::i;:::-;7595:325;;;7750:15;7790:8;7768:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7750:59;;7823:86;7844:8;7854:7;7863:5;7870:3;7875:7;7884:12;7898:10;7823:20;:86::i;:::-;7736:184;7595:325;7372:554;;;;;;:::o;12867:1084:235:-;5004:9;;;;4982:10;:32;:92;;;;-1:-1:-1;5062:11:235;;;5018:9;;:32;;;;;;;;5062:11;;;;;5018:9;;;;;:30;;:32;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;4982:92;4961:204;;;;;;;9591:2:357;4961:204:235;;;9573:21:357;9630:2;9610:18;;;9603:30;9669:34;9649:18;;;9642:62;9740:34;9720:18;;;9713:62;9812:3;9791:19;;;9784:32;9833:19;;4961:204:235;9389:469:357;4961:204:235;13184:37:::1;13209:11;13184:24;:37::i;:::-;13180:489;;;13262:46;13282:11;13295:12;13262:19;:46::i;:::-;13237:179;;;::::0;::::1;::::0;;10416:2:357;13237:179:235::1;::::0;::::1;10398:21:357::0;10455:2;10435:18;;;10428:30;10494:34;10474:18;;;10467:62;10565:34;10545:18;;;10538:62;10637:12;10616:19;;;10609:41;10667:19;;13237:179:235::1;10214:478:357::0;13237:179:235::1;13431:53;::::0;;;;:39:::1;10889:55:357::0;;;13431:53:235::1;::::0;::::1;10871:74:357::0;10961:18;;;10954:34;;;13431:39:235;::::1;::::0;::::1;::::0;10844:18:357;;13431:53:235::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13180:489;;;13553:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;:45:::1;::::0;13591:7;;13553:45:::1;:::i;:::-;13515:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;;;:83;;;;13612:46:::1;::::0;13645:3;13650:7;13612:32:::1;:46::i;:::-;13859:85;13885:11;13898:12;13912:5;13919:3;13924:7;13933:10;;13859:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13859:25:235::1;::::0;-1:-1:-1;;;13859:85:235:i:1;7253:186::-:0;4741:10;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;14:419:357;4713:99:235;7353:79:::1;7372:10;7384;7396:9;7407:12;7421:10;;7353:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7353:18:235::1;::::0;-1:-1:-1;;;7353:79:235:i:1;:::-;7253:186:::0;;;:::o;11233:902::-;5004:9;;;;4982:10;:32;:92;;;;-1:-1:-1;5062:11:235;;;5018:9;;:32;;;;;;;;5062:11;;;;;5018:9;;;;;:30;;:32;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;4982:92;4961:204;;;;;;;9591:2:357;4961:204:235;;;9573:21:357;9630:2;9610:18;;;9603:30;9669:34;9649:18;;;9642:62;9740:34;9720:18;;;9713:62;9812:3;9791:19;;;9784:32;9833:19;;4961:204:235;9389:469:357;4961:204:235;11522:7:::1;11509:9;:20;11501:91;;;::::0;::::1;::::0;;11520:2:357;11501:91:235::1;::::0;::::1;11502:21:357::0;11559:2;11539:18;;;11532:30;11598:34;11578:18;;;11571:62;11669:28;11649:18;;;11642:56;11715:19;;11501:91:235::1;11318:422:357::0;11501:91:235::1;11625:4;11610:20;::::0;::::1;::::0;11602:68:::1;;;::::0;::::1;::::0;;11947:2:357;11602:68:235::1;::::0;::::1;11929:21:357::0;11986:2;11966:18;;;11959:30;12025:34;12005:18;;;11998:62;12096:5;12076:18;;;12069:33;12119:19;;11602:68:235::1;11745:399:357::0;11602:68:235::1;11703:9;::::0;::::1;::::0;;::::1;11688:25:::0;;::::1;::::0;11680:78:::1;;;::::0;::::1;::::0;;12351:2:357;11680:78:235::1;::::0;::::1;12333:21:357::0;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;12500:10;12480:18;;;12473:38;12528:19;;11680:78:235::1;12149:404:357::0;11680:78:235::1;11936:56;11960:5;11967:3;11972:7;11981:10;;11936:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11936:23:235::1;::::0;-1:-1:-1;;;11936:56:235:i:1;:::-;12003:12;12018:45;12032:3;12037:9;12048:7;12018:45;;;;;;;;;;;::::0;:13:::1;:45::i;:::-;12003:60;;12081:7;12073:55;;;::::0;::::1;::::0;;12760:2:357;12073:55:235::1;::::0;::::1;12742:21:357::0;12799:2;12779:18;;;12772:30;12838:34;12818:18;;;12811:62;12909:5;12889:18;;;12882:33;12932:19;;12073:55:235::1;12558:399:357::0;3897:313:149;4741:10:235;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;14:419:357;4713:99:235;4115:88:149::1;4135:8;4145:10;4157;4169:7;4178:12;4192:10;;4115:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4115:19:149::1;::::0;-1:-1:-1;;;4115:88:149:i:1;:::-;3897:313:::0;;;;;:::o;10320:349:235:-;10563:99;10584:11;10597:12;10611:10;10623:3;10628:7;10637:12;10651:10;;10563:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10563:20:235;;-1:-1:-1;;;10563:99:235:i;6087:505:149:-;6341:22;;;;:65;;;;-1:-1:-1;6367:39:149;;;2708:42:199;6367:39:149;6341:65;6337:249;;;6422:50;6440:5;6447:3;6452:7;6461:10;;6422:17;:50::i;:::-;6337:249;;;6503:72;6523:8;6533;6543:5;6550:3;6555:7;6564:10;;6503:19;:72::i;9277:349:235:-;4741:10;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;14:419:357;4713:99:235;9513:106:::1;9534:11;9547:12;9561:10;9573;9585:7;9594:12;9608:10;;9513:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9513:20:235::1;::::0;-1:-1:-1;;;9513:106:235:i:1;5197:313:149:-:0;5422:81;5442:8;5452:10;5464:3;5469:7;5478:12;5492:10;;5422:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5422:19:149;;-1:-1:-1;;;5422:81:149:i;2849:242::-;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:43;1465:19:59;:23;;;3208:55:43;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;;;;13164:2:357;3146:190:43;;;13146:21:357;13203:2;13183:18;;;13176:30;13242:34;13222:18;;;13215:62;13313:16;13293:18;;;13286:44;13347:19;;3146:190:43;12962:410:357;3146:190:43;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;2927:157:149::1;480:42:199;3061:12:149;2927:21;:157::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;13529:36:357;;3531:14:43;;13517:2:357;13502:18;3531:14:43;;;;;;;3457:99;3090:472;2849:242:149;:::o;8450:186:235:-;8557:72;8576:10;8588:3;8593:9;8604:12;8618:10;;8557:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8557:18:235;;-1:-1:-1;;;8557:72:235:i;:::-;8450:186;;;;:::o;14539:789::-;14756:7;14743:9;:20;14735:95;;;;;;;13778:2:357;14735:95:235;;;13760:21:357;13817:2;13797:18;;;13790:30;13856:34;13836:18;;;13829:62;13927:32;13907:18;;;13900:60;13977:19;;14735:95:235;13576:426:357;14735:95:235;15008:56;15032:5;15039:3;15044:7;15053:10;15008:23;:56::i;:::-;15075:9;;15146:11;;15182:88;;15075:9;;;;;:21;;15105:7;;15146:11;;;15205:31;;15182:88;;15238:5;;15245:3;;15105:7;;15259:10;;15182:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15075:246;;;;;;;;;;;;;15298:12;;15075:246;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14539:789;;;;;:::o;16022:1680::-;16283:37;16308:11;16283:24;:37::i;:::-;16279:512;;;16361:46;16381:11;16394:12;16361:19;:46::i;:::-;16336:179;;;;;;;10416:2:357;16336:179:235;;;10398:21:357;10455:2;10435:18;;;10428:30;10494:34;10474:18;;;10467:62;10565:34;10545:18;;;10538:62;10637:12;10616:19;;;10609:41;10667:19;;16336:179:235;10214:478:357;16336:179:235;16530:55;;;;;:39;10889:55:357;;;16530::235;;;10871:74:357;10961:18;;;10954:34;;;16530:39:235;;;;;10844:18:357;;16530:55:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16279:512;;;16616:67;:36;;;16653:5;16668:4;16675:7;16616:36;:67::i;:::-;16735:21;;;;;;;;:8;:21;;;;;;;;:35;;;;;;;;;;:45;;16773:7;;16735:45;:::i;:::-;16697:21;;;;;;;;:8;:21;;;;;;;;:35;;;;;;;;;:83;16279:512;16981:85;17007:11;17020:12;17034:5;17041:3;17046:7;17055:10;16981:25;:85::i;:::-;17077:9;;17130:11;;17166:478;;17077:9;;;;;:21;;17130:11;;17206:33;;17166:478;;17492:12;;17522:11;;17551:5;;17574:3;;17595:7;;17620:10;;17166:478;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17077:618;;;;;;;;;;;;;17672:12;;17077:618;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16022:1680;;;;;;;:::o;17966:279::-;18039:4;18062:79;18094:6;18102:38;18062:31;:79::i;:::-;:176;;;;18157:81;18189:6;18197:40;18157:31;:81::i;:::-;18055:183;17966:279;-1:-1:-1;;17966:279:235:o;18692:410::-;18789:4;18809:87;18841:14;18857:38;18809:31;:87::i;:::-;18805:291;;;18955:14;18934:44;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18919:61;;:11;:61;;;18912:68;;;;18805:291;19056:14;19033:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;763:205:52;902:58;;10901:42:357;10889:55;;902:58:52;;;10871:74:357;10961:18;;;10954:34;;;875:86:52;;895:5;;925:23;;10844:18:357;;902:58:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;875:19;:86::i;10007:439:149:-;10306:5;10262:76;;10293:11;10262:76;;10279:12;10262:76;;;10313:3;10318:7;10327:10;10262:76;;;;;;;;:::i;:::-;;;;;;;;10348:91;10380:11;10393:12;10407:5;10414:3;10419:7;10428:10;10348:31;:91::i;8745:363::-;8997:5;8939:90;;2708:42:199;8939:90:149;;8964:1;8939:90;;;9004:3;9009:7;9018:10;8939:90;;;;;;;;:::i;:::-;;;;;;;;9039:62;9069:5;9076:3;9081:7;9090:10;9039:29;:62::i;1202:536:200:-;1305:4;1321:13;1668:1;1635;1594:9;1588:16;1554:2;1543:9;1539:18;1496:6;1454:7;1421:4;1395:302;1367:330;1202:536;-1:-1:-1;;;;;;1202:536:200:o;5373:236:235:-;4888:13:43;;;;;;;4880:69;;;;;;;16381:2:357;4880:69:43;;;16363:21:357;16420:2;16400:18;;;16393:30;16459:34;16439:18;;;16432:62;16530:13;16510:18;;;16503:41;16561:19;;4880:69:43;16179:407:357;4880:69:43;5544:9:235::1;:22:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;5576:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;5373:236::o;8154:366:149:-;8409:5;8348:93;;2708:42:199;8348:93:149;;8376:1;8348:93;;;8416:3;8421:7;8430:10;8348:93;;;;;;;;:::i;:::-;;;;;;;;8451:62;8481:5;8488:3;8493:7;8502:10;8451:29;:62::i;974:241:52:-;1139:68;;16803:42:357;16872:15;;;1139:68:52;;;16854:34:357;16924:15;;16904:18;;;16897:43;16956:18;;;16949:34;;;1112:96:52;;1132:5;;1162:27;;16766:18:357;;1139:68:52;16591:398:357;9338:442:149;9640:5;9593:79;;9627:11;9593:79;;9613:12;9593:79;;;9647:3;9652:7;9661:10;9593:79;;;;;;;;:::i;:::-;;;;;;;;9682:91;9714:11;9727:12;9741:5;9748:3;9753:7;9762:10;9682:31;:91::i;1333:274:67:-;1420:4;1527:23;1542:7;1527:14;:23::i;:::-;:73;;;;;1554:46;1579:7;1588:11;1554:24;:46::i;:::-;1520:80;1333:274;-1:-1:-1;;;1333:274:67:o;3747:706:52:-;4166:23;4192:69;4220:4;4192:69;;;;;;;;;;;;;;;;;4200:5;4192:27;;;;:69;;;;;:::i;:::-;4275:17;;4166:95;;-1:-1:-1;4275:21:52;4271:176;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;;;;17478:2:357;4351:85:52;;;17460:21:357;17517:2;17497:18;;;17490:30;17556:34;17536:18;;;17529:62;17627:12;17607:18;;;17600:40;17657:19;;4351:85:52;17276:406:357;21757:341:235;22059:5;22011:80;;22045:12;22011:80;;22032:11;22011:80;;;22066:3;22071:7;22080:10;22011:80;;;;;;;;:::i;:::-;;;;;;;;21757:341;;;;;;:::o;20099:251::-;20318:3;20292:51;;20311:5;20292:51;;;20323:7;20332:10;20292:51;;;;;;;:::i;:::-;;;;;;;;20099:251;;;;:::o;19478:::-;19697:3;19671:51;;19690:5;19671:51;;;19702:7;19711:10;19671:51;;;;;;;:::i;20883:341::-;21185:5;21137:80;;21171:12;21137:80;;21158:11;21137:80;;;21192:3;21197:7;21206:10;21137:80;;;;;;;;:::i;704:411:67:-;768:4;975:60;1000:7;1009:25;975:24;:60::i;:::-;:133;;;;-1:-1:-1;1052:56:67;1077:7;1086:21;1052:24;:56::i;:::-;1051:57;956:152;704:411;-1:-1:-1;;704:411:67:o;4223:638::-;4385:71;;;18155:66:357;18143:79;;4385:71:67;;;;18125:98:357;;;;4385:71:67;;;;;;;;;;18098:18:357;;;;4385:71:67;;;;;;;;;;;4408:34;4385:71;;;4664:20;;4316:4;;4385:71;4316:4;;;;;;4385:71;4316:4;;4664:20;4629:7;4622:5;4611:86;4600:97;;4724:16;4710:30;;4774:4;4768:11;4753:26;;4806:7;:29;;;;;4831:4;4817:10;:18;;4806:29;:48;;;;;4853:1;4839:11;:15;4806:48;4799:55;4223:638;-1:-1:-1;;;;;;;4223:638:67:o;3861:223:59:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;3861:223;-1:-1:-1;;;;3861:223:59:o;4948:499::-;5113:12;5170:5;5145:21;:30;;5137:81;;;;;;;18436:2:357;5137:81:59;;;18418:21:357;18475:2;18455:18;;;18448:30;18514:34;18494:18;;;18487:62;18585:8;18565:18;;;18558:36;18611:19;;5137:81:59;18234:402:357;5137:81:59;1465:19;;;;5228:60;;;;;;;18843:2:357;5228:60:59;;;18825:21:357;18882:2;18862:18;;;18855:30;18921:31;18901:18;;;18894:59;18970:18;;5228:60:59;18641:353:357;5228:60:59;5300:12;5314:23;5341:6;:11;;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;7707;7735:7;7731:566;;;-1:-1:-1;7765:10:59;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;;;;;;;;;;:::i;438:154:357:-;524:42;517:5;513:54;506:5;503:65;493:93;;582:1;579;572:12;493:93;438:154;:::o;597:347::-;648:8;658:6;712:3;705:4;697:6;693:17;689:27;679:55;;730:1;727;720:12;679:55;-1:-1:-1;753:20:357;;796:18;785:30;;782:50;;;828:1;825;818:12;782:50;865:4;857:6;853:17;841:29;;917:3;910:4;901:6;893;889:19;885:30;882:39;879:59;;;934:1;931;924:12;879:59;597:347;;;;;:::o;949:1038::-;1064:6;1072;1080;1088;1096;1104;1112;1165:3;1153:9;1144:7;1140:23;1136:33;1133:53;;;1182:1;1179;1172:12;1133:53;1221:9;1208:23;1240:31;1265:5;1240:31;:::i;:::-;1290:5;-1:-1:-1;1347:2:357;1332:18;;1319:32;1360:33;1319:32;1360:33;:::i;:::-;1412:7;-1:-1:-1;1471:2:357;1456:18;;1443:32;1484:33;1443:32;1484:33;:::i;:::-;1536:7;-1:-1:-1;1595:2:357;1580:18;;1567:32;1608:33;1567:32;1608:33;:::i;:::-;1660:7;-1:-1:-1;1714:3:357;1699:19;;1686:33;;-1:-1:-1;1770:3:357;1755:19;;1742:33;1798:18;1787:30;;1784:50;;;1830:1;1827;1820:12;1784:50;1869:58;1919:7;1910:6;1899:9;1895:22;1869:58;:::i;:::-;949:1038;;;;-1:-1:-1;949:1038:357;;-1:-1:-1;949:1038:357;;;;1843:84;;-1:-1:-1;;;949:1038:357:o;1992:163::-;2059:20;;2119:10;2108:22;;2098:33;;2088:61;;2145:1;2142;2135:12;2088:61;1992:163;;;:::o;2160:481::-;2238:6;2246;2254;2307:2;2295:9;2286:7;2282:23;2278:32;2275:52;;;2323:1;2320;2313:12;2275:52;2346:28;2364:9;2346:28;:::i;:::-;2336:38;;2425:2;2414:9;2410:18;2397:32;2452:18;2444:6;2441:30;2438:50;;;2484:1;2481;2474:12;2438:50;2523:58;2573:7;2564:6;2553:9;2549:22;2523:58;:::i;:::-;2160:481;;2600:8;;-1:-1:-1;2497:84:357;;-1:-1:-1;;;;2160:481:357:o;2646:754::-;2743:6;2751;2759;2767;2775;2828:3;2816:9;2807:7;2803:23;2799:33;2796:53;;;2845:1;2842;2835:12;2796:53;2884:9;2871:23;2903:31;2928:5;2903:31;:::i;:::-;2953:5;-1:-1:-1;3010:2:357;2995:18;;2982:32;3023:33;2982:32;3023:33;:::i;:::-;3075:7;-1:-1:-1;3129:2:357;3114:18;;3101:32;;-1:-1:-1;3184:2:357;3169:18;;3156:32;3211:18;3200:30;;3197:50;;;3243:1;3240;3233:12;3197:50;3282:58;3332:7;3323:6;3312:9;3308:22;3282:58;:::i;:::-;2646:754;;;;-1:-1:-1;2646:754:357;;-1:-1:-1;3359:8:357;;3256:84;2646:754;-1:-1:-1;;;2646:754:357:o;3405:685::-;3501:6;3509;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3642:9;3629:23;3661:31;3686:5;3661:31;:::i;:::-;3711:5;-1:-1:-1;3763:2:357;3748:18;;3735:32;;-1:-1:-1;3786:37:357;3819:2;3804:18;;3786:37;:::i;:::-;3776:47;;3874:2;3863:9;3859:18;3846:32;3901:18;3893:6;3890:30;3887:50;;;3933:1;3930;3923:12;4588:969;4702:6;4710;4718;4726;4734;4742;4750;4803:3;4791:9;4782:7;4778:23;4774:33;4771:53;;;4820:1;4817;4810:12;4771:53;4859:9;4846:23;4878:31;4903:5;4878:31;:::i;:::-;4928:5;-1:-1:-1;4985:2:357;4970:18;;4957:32;4998:33;4957:32;4998:33;:::i;:::-;5050:7;-1:-1:-1;5109:2:357;5094:18;;5081:32;5122:33;5081:32;5122:33;:::i;:::-;5174:7;-1:-1:-1;5228:2:357;5213:18;;5200:32;;-1:-1:-1;5251:38:357;5284:3;5269:19;;5251:38;:::i;:::-;5241:48;;5340:3;5329:9;5325:19;5312:33;5368:18;5360:6;5357:30;5354:50;;;5400:1;5397;5390:12;5562:258;5634:1;5644:113;5658:6;5655:1;5652:13;5644:113;;;5734:11;;;5728:18;5715:11;;;5708:39;5680:2;5673:10;5644:113;;;5775:6;5772:1;5769:13;5766:48;;;-1:-1:-1;;5810:1:357;5792:16;;5785:27;5562:258::o;5825:317::-;5867:3;5905:5;5899:12;5932:6;5927:3;5920:19;5948:63;6004:6;5997:4;5992:3;5988:14;5981:4;5974:5;5970:16;5948:63;:::i;:::-;6056:2;6044:15;6061:66;6040:88;6031:98;;;;6131:4;6027:109;;5825:317;-1:-1:-1;;5825:317:357:o;6147:220::-;6296:2;6285:9;6278:21;6259:4;6316:45;6357:2;6346:9;6342:18;6334:6;6316:45;:::i;6828:827::-;6933:6;6941;6949;6957;6965;6973;7026:3;7014:9;7005:7;7001:23;6997:33;6994:53;;;7043:1;7040;7033:12;6994:53;7082:9;7069:23;7101:31;7126:5;7101:31;:::i;:::-;7151:5;-1:-1:-1;7208:2:357;7193:18;;7180:32;7221:33;7180:32;7221:33;:::i;:::-;7273:7;-1:-1:-1;7327:2:357;7312:18;;7299:32;;-1:-1:-1;7350:37:357;7383:2;7368:18;;7350:37;:::i;:::-;7340:47;;7438:3;7427:9;7423:19;7410:33;7466:18;7458:6;7455:30;7452:50;;;7498:1;7495;7488:12;7452:50;7537:58;7587:7;7578:6;7567:9;7563:22;7537:58;:::i;:::-;6828:827;;;;-1:-1:-1;6828:827:357;;-1:-1:-1;6828:827:357;;7614:8;;6828:827;-1:-1:-1;;;6828:827:357:o;7660:388::-;7728:6;7736;7789:2;7777:9;7768:7;7764:23;7760:32;7757:52;;;7805:1;7802;7795:12;7757:52;7844:9;7831:23;7863:31;7888:5;7863:31;:::i;:::-;7913:5;-1:-1:-1;7970:2:357;7955:18;;7942:32;7983:33;7942:32;7983:33;:::i;:::-;8035:7;8025:17;;;7660:388;;;;;:::o;8235:272::-;8319:6;8372:2;8360:9;8351:7;8347:23;8343:32;8340:52;;;8388:1;8385;8378:12;8340:52;8427:9;8414:23;8446:31;8471:5;8446:31;:::i;8512:616::-;8599:6;8607;8615;8623;8676:2;8664:9;8655:7;8651:23;8647:32;8644:52;;;8692:1;8689;8682:12;8644:52;8731:9;8718:23;8750:31;8775:5;8750:31;:::i;:::-;8800:5;-1:-1:-1;8824:37:357;8857:2;8842:18;;8824:37;:::i;:::-;8814:47;;8912:2;8901:9;8897:18;8884:32;8939:18;8931:6;8928:30;8925:50;;;8971:1;8968;8961:12;8925:50;9010:58;9060:7;9051:6;9040:9;9036:22;9010:58;:::i;:::-;8512:616;;;;-1:-1:-1;9087:8:357;-1:-1:-1;;;;8512:616:357:o;9133:251::-;9203:6;9256:2;9244:9;9235:7;9231:23;9227:32;9224:52;;;9272:1;9269;9262:12;9224:52;9304:9;9298:16;9323:31;9348:5;9323:31;:::i;10999:184::-;11051:77;11048:1;11041:88;11148:4;11145:1;11138:15;11172:4;11169:1;11162:15;11188:125;11228:4;11256:1;11253;11250:8;11247:34;;;11261:18;;:::i;:::-;-1:-1:-1;11298:9:357;;11188:125::o;14007:512::-;14201:4;14230:42;14311:2;14303:6;14299:15;14288:9;14281:34;14363:2;14355:6;14351:15;14346:2;14335:9;14331:18;14324:43;;14403:6;14398:2;14387:9;14383:18;14376:34;14446:3;14441:2;14430:9;14426:18;14419:31;14467:46;14508:3;14497:9;14493:19;14485:6;14467:46;:::i;:::-;14459:54;14007:512;-1:-1:-1;;;;;;14007:512:357:o;14524:424::-;14737:42;14729:6;14725:55;14714:9;14707:74;14817:2;14812;14801:9;14797:18;14790:30;14688:4;14837:45;14878:2;14867:9;14863:18;14855:6;14837:45;:::i;:::-;14829:53;;14930:10;14922:6;14918:23;14913:2;14902:9;14898:18;14891:51;14524:424;;;;;;:::o;14953:128::-;14993:3;15024:1;15020:6;15017:1;15014:13;15011:39;;;15030:18;;:::i;:::-;-1:-1:-1;15066:9:357;;14953:128::o;15086:674::-;15336:4;15365:42;15446:2;15438:6;15434:15;15423:9;15416:34;15498:2;15490:6;15486:15;15481:2;15470:9;15466:18;15459:43;15550:2;15542:6;15538:15;15533:2;15522:9;15518:18;15511:43;15602:2;15594:6;15590:15;15585:2;15574:9;15570:18;15563:43;;15643:6;15637:3;15626:9;15622:19;15615:35;15687:3;15681;15670:9;15666:19;15659:32;15708:46;15749:3;15738:9;15734:19;15726:6;15708:46;:::i;:::-;15700:54;15086:674;-1:-1:-1;;;;;;;;15086:674:357:o;15765:409::-;15980:42;15972:6;15968:55;15957:9;15950:74;16060:6;16055:2;16044:9;16040:18;16033:34;16103:2;16098;16087:9;16083:18;16076:30;15931:4;16123:45;16164:2;16153:9;16149:18;16141:6;16123:45;:::i;:::-;16115:53;15765:409;-1:-1:-1;;;;;15765:409:357:o;16994:277::-;17061:6;17114:2;17102:9;17093:7;17089:23;17085:32;17082:52;;;17130:1;17127;17120:12;17082:52;17162:9;17156:16;17215:5;17208:13;17201:21;17194:5;17191:32;17181:60;;17237:1;17234;17227:12;17687:289;17862:6;17851:9;17844:25;17905:2;17900;17889:9;17885:18;17878:30;17825:4;17925:45;17966:2;17955:9;17951:18;17943:6;17925:45;:::i;18999:274::-;19128:3;19166:6;19160:13;19182:53;19228:6;19223:3;19216:4;19208:6;19204:17;19182:53;:::i;:::-;19251:16;;;;;18999:274;-1:-1:-1;;18999:274:357:o","linkReferences":{}},"methodIdentifiers":{"MESSENGER()":"927ede2d","OTHER_BRIDGE()":"7f46ddb2","bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","bridgeETH(uint32,bytes)":"09fc8843","bridgeETHTo(address,uint32,bytes)":"e11013dd","deposits(address,address)":"8f601f66","finalizeBridgeERC20(address,address,address,address,uint256,bytes)":"0166a07a","finalizeBridgeETH(address,address,uint256,bytes)":"1635f5fd","finalizeDeposit(address,address,address,address,uint256,bytes)":"662a633a","initialize(address)":"c4d66de8","l1TokenBridge()":"36c717c1","messenger()":"3cb747bf","otherBridge()":"c89701a2","paused()":"5c975abb","version()":"54fd4d50","withdraw(address,uint256,uint32,bytes)":"32b7006d","withdrawTo(address,address,uint256,uint32,bytes)":"a3a79548"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"DepositFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"ERC20BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"ERC20BridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"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\":\"WithdrawalInitiated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"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\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"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\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETHTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"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\":\"finalizeBridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"finalizeBridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"finalizeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"_otherBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1TokenBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:proxied\":\"@custom:predeploy 0x4200000000000000000000000000000000000010\",\"events\":{\"DepositFinalized(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 deposit is finalized.\",\"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.\"}},\"WithdrawalInitiated(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever a withdrawal from L2 to L1 is initiated.\",\"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\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the messenger on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"bridgeETH(uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\"}},\"bridgeETHTo(address,uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of the ERC20 being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of ETH being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will                   not be triggered with this data, but it will be emitted and can be used                   to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_to\":\"Address of the receiver.\"}},\"finalizeDeposit(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Finalizes a deposit from L1 to L2. To finalize a deposit of ether, use address(0)         and the l1Token and the Legacy ERC20 ether predeploy address as the l2Token.\",\"params\":{\"_amount\":\"Amount of the tokens being deposited.\",\"_extraData\":\"Extra data attached to the deposit.\",\"_from\":\"Address of the depositor.\",\"_l1Token\":\"Address of the L1 token to deposit.\",\"_l2Token\":\"Address of the corresponding L2 token.\",\"_to\":\"Address of the recipient.\"}},\"initialize(address)\":{\"params\":{\"_otherBridge\":\"Contract for the corresponding bridge on the other chain.\"}},\"l1TokenBridge()\":{\"custom:legacy\":\"@notice Retrieves the access of the corresponding L1 bridge contract.\",\"returns\":{\"_0\":\"Address of the corresponding L1 bridge contract.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}},\"withdraw(address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Initiates a withdrawal from L2 to L1.         This function only works with OptimismMintableERC20 tokens or ether. Use the         `bridgeERC20` function to bridge native L2 tokens to L1.\",\"params\":{\"_amount\":\"Amount of the L2 token to withdraw.\",\"_extraData\":\"Extra data attached to the withdrawal.\",\"_l2Token\":\"Address of the L2 token to withdraw.\",\"_minGasLimit\":\"Minimum gas limit to use for the transaction.\"}},\"withdrawTo(address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Initiates a withdrawal from L2 to L1 to a target account on L1.         Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will         be locked in the L1StandardBridge. ETH may be recoverable if the call can be         successfully replayed by increasing the amount of gas supplied to the call. If the         call will fail for any amount of gas, then the ETH will be locked permanently.         This function only works with OptimismMintableERC20 tokens or ether. Use the         `bridgeERC20To` function to bridge native L2 tokens to L1.\",\"params\":{\"_amount\":\"Amount of the L2 token to withdraw.\",\"_extraData\":\"Extra data attached to the withdrawal.\",\"_l2Token\":\"Address of the L2 token to withdraw.\",\"_minGasLimit\":\"Minimum gas limit to use for the transaction.\",\"_to\":\"Recipient account on L1.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.8.0\"}},\"title\":\"L2StandardBridge\",\"version\":1},\"userdoc\":{\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is finalized on this chain.\"},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is initiated to the other chain.\"},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is finalized on this chain.\"},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is initiated to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Getter for messenger contract.         Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Getter for the other bridge contract.         Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to the sender's address on the other chain.\"},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to a receiver's address on the other chain.\"},\"bridgeETH(uint32,bytes)\":{\"notice\":\"Sends ETH to the sender's address on the other chain.\"},\"bridgeETHTo(address,uint32,bytes)\":{\"notice\":\"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a         smart contract and the call fails, the ETH will be temporarily locked in the         StandardBridge on the other chain until the call is replayed. If the call cannot be         replayed with any amount of gas (call always reverts), then the ETH will be         permanently locked in the StandardBridge on the other chain. ETH will also         be locked if the receiver is the other bridge, because finalizeBridgeETH will revert         in that case.\"},\"constructor\":{\"notice\":\"Constructs the L2StandardBridge contract.\"},\"deposits(address,address)\":{\"notice\":\"Mapping that stores deposits for a given pair of local and remote tokens.\"},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other         StandardBridge contract on the remote chain.\"},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ETH bridge on this chain. Can only be triggered by the other         StandardBridge contract on the remote chain.\"},\"initialize(address)\":{\"notice\":\"Initializer.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Corresponding bridge on the other domain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op.\"}},\"notice\":\"The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and         L2. In the case that an ERC20 token is native to L2, it will be escrowed within this         contract. If the ERC20 token is native to L1, it will be burnt.         NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples         of some token types that may not be properly supported by this contract include, but are         not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L2/L2StandardBridge.sol\":\"L2StandardBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"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/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/L2/L2StandardBridge.sol\":{\"keccak256\":\"0x9f17720ac0b3b44723b02385a19063cf22704cd0bd253fce3e6d24b9f76bd629\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1575cf22553428baf7abb23059cb97c29e534ab5214f13d54a1810349166c570\",\"dweb:/ipfs/Qme2oVH1pd1rBe1AyxUjHrofDgHXdHaUiqSgBVsSSLbKN5\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff\",\"dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663\",\"dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1\",\"dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n\"]},\"src/universal/IOptimismMintableERC20.sol\":{\"keccak256\":\"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf\",\"dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7\",\"dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0x1a2f6afd7f14430ae2b797e09497c3dc860ed5db752e1847e30649668060c01d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fefe1356cdeb5b324e4e63e1c723c08f9e244ef2ef133b9f5df0cc0d180eeaa8\",\"dweb:/ipfs/QmZzR3zWKodwdwrdWwXUyh7G3qcFn2cjUQLrE45gRyQMn3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"DepositFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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":"ERC20BridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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":"ERC20BridgeInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","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":"WithdrawalInitiated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSENGER","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_BRIDGE","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","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":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","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":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETH"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETHTo"},{"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":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","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":"finalizeBridgeERC20"},{"inputs":[{"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":"payable","type":"function","name":"finalizeBridgeETH"},{"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":"payable","type":"function","name":"finalizeDeposit"},{"inputs":[{"internalType":"contract StandardBridge","name":"_otherBridge","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"l1TokenBridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"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":"payable","type":"function","name":"withdraw"},{"inputs":[{"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":"payable","type":"function","name":"withdrawTo"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"MESSENGER()":{"custom:legacy":"","returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"custom:legacy":"","returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                   not be triggered with this data, but it will be emitted and can be used                   to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"finalizeDeposit(address,address,address,address,uint256,bytes)":{"custom:legacy":"@notice Finalizes a deposit from L1 to L2. To finalize a deposit of ether, use address(0)         and the l1Token and the Legacy ERC20 ether predeploy address as the l2Token.","params":{"_amount":"Amount of the tokens being deposited.","_extraData":"Extra data attached to the deposit.","_from":"Address of the depositor.","_l1Token":"Address of the L1 token to deposit.","_l2Token":"Address of the corresponding L2 token.","_to":"Address of the recipient."}},"initialize(address)":{"params":{"_otherBridge":"Contract for the corresponding bridge on the other chain."}},"l1TokenBridge()":{"custom:legacy":"@notice Retrieves the access of the corresponding L1 bridge contract.","returns":{"_0":"Address of the corresponding L1 bridge contract."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"withdraw(address,uint256,uint32,bytes)":{"custom:legacy":"@notice Initiates a withdrawal from L2 to L1.         This function only works with OptimismMintableERC20 tokens or ether. Use the         `bridgeERC20` function to bridge native L2 tokens to L1.","params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction."}},"withdrawTo(address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Initiates a withdrawal from L2 to L1 to a target account on L1.         Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will         be locked in the L1StandardBridge. ETH may be recoverable if the call can be         successfully replayed by increasing the amount of gas supplied to the call. If the         call will fail for any amount of gas, then the ETH will be locked permanently.         This function only works with OptimismMintableERC20 tokens or ether. Use the         `bridgeERC20To` function to bridge native L2 tokens to L1.","params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction.","_to":"Recipient account on L1."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract.         Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract.         Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a         smart contract and the call fails, the ETH will be temporarily locked in the         StandardBridge on the other chain until the call is replayed. If the call cannot be         replayed with any amount of gas (call always reverts), then the ETH will be         permanently locked in the StandardBridge on the other chain. ETH will also         be locked if the receiver is the other bridge, because finalizeBridgeETH will revert         in that case."},"constructor":{"notice":"Constructs the L2StandardBridge contract."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other         StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other         StandardBridge contract on the remote chain."},"initialize(address)":{"notice":"Initializer."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op."}},"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/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L2/L2StandardBridge.sol":"L2StandardBridge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed","urls":["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461","dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408","urls":["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409","dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"],"license":"MIT"},"src/L2/L2StandardBridge.sol":{"keccak256":"0x9f17720ac0b3b44723b02385a19063cf22704cd0bd253fce3e6d24b9f76bd629","urls":["bzz-raw://1575cf22553428baf7abb23059cb97c29e534ab5214f13d54a1810349166c570","dweb:/ipfs/Qme2oVH1pd1rBe1AyxUjHrofDgHXdHaUiqSgBVsSSLbKN5"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db","urls":["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72","dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010","urls":["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f","dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132","urls":["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b","dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87","urls":["bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff","dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8","urls":["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12","dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"],"license":"MIT"},"src/libraries/Predeploys.sol":{"keccak256":"0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02","urls":["bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663","dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/libraries/rlp/RLPWriter.sol":{"keccak256":"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6","urls":["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b","dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"],"license":"MIT"},"src/universal/CrossDomainMessenger.sol":{"keccak256":"0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0","urls":["bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1","dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n"],"license":"MIT"},"src/universal/IOptimismMintableERC20.sol":{"keccak256":"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c","urls":["bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf","dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df","urls":["bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7","dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa"],"license":"MIT"},"src/universal/StandardBridge.sol":{"keccak256":"0x1a2f6afd7f14430ae2b797e09497c3dc860ed5db752e1847e30649668060c01d","urls":["bzz-raw://fefe1356cdeb5b324e4e63e1c723c08f9e244ef2ef133b9f5df0cc0d180eeaa8","dweb:/ipfs/QmZzR3zWKodwdwrdWwXUyh7G3qcFn2cjUQLrE45gRyQMn3"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":49534,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":49537,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":110944,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":110947,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"spacer_1_0_20","offset":0,"slot":"1","type":"t_address"},{"astId":110954,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"deposits","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":110958,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"messenger","offset":0,"slot":"3","type":"t_contract(CrossDomainMessenger)108888"},{"astId":110962,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"otherBridge","offset":0,"slot":"4","type":"t_contract(StandardBridge)111675"},{"astId":110967,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"__gap","offset":0,"slot":"5","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_contract(CrossDomainMessenger)108888":{"encoding":"inplace","label":"contract CrossDomainMessenger","numberOfBytes":"20"},"t_contract(StandardBridge)111675":{"encoding":"inplace","label":"contract StandardBridge","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"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract.         Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract.         Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a         smart contract and the call fails, the ETH will be temporarily locked in the         StandardBridge on the other chain until the call is replayed. If the call cannot be         replayed with any amount of gas (call always reverts), then the ETH will be         permanently locked in the StandardBridge on the other chain. ETH will also         be locked if the receiver is the other bridge, because finalizeBridgeETH will revert         in that case."},"constructor":{"notice":"Constructs the L2StandardBridge contract."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other         StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other         StandardBridge contract on the remote chain."},"initialize(address)":{"notice":"Initializer."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op."}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is finalized on this chain."},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is initiated to the other chain."},"ETHBridgeFinalized(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is finalized on this chain."},"ETHBridgeInitiated(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is initiated to the other chain."}},"notice":"The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and         L2. In the case that an ERC20 token is native to L2, it will be escrowed within this         contract. If the ERC20 token is native to L1, it will be burnt.         NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples         of some token types that may not be properly supported by this contract include, but are         not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists."},"devdoc":{"version":1,"kind":"dev","methods":{"MESSENGER()":{"returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                     not be triggered with this data, but it will be emitted and can be used                     to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will                   not be triggered with this data, but it will be emitted and can be used                   to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"finalizeDeposit(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the tokens being deposited.","_extraData":"Extra data attached to the deposit.","_from":"Address of the depositor.","_l1Token":"Address of the L1 token to deposit.","_l2Token":"Address of the corresponding L2 token.","_to":"Address of the recipient."}},"initialize(address)":{"params":{"_otherBridge":"Contract for the corresponding bridge on the other chain."}},"l1TokenBridge()":{"returns":{"_0":"Address of the corresponding L1 bridge contract."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"withdraw(address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction."}},"withdrawTo(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction.","_to":"Recipient account on L1."}}},"events":{"DepositFinalized(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."}},"WithdrawalInitiated(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."}}},"title":"L2StandardBridge"},"ast":{"absolutePath":"src/L2/L2StandardBridge.sol","id":91147,"exportedSymbols":{"Constants":[103096],"CrossDomainMessenger":[108888],"ISemver":[109417],"L2StandardBridge":[91146],"OptimismMintableERC20":[109645],"Predeploys":[104124],"StandardBridge":[111675]},"nodeType":"SourceUnit","src":"32:10417:149","nodes":[{"id":90725,"nodeType":"PragmaDirective","src":"32:23:149","nodes":[],"literals":["solidity","0.8",".15"]},{"id":90727,"nodeType":"ImportDirective","src":"57:58:149","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":104125,"symbolAliases":[{"foreign":{"id":90726,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"66:10:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90729,"nodeType":"ImportDirective","src":"116:66:149","nodes":[],"absolutePath":"src/universal/StandardBridge.sol","file":"src/universal/StandardBridge.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":111676,"symbolAliases":[{"foreign":{"id":90728,"name":"StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111675,"src":"125:14:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90731,"nodeType":"ImportDirective","src":"183:52:149","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":109418,"symbolAliases":[{"foreign":{"id":90730,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109417,"src":"192:7:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90733,"nodeType":"ImportDirective","src":"236:80:149","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":109646,"symbolAliases":[{"foreign":{"id":90732,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109645,"src":"245:21:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90735,"nodeType":"ImportDirective","src":"317:78:149","nodes":[],"absolutePath":"src/universal/CrossDomainMessenger.sol","file":"src/universal/CrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":108889,"symbolAliases":[{"foreign":{"id":90734,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108888,"src":"326:20:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90737,"nodeType":"ImportDirective","src":"396:56:149","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":103097,"symbolAliases":[{"foreign":{"id":90736,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103096,"src":"405:9:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":91146,"nodeType":"ContractDefinition","src":"1141:9307:149","nodes":[{"id":90757,"nodeType":"EventDefinition","src":"1646:197:149","nodes":[],"anonymous":false,"documentation":{"id":90743,"nodeType":"StructuredDocumentation","src":"1200:441:149","text":"@custom:legacy\n @notice Emitted whenever a withdrawal from L2 to L1 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 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":"73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e","name":"WithdrawalInitiated","nameLocation":"1652:19:149","parameters":{"id":90756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90745,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"1697:7:149","nodeType":"VariableDeclaration","scope":90757,"src":"1681:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90744,"name":"address","nodeType":"ElementaryTypeName","src":"1681:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90747,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"1730:7:149","nodeType":"VariableDeclaration","scope":90757,"src":"1714:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90746,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90749,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1763:4:149","nodeType":"VariableDeclaration","scope":90757,"src":"1747:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90748,"name":"address","nodeType":"ElementaryTypeName","src":"1747:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90751,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"1785:2:149","nodeType":"VariableDeclaration","scope":90757,"src":"1777:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90750,"name":"address","nodeType":"ElementaryTypeName","src":"1777:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90753,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1805:6:149","nodeType":"VariableDeclaration","scope":90757,"src":"1797:14:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1797:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90755,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"1827:9:149","nodeType":"VariableDeclaration","scope":90757,"src":"1821:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90754,"name":"bytes","nodeType":"ElementaryTypeName","src":"1821:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1671:171:149"}},{"id":90772,"nodeType":"EventDefinition","src":"2281:194:149","nodes":[],"anonymous":false,"documentation":{"id":90758,"nodeType":"StructuredDocumentation","src":"1849:427:149","text":"@custom:legacy\n @notice Emitted whenever an ERC20 deposit 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 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":"b0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89","name":"DepositFinalized","nameLocation":"2287:16:149","parameters":{"id":90771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90760,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2329:7:149","nodeType":"VariableDeclaration","scope":90772,"src":"2313:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90759,"name":"address","nodeType":"ElementaryTypeName","src":"2313:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90762,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2362:7:149","nodeType":"VariableDeclaration","scope":90772,"src":"2346:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90761,"name":"address","nodeType":"ElementaryTypeName","src":"2346:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90764,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2395:4:149","nodeType":"VariableDeclaration","scope":90772,"src":"2379:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90763,"name":"address","nodeType":"ElementaryTypeName","src":"2379:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90766,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2417:2:149","nodeType":"VariableDeclaration","scope":90772,"src":"2409:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90765,"name":"address","nodeType":"ElementaryTypeName","src":"2409:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90768,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2437:6:149","nodeType":"VariableDeclaration","scope":90772,"src":"2429:14:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90767,"name":"uint256","nodeType":"ElementaryTypeName","src":"2429:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90770,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2459:9:149","nodeType":"VariableDeclaration","scope":90772,"src":"2453:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90769,"name":"bytes","nodeType":"ElementaryTypeName","src":"2453:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2303:171:149"}},{"id":90776,"nodeType":"VariableDeclaration","src":"2510:40:149","nodes":[],"baseFunctions":[109416],"constant":true,"documentation":{"id":90773,"nodeType":"StructuredDocumentation","src":"2481:24:149","text":"@custom:semver 1.8.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"2533:7:149","scope":91146,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":90774,"name":"string","nodeType":"ElementaryTypeName","src":"2510:6:149","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e382e30","id":90775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2543:7:149","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd02a4b5da981b4c403351c949b2ca4bdb2fb4b72b50891f7eb106d3eb7049e9","typeString":"literal_string \"1.8.0\""},"value":"1.8.0"},"visibility":"public"},{"id":90795,"nodeType":"FunctionDefinition","src":"2615:113:149","nodes":[],"body":{"id":90794,"nodeType":"Block","src":"2646:82:149","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":90788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2706:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90786,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:149","typeDescriptions":{}}},"id":90789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2698:8:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":90784,"name":"address","nodeType":"ElementaryTypeName","src":"2698:8:149","stateMutability":"payable","typeDescriptions":{}}},"id":90790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2698:19:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":90783,"name":"StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111675,"src":"2683:14:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StandardBridge_$111675_$","typeString":"type(contract StandardBridge)"}},"id":90791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2683:35:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}],"id":90782,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90813,"src":"2656:10:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_StandardBridge_$111675_$returns$__$","typeString":"function (contract StandardBridge)"}},"id":90792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_otherBridge"],"nodeType":"FunctionCall","src":"2656:65:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90793,"nodeType":"ExpressionStatement","src":"2656:65:149"}]},"documentation":{"id":90777,"nodeType":"StructuredDocumentation","src":"2557:53:149","text":"@notice Constructs the L2StandardBridge contract."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":90780,"kind":"baseConstructorSpecifier","modifierName":{"id":90779,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":111675,"src":"2629:14:149"},"nodeType":"ModifierInvocation","src":"2629:16:149"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90778,"nodeType":"ParameterList","parameters":[],"src":"2626:2:149"},"returnParameters":{"id":90781,"nodeType":"ParameterList","parameters":[],"src":"2646:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90813,"nodeType":"FunctionDefinition","src":"2849:242:149","nodes":[],"body":{"id":90812,"nodeType":"Block","src":"2917:174:149","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":90806,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"2996:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":104004,"src":"2996:36:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90805,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108888,"src":"2975:20:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CrossDomainMessenger_$108888_$","typeString":"type(contract CrossDomainMessenger)"}},"id":90808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2975:58:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$108888","typeString":"contract CrossDomainMessenger"}},{"id":90809,"name":"_otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90799,"src":"3061:12:149","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$108888","typeString":"contract CrossDomainMessenger"},{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}],"id":90804,"name":"__StandardBridge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111080,"src":"2927:21:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$108888_$_t_contract$_StandardBridge_$111675_$returns$__$","typeString":"function (contract CrossDomainMessenger,contract StandardBridge)"}},"id":90810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_messenger","_otherBridge"],"nodeType":"FunctionCall","src":"2927:157:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90811,"nodeType":"ExpressionStatement","src":"2927:157:149"}]},"documentation":{"id":90796,"nodeType":"StructuredDocumentation","src":"2734:110:149","text":"@notice Initializer.\n @param _otherBridge Contract for the corresponding bridge on the other chain."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":90802,"kind":"modifierInvocation","modifierName":{"id":90801,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":49598,"src":"2905:11:149"},"nodeType":"ModifierInvocation","src":"2905:11:149"}],"name":"initialize","nameLocation":"2858:10:149","parameters":{"id":90800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90799,"mutability":"mutable","name":"_otherBridge","nameLocation":"2884:12:149","nodeType":"VariableDeclaration","scope":90813,"src":"2869:27:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"},"typeName":{"id":90798,"nodeType":"UserDefinedTypeName","pathNode":{"id":90797,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":111675,"src":"2869:14:149"},"referencedDeclaration":111675,"src":"2869:14:149","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"2868:29:149"},"returnParameters":{"id":90803,"nodeType":"ParameterList","parameters":[],"src":"2917:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90837,"nodeType":"FunctionDefinition","src":"3174:204:149","nodes":[],"body":{"id":90836,"nodeType":"Block","src":"3218:160:149","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":90821,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"3261:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"3261:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90823,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3290:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3290:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3302:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3302:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90827,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3314:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3314:9:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90829,"name":"RECEIVE_DEFAULT_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110941,"src":"3325:25:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"","id":90832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3358:2:149","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":90831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3352:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":90830,"name":"bytes","nodeType":"ElementaryTypeName","src":"3352:5:149","typeDescriptions":{}}},"id":90833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3352:9:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"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_memory_ptr","typeString":"bytes memory"}],"id":90820,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90997,"src":"3228:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":90834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:143:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90835,"nodeType":"ExpressionStatement","src":"3228:143:149"}]},"baseFunctions":[111084],"documentation":{"id":90814,"nodeType":"StructuredDocumentation","src":"3097:72:149","text":"@notice Allows EOAs to bridge ETH by sending directly to the bridge."},"implemented":true,"kind":"receive","modifiers":[{"id":90818,"kind":"modifierInvocation","modifierName":{"id":90817,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":111034,"src":"3210:7:149"},"nodeType":"ModifierInvocation","src":"3210:7:149"}],"name":"","nameLocation":"-1:-1:-1","overrides":{"id":90816,"nodeType":"OverrideSpecifier","overrides":[],"src":"3201:8:149"},"parameters":{"id":90815,"nodeType":"ParameterList","parameters":[],"src":"3181:2:149"},"returnParameters":{"id":90819,"nodeType":"ParameterList","parameters":[],"src":"3218:0:149"},"scope":91146,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":90863,"nodeType":"FunctionDefinition","src":"3897:313:149","nodes":[],"body":{"id":90862,"nodeType":"Block","src":"4105:105:149","nodes":[],"statements":[{"expression":{"arguments":[{"id":90852,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90840,"src":"4135:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90853,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4145:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4145:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90855,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4157:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4157:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90857,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90842,"src":"4169:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90858,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90844,"src":"4178:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90859,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90846,"src":"4192:10:149","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_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90851,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90997,"src":"4115:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":90860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4115:88:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90861,"nodeType":"ExpressionStatement","src":"4115:88:149"}]},"documentation":{"id":90838,"nodeType":"StructuredDocumentation","src":"3384:508:149","text":"@custom:legacy\n @notice Initiates a withdrawal from L2 to L1.\n         This function only works with OptimismMintableERC20 tokens or ether. Use the\n         `bridgeERC20` function to bridge native L2 tokens to L1.\n @param _l2Token     Address of the L2 token to withdraw.\n @param _amount      Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData   Extra data attached to the withdrawal."},"functionSelector":"32b7006d","implemented":true,"kind":"function","modifiers":[{"id":90849,"kind":"modifierInvocation","modifierName":{"id":90848,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":111034,"src":"4093:7:149"},"nodeType":"ModifierInvocation","src":"4093:7:149"}],"name":"withdraw","nameLocation":"3906:8:149","parameters":{"id":90847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90840,"mutability":"mutable","name":"_l2Token","nameLocation":"3932:8:149","nodeType":"VariableDeclaration","scope":90863,"src":"3924:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90839,"name":"address","nodeType":"ElementaryTypeName","src":"3924:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90842,"mutability":"mutable","name":"_amount","nameLocation":"3958:7:149","nodeType":"VariableDeclaration","scope":90863,"src":"3950:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90841,"name":"uint256","nodeType":"ElementaryTypeName","src":"3950:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90844,"mutability":"mutable","name":"_minGasLimit","nameLocation":"3982:12:149","nodeType":"VariableDeclaration","scope":90863,"src":"3975:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":90843,"name":"uint32","nodeType":"ElementaryTypeName","src":"3975:6:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":90846,"mutability":"mutable","name":"_extraData","nameLocation":"4019:10:149","nodeType":"VariableDeclaration","scope":90863,"src":"4004:25:149","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90845,"name":"bytes","nodeType":"ElementaryTypeName","src":"4004:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3914:121:149"},"returnParameters":{"id":90850,"nodeType":"ParameterList","parameters":[],"src":"4105:0:149"},"scope":91146,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":90888,"nodeType":"FunctionDefinition","src":"5197:313:149","nodes":[],"body":{"id":90887,"nodeType":"Block","src":"5412:98:149","nodes":[],"statements":[{"expression":{"arguments":[{"id":90878,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90866,"src":"5442:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90879,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5452:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5452:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90881,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90868,"src":"5464:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90882,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90870,"src":"5469:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90883,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90872,"src":"5478:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90884,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90874,"src":"5492:10:149","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_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90877,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90997,"src":"5422:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":90885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5422:81:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90886,"nodeType":"ExpressionStatement","src":"5422:81:149"}]},"documentation":{"id":90864,"nodeType":"StructuredDocumentation","src":"4216:976:149","text":"@custom:legacy\n @notice Initiates a withdrawal from L2 to L1 to a target account on L1.\n         Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will\n         be locked in the L1StandardBridge. ETH may be recoverable if the call can be\n         successfully replayed by increasing the amount of gas supplied to the call. If the\n         call will fail for any amount of gas, then the ETH will be locked permanently.\n         This function only works with OptimismMintableERC20 tokens or ether. Use the\n         `bridgeERC20To` function to bridge native L2 tokens to L1.\n @param _l2Token     Address of the L2 token to withdraw.\n @param _to          Recipient account on L1.\n @param _amount      Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData   Extra data attached to the withdrawal."},"functionSelector":"a3a79548","implemented":true,"kind":"function","modifiers":[],"name":"withdrawTo","nameLocation":"5206:10:149","parameters":{"id":90875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90866,"mutability":"mutable","name":"_l2Token","nameLocation":"5234:8:149","nodeType":"VariableDeclaration","scope":90888,"src":"5226:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90865,"name":"address","nodeType":"ElementaryTypeName","src":"5226:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90868,"mutability":"mutable","name":"_to","nameLocation":"5260:3:149","nodeType":"VariableDeclaration","scope":90888,"src":"5252:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90867,"name":"address","nodeType":"ElementaryTypeName","src":"5252:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90870,"mutability":"mutable","name":"_amount","nameLocation":"5281:7:149","nodeType":"VariableDeclaration","scope":90888,"src":"5273:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90869,"name":"uint256","nodeType":"ElementaryTypeName","src":"5273:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90872,"mutability":"mutable","name":"_minGasLimit","nameLocation":"5305:12:149","nodeType":"VariableDeclaration","scope":90888,"src":"5298:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":90871,"name":"uint32","nodeType":"ElementaryTypeName","src":"5298:6:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":90874,"mutability":"mutable","name":"_extraData","nameLocation":"5342:10:149","nodeType":"VariableDeclaration","scope":90888,"src":"5327:25:149","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90873,"name":"bytes","nodeType":"ElementaryTypeName","src":"5327:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5216:142:149"},"returnParameters":{"id":90876,"nodeType":"ParameterList","parameters":[],"src":"5412:0:149"},"scope":91146,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":90935,"nodeType":"FunctionDefinition","src":"6087:505:149","nodes":[],"body":{"id":90934,"nodeType":"Block","src":"6327:265:149","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90904,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90891,"src":"6341:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":90907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6353:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90905,"name":"address","nodeType":"ElementaryTypeName","src":"6353:7:149","typeDescriptions":{}}},"id":90908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6353:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6341:22:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90910,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90893,"src":"6367:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":90911,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"6379:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"6379:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6367:39:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6341:65:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":90932,"nodeType":"Block","src":"6489:97:149","statements":[{"expression":{"arguments":[{"id":90924,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90893,"src":"6523:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90925,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90891,"src":"6533:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90926,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90895,"src":"6543:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90927,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90897,"src":"6550:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90928,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90899,"src":"6555:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90929,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90901,"src":"6564:10:149","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":90923,"name":"finalizeBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111367,"src":"6503:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes calldata)"}},"id":90930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6503:72:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90931,"nodeType":"ExpressionStatement","src":"6503:72:149"}]},"id":90933,"nodeType":"IfStatement","src":"6337:249:149","trueBody":{"id":90922,"nodeType":"Block","src":"6408:75:149","statements":[{"expression":{"arguments":[{"id":90916,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90895,"src":"6440:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90917,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90897,"src":"6447:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90918,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90899,"src":"6452:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90919,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90901,"src":"6461:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90915,"name":"finalizeBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111287,"src":"6422:17:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes calldata)"}},"id":90920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6422:50:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90921,"nodeType":"ExpressionStatement","src":"6422:50:149"}]}}]},"documentation":{"id":90889,"nodeType":"StructuredDocumentation","src":"5516:566:149","text":"@custom:legacy\n @notice Finalizes a deposit from L1 to L2. To finalize a deposit of ether, use address(0)\n         and the l1Token and the Legacy ERC20 ether predeploy address as the l2Token.\n @param _l1Token   Address of the L1 token to deposit.\n @param _l2Token   Address of the corresponding L2 token.\n @param _from      Address of the depositor.\n @param _to        Address of the recipient.\n @param _amount    Amount of the tokens being deposited.\n @param _extraData Extra data attached to the deposit."},"functionSelector":"662a633a","implemented":true,"kind":"function","modifiers":[],"name":"finalizeDeposit","nameLocation":"6096:15:149","parameters":{"id":90902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90891,"mutability":"mutable","name":"_l1Token","nameLocation":"6129:8:149","nodeType":"VariableDeclaration","scope":90935,"src":"6121:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90890,"name":"address","nodeType":"ElementaryTypeName","src":"6121:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90893,"mutability":"mutable","name":"_l2Token","nameLocation":"6155:8:149","nodeType":"VariableDeclaration","scope":90935,"src":"6147:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90892,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90895,"mutability":"mutable","name":"_from","nameLocation":"6181:5:149","nodeType":"VariableDeclaration","scope":90935,"src":"6173:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90894,"name":"address","nodeType":"ElementaryTypeName","src":"6173:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90897,"mutability":"mutable","name":"_to","nameLocation":"6204:3:149","nodeType":"VariableDeclaration","scope":90935,"src":"6196:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90896,"name":"address","nodeType":"ElementaryTypeName","src":"6196:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90899,"mutability":"mutable","name":"_amount","nameLocation":"6225:7:149","nodeType":"VariableDeclaration","scope":90935,"src":"6217:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90898,"name":"uint256","nodeType":"ElementaryTypeName","src":"6217:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90901,"mutability":"mutable","name":"_extraData","nameLocation":"6257:10:149","nodeType":"VariableDeclaration","scope":90935,"src":"6242:25:149","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90900,"name":"bytes","nodeType":"ElementaryTypeName","src":"6242:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6111:162:149"},"returnParameters":{"id":90903,"nodeType":"ParameterList","parameters":[],"src":"6327:0:149"},"scope":91146,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":90947,"nodeType":"FunctionDefinition","src":"6764:101:149","nodes":[],"body":{"id":90946,"nodeType":"Block","src":"6821:44:149","nodes":[],"statements":[{"expression":{"arguments":[{"id":90943,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110962,"src":"6846:11:149","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}],"id":90942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6838:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90941,"name":"address","nodeType":"ElementaryTypeName","src":"6838:7:149","typeDescriptions":{}}},"id":90944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6838:20:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90940,"id":90945,"nodeType":"Return","src":"6831:27:149"}]},"documentation":{"id":90936,"nodeType":"StructuredDocumentation","src":"6598:161:149","text":"@custom:legacy\n @notice Retrieves the access of the corresponding L1 bridge contract.\n @return Address of the corresponding L1 bridge contract."},"functionSelector":"36c717c1","implemented":true,"kind":"function","modifiers":[],"name":"l1TokenBridge","nameLocation":"6773:13:149","parameters":{"id":90937,"nodeType":"ParameterList","parameters":[],"src":"6786:2:149"},"returnParameters":{"id":90940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90947,"src":"6812:7:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90938,"name":"address","nodeType":"ElementaryTypeName","src":"6812:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6811:9:149"},"scope":91146,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90997,"nodeType":"FunctionDefinition","src":"7372:554:149","nodes":[],"body":{"id":90996,"nodeType":"Block","src":"7585:341:149","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90963,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90950,"src":"7599:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":90964,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"7611:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"7611:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7599:39:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":90994,"nodeType":"Block","src":"7736:184:149","statements":[{"assignments":[90977],"declarations":[{"constant":false,"id":90977,"mutability":"mutable","name":"l1Token","nameLocation":"7758:7:149","nodeType":"VariableDeclaration","scope":90994,"src":"7750:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90976,"name":"address","nodeType":"ElementaryTypeName","src":"7750:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":90983,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":90979,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90950,"src":"7790:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90978,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109645,"src":"7768:21:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$109645_$","typeString":"type(contract OptimismMintableERC20)"}},"id":90980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7768:31:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$109645","typeString":"contract OptimismMintableERC20"}},"id":90981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l1Token","nodeType":"MemberAccess","referencedDeclaration":109607,"src":"7768:39:149","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":90982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7768:41:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7750:59:149"},{"expression":{"arguments":[{"id":90985,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90950,"src":"7844:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90986,"name":"l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90977,"src":"7854:7:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90987,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90952,"src":"7863:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90988,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90954,"src":"7870:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90989,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90956,"src":"7875:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90990,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90958,"src":"7884:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90991,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90960,"src":"7898:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"id":90984,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111517,"src":"7823:20:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":90992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:86:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90993,"nodeType":"ExpressionStatement","src":"7823:86:149"}]},"id":90995,"nodeType":"IfStatement","src":"7595:325:149","trueBody":{"id":90975,"nodeType":"Block","src":"7640:90:149","statements":[{"expression":{"arguments":[{"id":90968,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90952,"src":"7673:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90969,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90954,"src":"7680:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90970,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90956,"src":"7685:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90971,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90958,"src":"7694:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90972,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90960,"src":"7708:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":90967,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111419,"src":"7654:18:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":90973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7654:65:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90974,"nodeType":"ExpressionStatement","src":"7654:65:149"}]}}]},"documentation":{"id":90948,"nodeType":"StructuredDocumentation","src":"6871:496:149","text":"@custom:legacy\n @notice Internal function to initiate a withdrawal from L2 to L1 to a target account on L1.\n @param _l2Token     Address of the L2 token to withdraw.\n @param _from        Address of the withdrawer.\n @param _to          Recipient account on L1.\n @param _amount      Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData   Extra data attached to the withdrawal."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateWithdrawal","nameLocation":"7381:19:149","parameters":{"id":90961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90950,"mutability":"mutable","name":"_l2Token","nameLocation":"7418:8:149","nodeType":"VariableDeclaration","scope":90997,"src":"7410:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90949,"name":"address","nodeType":"ElementaryTypeName","src":"7410:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90952,"mutability":"mutable","name":"_from","nameLocation":"7444:5:149","nodeType":"VariableDeclaration","scope":90997,"src":"7436:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90951,"name":"address","nodeType":"ElementaryTypeName","src":"7436:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90954,"mutability":"mutable","name":"_to","nameLocation":"7467:3:149","nodeType":"VariableDeclaration","scope":90997,"src":"7459:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90953,"name":"address","nodeType":"ElementaryTypeName","src":"7459:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90956,"mutability":"mutable","name":"_amount","nameLocation":"7488:7:149","nodeType":"VariableDeclaration","scope":90997,"src":"7480:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90955,"name":"uint256","nodeType":"ElementaryTypeName","src":"7480:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90958,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7512:12:149","nodeType":"VariableDeclaration","scope":90997,"src":"7505:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":90957,"name":"uint32","nodeType":"ElementaryTypeName","src":"7505:6:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":90960,"mutability":"mutable","name":"_extraData","nameLocation":"7547:10:149","nodeType":"VariableDeclaration","scope":90997,"src":"7534:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90959,"name":"bytes","nodeType":"ElementaryTypeName","src":"7534:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7400:163:149"},"returnParameters":{"id":90962,"nodeType":"ParameterList","parameters":[],"src":"7585:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91033,"nodeType":"FunctionDefinition","src":"8154:366:149","nodes":[],"body":{"id":91032,"nodeType":"Block","src":"8333:187:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":91013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8376:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8368:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91011,"name":"address","nodeType":"ElementaryTypeName","src":"8368:7:149","typeDescriptions":{}}},"id":91014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8368:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":91015,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"8380:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":91016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"8380:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91017,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91000,"src":"8409:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91018,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91002,"src":"8416:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91019,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91004,"src":"8421:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91020,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91006,"src":"8430:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"id":91010,"name":"WithdrawalInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90757,"src":"8348:19:149","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":91021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8348:93:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91022,"nodeType":"EmitStatement","src":"8343:98:149"},{"expression":{"arguments":[{"id":91026,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91000,"src":"8481:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91027,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91002,"src":"8488:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91028,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91004,"src":"8493:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91029,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91006,"src":"8502:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91023,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8451:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitETHBridgeInitiated","nodeType":"MemberAccess","referencedDeclaration":111602,"src":"8451:29:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":91030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8451:62:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91031,"nodeType":"ExpressionStatement","src":"8451:62:149"}]},"baseFunctions":[111602],"documentation":{"id":90998,"nodeType":"StructuredDocumentation","src":"7932:217:149","text":"@notice Emits the legacy WithdrawalInitiated event followed by the ETHBridgeInitiated event.\n         This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeInitiated","nameLocation":"8163:23:149","overrides":{"id":91008,"nodeType":"OverrideSpecifier","overrides":[],"src":"8320:8:149"},"parameters":{"id":91007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91000,"mutability":"mutable","name":"_from","nameLocation":"8204:5:149","nodeType":"VariableDeclaration","scope":91033,"src":"8196:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90999,"name":"address","nodeType":"ElementaryTypeName","src":"8196:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91002,"mutability":"mutable","name":"_to","nameLocation":"8227:3:149","nodeType":"VariableDeclaration","scope":91033,"src":"8219:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91001,"name":"address","nodeType":"ElementaryTypeName","src":"8219:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91004,"mutability":"mutable","name":"_amount","nameLocation":"8248:7:149","nodeType":"VariableDeclaration","scope":91033,"src":"8240:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91003,"name":"uint256","nodeType":"ElementaryTypeName","src":"8240:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91006,"mutability":"mutable","name":"_extraData","nameLocation":"8278:10:149","nodeType":"VariableDeclaration","scope":91033,"src":"8265:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91005,"name":"bytes","nodeType":"ElementaryTypeName","src":"8265:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8186:108:149"},"returnParameters":{"id":91009,"nodeType":"ParameterList","parameters":[],"src":"8333:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91069,"nodeType":"FunctionDefinition","src":"8745:363:149","nodes":[],"body":{"id":91068,"nodeType":"Block","src":"8924:184:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":91049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8964:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8956:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91047,"name":"address","nodeType":"ElementaryTypeName","src":"8956:7:149","typeDescriptions":{}}},"id":91050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8956:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":91051,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"8968:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":91052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"8968:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91053,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91036,"src":"8997:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91054,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91038,"src":"9004:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91055,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91040,"src":"9009:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91056,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91042,"src":"9018:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"id":91046,"name":"DepositFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90772,"src":"8939:16:149","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":91057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8939:90:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91058,"nodeType":"EmitStatement","src":"8934:95:149"},{"expression":{"arguments":[{"id":91062,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91036,"src":"9069:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91063,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91038,"src":"9076:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91064,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91040,"src":"9081:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91065,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91042,"src":"9090:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91059,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9039:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitETHBridgeFinalized","nodeType":"MemberAccess","referencedDeclaration":111622,"src":"9039:29:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":91066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9039:62:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91067,"nodeType":"ExpressionStatement","src":"9039:62:149"}]},"baseFunctions":[111622],"documentation":{"id":91034,"nodeType":"StructuredDocumentation","src":"8526:214:149","text":"@notice Emits the legacy DepositFinalized event followed by the ETHBridgeFinalized event.\n         This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeFinalized","nameLocation":"8754:23:149","overrides":{"id":91044,"nodeType":"OverrideSpecifier","overrides":[],"src":"8911:8:149"},"parameters":{"id":91043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91036,"mutability":"mutable","name":"_from","nameLocation":"8795:5:149","nodeType":"VariableDeclaration","scope":91069,"src":"8787:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91035,"name":"address","nodeType":"ElementaryTypeName","src":"8787:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91038,"mutability":"mutable","name":"_to","nameLocation":"8818:3:149","nodeType":"VariableDeclaration","scope":91069,"src":"8810:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91037,"name":"address","nodeType":"ElementaryTypeName","src":"8810:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91040,"mutability":"mutable","name":"_amount","nameLocation":"8839:7:149","nodeType":"VariableDeclaration","scope":91069,"src":"8831:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91039,"name":"uint256","nodeType":"ElementaryTypeName","src":"8831:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91042,"mutability":"mutable","name":"_extraData","nameLocation":"8869:10:149","nodeType":"VariableDeclaration","scope":91069,"src":"8856:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91041,"name":"bytes","nodeType":"ElementaryTypeName","src":"8856:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8777:108:149"},"returnParameters":{"id":91045,"nodeType":"ParameterList","parameters":[],"src":"8924:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91107,"nodeType":"FunctionDefinition","src":"9338:442:149","nodes":[],"body":{"id":91106,"nodeType":"Block","src":"9578:202:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":91087,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91074,"src":"9613:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91088,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91072,"src":"9627:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91089,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91076,"src":"9640:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91090,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91078,"src":"9647:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91091,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91080,"src":"9652:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91092,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91082,"src":"9661:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"id":91086,"name":"WithdrawalInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90757,"src":"9593:19:149","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":91093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9593:79:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91094,"nodeType":"EmitStatement","src":"9588:84:149"},{"expression":{"arguments":[{"id":91098,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91072,"src":"9714:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91099,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91074,"src":"9727:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91100,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91076,"src":"9741:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91101,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91078,"src":"9748:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91102,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91080,"src":"9753:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91103,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91082,"src":"9762:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91095,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9682:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitERC20BridgeInitiated","nodeType":"MemberAccess","referencedDeclaration":111648,"src":"9682:31:149","typeDescriptions":{"typeIdentifier":"t_function_internal_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":91104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9682:91:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91105,"nodeType":"ExpressionStatement","src":"9682:91:149"}]},"baseFunctions":[111648],"documentation":{"id":91070,"nodeType":"StructuredDocumentation","src":"9114:219:149","text":"@notice Emits the legacy WithdrawalInitiated event followed by the ERC20BridgeInitiated\n         event. This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeInitiated","nameLocation":"9347:25:149","overrides":{"id":91084,"nodeType":"OverrideSpecifier","overrides":[],"src":"9565:8:149"},"parameters":{"id":91083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91072,"mutability":"mutable","name":"_localToken","nameLocation":"9390:11:149","nodeType":"VariableDeclaration","scope":91107,"src":"9382:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91071,"name":"address","nodeType":"ElementaryTypeName","src":"9382:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91074,"mutability":"mutable","name":"_remoteToken","nameLocation":"9419:12:149","nodeType":"VariableDeclaration","scope":91107,"src":"9411:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91073,"name":"address","nodeType":"ElementaryTypeName","src":"9411:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91076,"mutability":"mutable","name":"_from","nameLocation":"9449:5:149","nodeType":"VariableDeclaration","scope":91107,"src":"9441:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91075,"name":"address","nodeType":"ElementaryTypeName","src":"9441:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91078,"mutability":"mutable","name":"_to","nameLocation":"9472:3:149","nodeType":"VariableDeclaration","scope":91107,"src":"9464:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91077,"name":"address","nodeType":"ElementaryTypeName","src":"9464:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91080,"mutability":"mutable","name":"_amount","nameLocation":"9493:7:149","nodeType":"VariableDeclaration","scope":91107,"src":"9485:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91079,"name":"uint256","nodeType":"ElementaryTypeName","src":"9485:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91082,"mutability":"mutable","name":"_extraData","nameLocation":"9523:10:149","nodeType":"VariableDeclaration","scope":91107,"src":"9510:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91081,"name":"bytes","nodeType":"ElementaryTypeName","src":"9510:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9372:167:149"},"returnParameters":{"id":91085,"nodeType":"ParameterList","parameters":[],"src":"9578:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91145,"nodeType":"FunctionDefinition","src":"10007:439:149","nodes":[],"body":{"id":91144,"nodeType":"Block","src":"10247:199:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":91125,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91112,"src":"10279:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91126,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91110,"src":"10293:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91127,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91114,"src":"10306:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91128,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91116,"src":"10313:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91129,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91118,"src":"10318:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91130,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91120,"src":"10327:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"id":91124,"name":"DepositFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90772,"src":"10262:16:149","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":91131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10262:76:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91132,"nodeType":"EmitStatement","src":"10257:81:149"},{"expression":{"arguments":[{"id":91136,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91110,"src":"10380:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91137,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91112,"src":"10393:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91138,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91114,"src":"10407:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91139,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91116,"src":"10414:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91140,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91118,"src":"10419:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91141,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91120,"src":"10428:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"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_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91133,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"10348:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitERC20BridgeFinalized","nodeType":"MemberAccess","referencedDeclaration":111674,"src":"10348:31:149","typeDescriptions":{"typeIdentifier":"t_function_internal_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":91142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10348:91:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91143,"nodeType":"ExpressionStatement","src":"10348:91:149"}]},"baseFunctions":[111674],"documentation":{"id":91108,"nodeType":"StructuredDocumentation","src":"9786:216:149","text":"@notice Emits the legacy DepositFinalized event followed by the ERC20BridgeFinalized event.\n         This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeFinalized","nameLocation":"10016:25:149","overrides":{"id":91122,"nodeType":"OverrideSpecifier","overrides":[],"src":"10234:8:149"},"parameters":{"id":91121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91110,"mutability":"mutable","name":"_localToken","nameLocation":"10059:11:149","nodeType":"VariableDeclaration","scope":91145,"src":"10051:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91109,"name":"address","nodeType":"ElementaryTypeName","src":"10051:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91112,"mutability":"mutable","name":"_remoteToken","nameLocation":"10088:12:149","nodeType":"VariableDeclaration","scope":91145,"src":"10080:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91111,"name":"address","nodeType":"ElementaryTypeName","src":"10080:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91114,"mutability":"mutable","name":"_from","nameLocation":"10118:5:149","nodeType":"VariableDeclaration","scope":91145,"src":"10110:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91113,"name":"address","nodeType":"ElementaryTypeName","src":"10110:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91116,"mutability":"mutable","name":"_to","nameLocation":"10141:3:149","nodeType":"VariableDeclaration","scope":91145,"src":"10133:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91115,"name":"address","nodeType":"ElementaryTypeName","src":"10133:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91118,"mutability":"mutable","name":"_amount","nameLocation":"10162:7:149","nodeType":"VariableDeclaration","scope":91145,"src":"10154:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91117,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91120,"mutability":"mutable","name":"_extraData","nameLocation":"10192:10:149","nodeType":"VariableDeclaration","scope":91145,"src":"10179:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91119,"name":"bytes","nodeType":"ElementaryTypeName","src":"10179:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10041:167:149"},"returnParameters":{"id":91123,"nodeType":"ParameterList","parameters":[],"src":"10247:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":90739,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":111675,"src":"1170:14:149"},"id":90740,"nodeType":"InheritanceSpecifier","src":"1170:14:149"},{"baseName":{"id":90741,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":109417,"src":"1186:7:149"},"id":90742,"nodeType":"InheritanceSpecifier","src":"1186:7:149"}],"canonicalName":"L2StandardBridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":90738,"nodeType":"StructuredDocumentation","src":"454:687:149","text":"@custom:proxied\n @custom:predeploy 0x4200000000000000000000000000000000000010\n @title L2StandardBridge\n @notice The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and\n         L2. In the case that an ERC20 token is native to L2, it will be escrowed within this\n         contract. If the ERC20 token is native to L1, it will be burnt.\n         NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples\n         of some token types that may not be properly supported by this contract include, but are\n         not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists."},"fullyImplemented":true,"linearizedBaseContracts":[91146,109417,111675,49678],"name":"L2StandardBridge","nameLocation":"1150:16:149","scope":91147,"usedErrors":[]}],"license":"MIT"},"id":149}