{"abi":[{"type":"function","name":"crossDomainMessageSender","inputs":[],"outputs":[{"name":"_sender","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"crossDomainMessageSource","inputs":[],"outputs":[{"name":"_source","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"messageNonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"messageVersion","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"_destination","type":"uint256","internalType":"uint256"},{"name":"_source","type":"uint256","internalType":"uint256"},{"name":"_nonce","type":"uint256","internalType":"uint256"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendMessage","inputs":[{"name":"_destination","type":"uint256","internalType":"uint256"},{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"successfulMessages","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"FailedRelayedMessage","inputs":[{"name":"messageHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RelayedMessage","inputs":[{"name":"messageHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SentMessage","inputs":[{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":true},{"type":"error","name":"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger","inputs":[]},{"type":"error","name":"MessageAlreadyRelayed","inputs":[]},{"type":"error","name":"MessageDestinationNotRelayChain","inputs":[]},{"type":"error","name":"MessageDestinationSameChain","inputs":[]},{"type":"error","name":"MessageTargetCrossL2Inbox","inputs":[]},{"type":"error","name":"MessageTargetL2ToL2CrossDomainMessenger","inputs":[]},{"type":"error","name":"NotEntered","inputs":[]},{"type":"error","name":"ReentrantCall","inputs":[]},{"type":"error","name":"RelayMessageCallerNotCrossL2Inbox","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b50610dd78061001c5f395ff3fe608060405260043610610079575f3560e01c806354fd4d501161004c57806354fd4d50146101185780637056f41f1461016d578063b1b1b20914610180578063ecc70428146101be575f80fd5b80631ecd26f21461007d578063247944621461009257806338ffde18146100b957806352617f3c146100f2575b5f80fd5b61009061008b366004610a67565b6101f2565b005b34801561009d575f80fd5b506100a6610647565b6040519081526020015b60405180910390f35b3480156100c4575f80fd5b506100cd6106c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b0565b3480156100fd575f80fd5b506101055f81565b60405161ffff90911681526020016100b0565b348015610123575f80fd5b506101606040518060400160405280600581526020017f302e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100b09190610bbb565b61009061017b366004610bd4565b610745565b34801561018b575f80fd5b506101ae61019a366004610c56565b5f6020819052908152604090205460ff1681565b60405190151581526020016100b0565b3480156101c9575f80fd5b506001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166100a6565b7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255c1561024b576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60017ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255d33734200000000000000000000000000000000000022146102bc576040517f1fc35f9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73420000000000000000000000000000000000002373ffffffffffffffffffffffffffffffffffffffff1673420000000000000000000000000000000000002273ffffffffffffffffffffffffffffffffffffffff1663938b5f326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103689190610c6d565b73ffffffffffffffffffffffffffffffffffffffff16146103b5576040517fccc4e33800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4686146103ee576040517f31ac221100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffde73ffffffffffffffffffffffffffffffffffffffff83160161045d576040517fa9040b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffdd73ffffffffffffffffffffffffffffffffffffffff8316016104cc576040517f4faa250900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8686868686866040516020016104e896959493929190610c88565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301205f8181529283905291205490915060ff1615610566576040517f9ca9480b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61057086856109b8565b5f61057b8484610a02565b905080156105e5575f8281526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2610610565b60405182907f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f905f90a25b61061a5f806109b8565b50505f7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255d505050505050565b5f7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255c6106a0576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75c90565b5f7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255c61071f576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35c90565b46840361077e576040517f8ed9a95d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffde73ffffffffffffffffffffffffffffffffffffffff8416016107ed576040517fa9040b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffdd73ffffffffffffffffffffffffffffffffffffffff84160161085c576040517f4faa250900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f84466108886001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b338787876040516024016108a29796959493929190610cde565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ecd26f20000000000000000000000000000000000000000000000000000000017905251909150610927908290610bbb565b60405180910390a0600180547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905f61095e83610d69565b91906101000a8154817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b807fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35d817f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75d5050565b5f805f83516020850134875af19392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a37575f80fd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f805f8060c08789031215610a7c575f80fd5b8635955060208701359450604087013593506060870135610a9c81610a16565b92506080870135610aac81610a16565b915060a087013567ffffffffffffffff80821115610ac8575f80fd5b818901915089601f830112610adb575f80fd5b813581811115610aed57610aed610a3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610b3357610b33610a3a565b816040528281528c6020848701011115610b4b575f80fd5b826020860160208301375f6020848301015280955050505050509295509295509295565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610bcd6020830184610b6f565b9392505050565b5f805f8060608587031215610be7575f80fd5b843593506020850135610bf981610a16565b9250604085013567ffffffffffffffff80821115610c15575f80fd5b818701915087601f830112610c28575f80fd5b813581811115610c36575f80fd5b886020828501011115610c47575f80fd5b95989497505060200194505050565b5f60208284031215610c66575f80fd5b5035919050565b5f60208284031215610c7d575f80fd5b8151610bcd81610a16565b8681528560208201528460408201525f73ffffffffffffffffffffffffffffffffffffffff808616606084015280851660808401525060c060a0830152610cd260c0830184610b6f565b98975050505050505050565b8781528660208201528560408201525f73ffffffffffffffffffffffffffffffffffffffff808716606084015280861660808401525060c060a08301528260c0830152828460e08401375f60e0848401015260e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905098975050505050505050565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818103610dc0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600101939250505056fea164736f6c6343000819000a","sourceMap":"2031:8913:26:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610079575f3560e01c806354fd4d501161004c57806354fd4d50146101185780637056f41f1461016d578063b1b1b20914610180578063ecc70428146101be575f80fd5b80631ecd26f21461007d578063247944621461009257806338ffde18146100b957806352617f3c146100f2575b5f80fd5b61009061008b366004610a67565b6101f2565b005b34801561009d575f80fd5b506100a6610647565b6040519081526020015b60405180910390f35b3480156100c4575f80fd5b506100cd6106c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100b0565b3480156100fd575f80fd5b506101055f81565b60405161ffff90911681526020016100b0565b348015610123575f80fd5b506101606040518060400160405280600581526020017f302e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100b09190610bbb565b61009061017b366004610bd4565b610745565b34801561018b575f80fd5b506101ae61019a366004610c56565b5f6020819052908152604090205460ff1681565b60405190151581526020016100b0565b3480156101c9575f80fd5b506001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166100a6565b7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255c1561024b576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60017ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255d33734200000000000000000000000000000000000022146102bc576040517f1fc35f9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73420000000000000000000000000000000000002373ffffffffffffffffffffffffffffffffffffffff1673420000000000000000000000000000000000002273ffffffffffffffffffffffffffffffffffffffff1663938b5f326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610344573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103689190610c6d565b73ffffffffffffffffffffffffffffffffffffffff16146103b5576040517fccc4e33800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4686146103ee576040517f31ac221100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffde73ffffffffffffffffffffffffffffffffffffffff83160161045d576040517fa9040b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffdd73ffffffffffffffffffffffffffffffffffffffff8316016104cc576040517f4faa250900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8686868686866040516020016104e896959493929190610c88565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301205f8181529283905291205490915060ff1615610566576040517f9ca9480b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61057086856109b8565b5f61057b8484610a02565b905080156105e5575f8281526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2610610565b60405182907f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f905f90a25b61061a5f806109b8565b50505f7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255d505050505050565b5f7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255c6106a0576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75c90565b5f7ff53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd0255c61071f576040517fbca35af600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b507fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35c90565b46840361077e576040517f8ed9a95d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffde73ffffffffffffffffffffffffffffffffffffffff8416016107ed576040517fa9040b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffbdffffffffffffffffffffffffffffffffffffdd73ffffffffffffffffffffffffffffffffffffffff84160161085c576040517f4faa250900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f84466108886001547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b338787876040516024016108a29796959493929190610cde565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1ecd26f20000000000000000000000000000000000000000000000000000000017905251909150610927908290610bbb565b60405180910390a0600180547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905f61095e83610d69565b91906101000a8154817dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b807fb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f35d817f711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee75d5050565b5f805f83516020850134875af19392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a37575f80fd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f805f8060c08789031215610a7c575f80fd5b8635955060208701359450604087013593506060870135610a9c81610a16565b92506080870135610aac81610a16565b915060a087013567ffffffffffffffff80821115610ac8575f80fd5b818901915089601f830112610adb575f80fd5b813581811115610aed57610aed610a3a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610b3357610b33610a3a565b816040528281528c6020848701011115610b4b575f80fd5b826020860160208301375f6020848301015280955050505050509295509295509295565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610bcd6020830184610b6f565b9392505050565b5f805f8060608587031215610be7575f80fd5b843593506020850135610bf981610a16565b9250604085013567ffffffffffffffff80821115610c15575f80fd5b818701915087601f830112610c28575f80fd5b813581811115610c36575f80fd5b886020828501011115610c47575f80fd5b95989497505060200194505050565b5f60208284031215610c66575f80fd5b5035919050565b5f60208284031215610c7d575f80fd5b8151610bcd81610a16565b8681528560208201528460408201525f73ffffffffffffffffffffffffffffffffffffffff808616606084015280851660808401525060c060a0830152610cd260c0830184610b6f565b98975050505050505050565b8781528660208201528560408201525f73ffffffffffffffffffffffffffffffffffffffff808716606084015280861660808401525060c060a08301528260c0830152828460e08401375f60e0848401015260e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905098975050505050505050565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818103610dc0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600101939250505056fea164736f6c6343000819000a","sourceMap":"2031:8913:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:1424;;;;;;:::i;:::-;;:::i;:::-;;5518:187;;;;;;;;;;;;;:::i;:::-;;;1976:25:36;;;1964:2;1949:18;5518:187:26;;;;;;;;5142;;;;;;;;;;;;;:::i;:::-;;;2188:42:36;2176:55;;;2158:74;;2146:2;2131:18;5142:187:26;2012:226:36;3058:49:26;;;;;;;;;;;;3105:1;3058:49;;;;;2417:6:36;2405:19;;;2387:38;;2375:2;2360:18;3058:49:26;2243:188:36;3177:40:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6245:643::-;;;;;;:::i;:::-;;:::i;3457:50::-;;;;;;;;;;-1:-1:-1;3457:50:26;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;4163:14:36;;4156:22;4138:41;;4126:2;4111:18;3457:50:26;3998:187:36;9279:133:26;;;;;;;;;;-1:-1:-1;9380:8:26;;;;9279:133;;7550:1424;9684:12;9678:19;9723:10;4503:38;;4526:15;;;;;;;;;;;;;;4503:38;4595:1;4581:12;4574:23;7810:10:::1;6844:42:29;7810:39:26;7806:87;;7858:35;;;;;;;;;;;;;;7806:87;7022:42:29;7907:94:26;;6844:42:29;7907:46:26;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:94;;;7903:181;;8024:49;;;;;;;;;;;;;;7903:181;8113:13;8097:12;:29;8093:75;;8135:33;;;;;;;;;;;;;;8093:75;8182:36:::0;::::1;::::0;::::1;::::0;8178:76:::1;;8227:27;;;;;;;;;;;;;;8178:76;8268:53:::0;::::1;::::0;::::1;::::0;8264:132:::1;;8344:41;;;;;;;;;;;;;;8264:132;8406:19;8449:12;8463:7;8472:6;8480:7;8489;8498:8;8438:69;;;;;;;;;;;;;:::i;:::-;;::::0;;;;;::::1;::::0;;;;;;8428:80;;8438:69:::1;8428:80:::0;;::::1;::::0;8522:18:::1;:31:::0;;;;;;;;;;8428:80;;-1:-1:-1;8522:31:26::1;;8518:92;;;8576:23;;;;;;;;;;;;;;8518:92;8620:39;8642:7;8651;8620:21;:39::i;:::-;8670:12;8685:34;8701:7;8710:8;8685:15;:34::i;:::-;8670:49;;8734:7;8730:191;;;8757:18;:31:::0;;;::::1;::::0;;;;;;;:38;;;::::1;8791:4;8757:38;::::0;;8814:27;8776:11;;8814:27:::1;::::0;::::1;8730:191;;;8877:33;::::0;8898:11;;8877:33:::1;::::0;;;::::1;8730:191;8931:36;8953:1;8964::::0;8931:21:::1;:36::i;:::-;7796:1178;;4671:1:::0;4657:12;4650:23;7550:1424;;;;;;:::o;5518:187::-;5589:15;9684:12;9678:19;4900:36;;4924:12;;;;;;;;;;;;;;4900:36;-1:-1:-1;5656:32:26::1;5650:39;::::0;5518:187::o;5142:::-;5213:15;9684:12;9678:19;4900:36;;4924:12;;;;;;;;;;;;;;4900:36;-1:-1:-1;5280:32:26::1;5274:39;::::0;5142:187::o;6245:643::-;6377:13;6361:12;:29;6357:71;;6399:29;;;;;;;;;;;;;;6357:71;6442:36;;;;;6438:76;;6487:27;;;;;;;;;;;;;;6438:76;6528:53;;;;;6524:107;;6590:41;;;;;;;;;;;;;;6524:107;6642:17;6744:12;6758:13;6773:14;9380:8;;;;;9279:133;6773:14;6789:10;6801:7;6810:8;;6662:167;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6844:17;6662:167;;-1:-1:-1;6844:17:26;;6662:167;;6844:17;:::i;:::-;;;;;;;;6871:8;:10;;;;;:8;:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6347:541;6245:643;;;;:::o;9944:234::-;10092:7;10058:32;10051:49;10154:7;10120:32;10113:49;9944:234;;:::o;10461:481::-;10544:13;10897:1;10864;10824:8;10818:15;10784:2;10774:8;10770:17;10722:11;10680:7;10646:5;10620:306;10592:334;10461:481;-1:-1:-1;;;10461:481:26:o;14:154:36:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:184::-;225:77;222:1;215:88;322:4;319:1;312:15;346:4;343:1;336:15;362:1463;475:6;483;491;499;507;515;568:3;556:9;547:7;543:23;539:33;536:53;;;585:1;582;575:12;536:53;621:9;608:23;598:33;;678:2;667:9;663:18;650:32;640:42;;729:2;718:9;714:18;701:32;691:42;;783:2;772:9;768:18;755:32;796:31;821:5;796:31;:::i;:::-;846:5;-1:-1:-1;903:3:36;888:19;;875:33;917;875;917;:::i;:::-;969:7;-1:-1:-1;1027:3:36;1012:19;;999:33;1051:18;1081:14;;;1078:34;;;1108:1;1105;1098:12;1078:34;1146:6;1135:9;1131:22;1121:32;;1191:7;1184:4;1180:2;1176:13;1172:27;1162:55;;1213:1;1210;1203:12;1162:55;1249:2;1236:16;1271:2;1267;1264:10;1261:36;;;1277:18;;:::i;:::-;1411:2;1405:9;1473:4;1465:13;;1316:66;1461:22;;;1485:2;1457:31;1453:40;1441:53;;;1509:18;;;1529:22;;;1506:46;1503:72;;;1555:18;;:::i;:::-;1595:10;1591:2;1584:22;1630:2;1622:6;1615:18;1670:7;1665:2;1660;1656;1652:11;1648:20;1645:33;1642:53;;;1691:1;1688;1681:12;1642:53;1747:2;1742;1738;1734:11;1729:2;1721:6;1717:15;1704:46;1792:1;1787:2;1782;1774:6;1770:15;1766:24;1759:35;1813:6;1803:16;;;;;;;362:1463;;;;;;;;:::o;2436:348::-;2478:3;2516:5;2510:12;2543:6;2538:3;2531:19;2599:6;2592:4;2585:5;2581:16;2574:4;2569:3;2565:14;2559:47;2651:1;2644:4;2635:6;2630:3;2626:16;2622:27;2615:38;2773:4;2703:66;2698:2;2690:6;2686:15;2682:88;2677:3;2673:98;2669:109;2662:116;;;2436:348;;;;:::o;2789:220::-;2938:2;2927:9;2920:21;2901:4;2958:45;2999:2;2988:9;2984:18;2976:6;2958:45;:::i;:::-;2950:53;2789:220;-1:-1:-1;;;2789:220:36:o;3014:794::-;3102:6;3110;3118;3126;3179:2;3167:9;3158:7;3154:23;3150:32;3147:52;;;3195:1;3192;3185:12;3147:52;3231:9;3218:23;3208:33;;3291:2;3280:9;3276:18;3263:32;3304:31;3329:5;3304:31;:::i;:::-;3354:5;-1:-1:-1;3410:2:36;3395:18;;3382:32;3433:18;3463:14;;;3460:34;;;3490:1;3487;3480:12;3460:34;3528:6;3517:9;3513:22;3503:32;;3573:7;3566:4;3562:2;3558:13;3554:27;3544:55;;3595:1;3592;3585:12;3544:55;3635:2;3622:16;3661:2;3653:6;3650:14;3647:34;;;3677:1;3674;3667:12;3647:34;3722:7;3717:2;3708:6;3704:2;3700:15;3696:24;3693:37;3690:57;;;3743:1;3740;3733:12;3690:57;3014:794;;;;-1:-1:-1;;3774:2:36;3766:11;;-1:-1:-1;;;3014:794:36:o;3813:180::-;3872:6;3925:2;3913:9;3904:7;3900:23;3896:32;3893:52;;;3941:1;3938;3931:12;3893:52;-1:-1:-1;3964:23:36;;3813:180;-1:-1:-1;3813:180:36:o;4190:251::-;4260:6;4313:2;4301:9;4292:7;4288:23;4284:32;4281:52;;;4329:1;4326;4319:12;4281:52;4361:9;4355:16;4380:31;4405:5;4380:31;:::i;4446:656::-;4733:6;4722:9;4715:25;4776:6;4771:2;4760:9;4756:18;4749:34;4819:6;4814:2;4803:9;4799:18;4792:34;4696:4;4845:42;4935:2;4927:6;4923:15;4918:2;4907:9;4903:18;4896:43;4988:2;4980:6;4976:15;4970:3;4959:9;4955:19;4948:44;;5029:3;5023;5012:9;5008:19;5001:32;5050:46;5091:3;5080:9;5076:19;5068:6;5050:46;:::i;:::-;5042:54;4446:656;-1:-1:-1;;;;;;;;4446:656:36:o;5107:888::-;5404:6;5393:9;5386:25;5447:6;5442:2;5431:9;5427:18;5420:34;5490:6;5485:2;5474:9;5470:18;5463:34;5367:4;5516:42;5606:2;5598:6;5594:15;5589:2;5578:9;5574:18;5567:43;5659:2;5651:6;5647:15;5641:3;5630:9;5626:19;5619:44;;5700:3;5694;5683:9;5679:19;5672:32;5741:6;5735:3;5724:9;5720:19;5713:35;5799:6;5791;5785:3;5774:9;5770:19;5757:49;5856:1;5850:3;5841:6;5830:9;5826:22;5822:32;5815:43;5985:3;5915:66;5910:2;5902:6;5898:15;5894:88;5883:9;5879:104;5875:114;5867:122;;5107:888;;;;;;;;;;:::o;6223:408::-;6262:3;6290:62;6387:2;6380:5;6376:14;6414:2;6405:7;6402:15;6399:195;;6450:77;6447:1;6440:88;6551:4;6548:1;6541:15;6579:4;6576:1;6569:15;6399:195;6623:1;6610:15;;6223:408;-1:-1:-1;;;6223:408:36:o","linkReferences":{}},"methodIdentifiers":{"crossDomainMessageSender()":"38ffde18","crossDomainMessageSource()":"24794462","messageNonce()":"ecc70428","messageVersion()":"52617f3c","relayMessage(uint256,uint256,uint256,address,address,bytes)":"1ecd26f2","sendMessage(uint256,address,bytes)":"7056f41f","successfulMessages(bytes32)":"b1b1b209","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageAlreadyRelayed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageDestinationNotRelayChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageDestinationSameChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageTargetCrossL2Inbox\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageTargetL2ToL2CrossDomainMessenger\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEntered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RelayMessageCallerNotCrossL2Inbox\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":true,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"crossDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainMessageSource\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_source\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageVersion\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_destination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_source\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_destination\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"successfulMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@custom:predeploy 0x4200000000000000000000000000000000000023\",\"events\":{\"FailedRelayedMessage(bytes32)\":{\"params\":{\"messageHash\":\"Hash of the message that failed to be relayed.\"}},\"RelayedMessage(bytes32)\":{\"params\":{\"messageHash\":\"Hash of the message that was relayed.\"}},\"SentMessage(bytes)\":{\"params\":{\"data\":\"Encoded data of the message that was sent.\"}}},\"kind\":\"dev\",\"methods\":{\"crossDomainMessageSender()\":{\"returns\":{\"_sender\":\"Address of the sender of the current cross domain message.\"}},\"crossDomainMessageSource()\":{\"returns\":{\"_source\":\"Chain ID of the source of the current cross domain message.\"}},\"messageNonce()\":{\"returns\":{\"_0\":\"Nonce of the next message to be sent, with added message version.\"}},\"relayMessage(uint256,uint256,uint256,address,address,bytes)\":{\"params\":{\"_destination\":\"Chain ID of the destination chain.\",\"_message\":\"Message payload to call target with.\",\"_nonce\":\"Nonce of the message being relayed.\",\"_sender\":\"Address of the user who sent the message.\",\"_source\":\"Chain ID of the source chain.\",\"_target\":\"Address that the message is targeted at.\"}},\"sendMessage(uint256,address,bytes)\":{\"params\":{\"_destination\":\"Chain ID of the destination chain.\",\"_message\":\"Message payload to call target with.\",\"_target\":\"Target contract or wallet address.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"0.1.0\"}},\"title\":\"L2ToL2CrossDomainMessenger\",\"version\":1},\"userdoc\":{\"errors\":{\"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger()\":[{\"notice\":\"Thrown when attempting to relay a message where CrossL2Inbox's origin is not L2ToL2CrossDomainMessenger.\"}],\"MessageAlreadyRelayed()\":[{\"notice\":\"Thrown when attempting to relay a message that has already been relayed.\"}],\"MessageDestinationNotRelayChain()\":[{\"notice\":\"Thrown when attempting to relay a message whose destination chain is not the chain relaying it.\"}],\"MessageDestinationSameChain()\":[{\"notice\":\"Thrown when attempting to send a message to the chain that the message is being sent from.\"}],\"MessageTargetCrossL2Inbox()\":[{\"notice\":\"Thrown when attempting to relay a message whose target is CrossL2Inbox.\"}],\"MessageTargetL2ToL2CrossDomainMessenger()\":[{\"notice\":\"Thrown when attempting to relay a message whose target is L2ToL2CrossDomainMessenger.\"}],\"NotEntered()\":[{\"notice\":\"Thrown when a non-written slot in transient storage is attempted to be read from.\"}],\"ReentrantCall()\":[{\"notice\":\"Thrown when a reentrant call is detected.\"}],\"RelayMessageCallerNotCrossL2Inbox()\":[{\"notice\":\"Thrown when attempting to relay a message and the function caller (msg.sender) is not CrossL2Inbox.\"}]},\"events\":{\"FailedRelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message fails to be relayed on this chain.\"},\"RelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message is successfully relayed on this chain.\"},\"SentMessage(bytes)\":{\"notice\":\"Emitted whenever a message is sent to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"crossDomainMessageSender()\":{\"notice\":\"Retrieves the sender of the current cross domain message. If not entered, reverts.\"},\"crossDomainMessageSource()\":{\"notice\":\"Retrieves the source of the current cross domain message. If not entered, reverts.\"},\"messageNonce()\":{\"notice\":\"Retrieves the next message nonce. Message version will be added to the upper two bytes of the message         nonce. Message version allows us to treat messages as having different structures.\"},\"messageVersion()\":{\"notice\":\"Current message version identifier.\"},\"relayMessage(uint256,uint256,uint256,address,address,bytes)\":{\"notice\":\"Relays a message that was sent by the other CrossDomainMessenger contract. Can only be executed via         cross-chain call from the other messenger OR if the message was already received once and is currently         being replayed.\"},\"sendMessage(uint256,address,bytes)\":{\"notice\":\"Sends a message to some target address on a destination chain. Note that if the call always reverts,         then the message will be unrelayable and any ETH sent will be permanently locked. The same will occur         if the target on the other chain is considered unsafe (see the _isUnsafeTarget() function).\"},\"successfulMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to boolean receipt values. Note that a message will only be present in this         mapping if it has successfully been relayed on this chain, and can therefore not be relayed again.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The L2ToL2CrossDomainMessenger is a higher level abstraction on top of the CrossL2Inbox that provides         features necessary for secure transfers ERC20 tokens between L2 chains. Messages sent through the         L2ToL2CrossDomainMessenger on the source chain receive both replay protection as well as domain binding.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L2/L2ToL2CrossDomainMessenger.sol\":\"L2ToL2CrossDomainMessenger\"},\"evmVersion\":\"cancun\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/L2/CrossL2Inbox.sol\":{\"keccak256\":\"0x43bbf0554ccc19e597ef52d8b1e08e0ff719b70e864f05ccb6a36c56b7f985f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a113ef0eb24575c4c9f264bff823810662e398aa7fd81afc3142fd57118db\",\"dweb:/ipfs/QmPje4qvpvj4wwUE2FF1E1LobJhg2vK4Zy3Ew95d6d79S3\"]},\"src/L2/ICrossL2Inbox.sol\":{\"keccak256\":\"0x2a7a9d55f12bd8c39ad3c2f1d328377e5fba9feafcd2be2f9c857baad4d411a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bfb00cd40939c7fa1e6a5596267399c7f6b4580be895e73ee890a7d49659125\",\"dweb:/ipfs/QmXQU3CphmhpWgXk2L7KaZLCP2eNnMQtJkvSEYeuZ6Fw82\"]},\"src/L2/IL2ToL2CrossDomainMessenger.sol\":{\"keccak256\":\"0x0bc5519108a6077e3918968f9812c6f20fcb036c8473b845c065b3cd9d6ef2a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56d64a5a169d54b16b02423faaf98fe9947780957678ec849596cb68880f3e97\",\"dweb:/ipfs/QmRXkq7ABqUffim7foK5EiZRwZPk8Ln6vArafjABHySBbR\"]},\"src/L2/L2ToL2CrossDomainMessenger.sol\":{\"keccak256\":\"0xaae58981509e3eb3eed16e492a68b9a168ba0c38ba1a2e74192e005d7c410e72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fdbc3ec2621df8e3dadee0879abe8f3faa5a3b9a17f799b6e83aef2cf28fd652\",\"dweb:/ipfs/QmbdRMdGhj9Yqh6Kn7BGk2xsYcjZeWn4Yz9BSUbGhgBshr\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x5586d9715d8fbdd48245220f13a96573555fd847a333869e862ae186802e0311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f34dbd5a0a8918120e226f549a8337bd6fc7176653159a85929ce6fe3d66e11\",\"dweb:/ipfs/QmQKnhRPMnhKBRLmV2C1BqAsPpQg8xVFXi7ZLuHU9XQ1BE\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0xbc21e07126b325cf053f1c5a26968f02fb0a0da503634044a8e84c9d642acb8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7af279cd7b3b12189894ae43f33d19ba84931670ba10b78c108b9d31b767c6b3\",\"dweb:/ipfs/QmWA4qha4WjQToAYhQbqVPe8WrniBAoktVNSSxCCqBraH3\"]},\"src/libraries/TransientContext.sol\":{\"keccak256\":\"0x7ae128d512768e928b3cd2d7604fcded205e5a99465360985fb0aaf985e888f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://555255ed8deedb8cb090d5f979b51356a98c12b259ec07664de33280d24738fd\",\"dweb:/ipfs/QmPUAfTpoqqUDEaRC2gRPr2CFbKSaz8J4yBQgLc9wM6Hss\"]},\"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/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger"},{"inputs":[],"type":"error","name":"MessageAlreadyRelayed"},{"inputs":[],"type":"error","name":"MessageDestinationNotRelayChain"},{"inputs":[],"type":"error","name":"MessageDestinationSameChain"},{"inputs":[],"type":"error","name":"MessageTargetCrossL2Inbox"},{"inputs":[],"type":"error","name":"MessageTargetL2ToL2CrossDomainMessenger"},{"inputs":[],"type":"error","name":"NotEntered"},{"inputs":[],"type":"error","name":"ReentrantCall"},{"inputs":[],"type":"error","name":"RelayMessageCallerNotCrossL2Inbox"},{"inputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32","indexed":true}],"type":"event","name":"FailedRelayedMessage","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32","indexed":true}],"type":"event","name":"RelayedMessage","anonymous":false},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"SentMessage","anonymous":true},{"inputs":[],"stateMutability":"view","type":"function","name":"crossDomainMessageSender","outputs":[{"internalType":"address","name":"_sender","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"crossDomainMessageSource","outputs":[{"internalType":"uint256","name":"_source","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messageNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messageVersion","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"uint256","name":"_destination","type":"uint256"},{"internalType":"uint256","name":"_source","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"}],"stateMutability":"payable","type":"function","name":"relayMessage"},{"inputs":[{"internalType":"uint256","name":"_destination","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"}],"stateMutability":"payable","type":"function","name":"sendMessage"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"successfulMessages","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"crossDomainMessageSender()":{"returns":{"_sender":"Address of the sender of the current cross domain message."}},"crossDomainMessageSource()":{"returns":{"_source":"Chain ID of the source of the current cross domain message."}},"messageNonce()":{"returns":{"_0":"Nonce of the next message to be sent, with added message version."}},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message payload to call target with.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_source":"Chain ID of the source chain.","_target":"Address that the message is targeted at."}},"sendMessage(uint256,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message payload to call target with.","_target":"Target contract or wallet address."}}},"version":1},"userdoc":{"kind":"user","methods":{"crossDomainMessageSender()":{"notice":"Retrieves the sender of the current cross domain message. If not entered, reverts."},"crossDomainMessageSource()":{"notice":"Retrieves the source of the current cross domain message. If not entered, reverts."},"messageNonce()":{"notice":"Retrieves the next message nonce. Message version will be added to the upper two bytes of the message         nonce. Message version allows us to treat messages as having different structures."},"messageVersion()":{"notice":"Current message version identifier."},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only be executed via         cross-chain call from the other messenger OR if the message was already received once and is currently         being replayed."},"sendMessage(uint256,address,bytes)":{"notice":"Sends a message to some target address on a destination chain. Note that if the call always reverts,         then the message will be unrelayable and any ETH sent will be permanently locked. The same will occur         if the target on the other chain is considered unsafe (see the _isUnsafeTarget() function)."},"successfulMessages(bytes32)":{"notice":"Mapping of message hashes to boolean receipt values. Note that a message will only be present in this         mapping if it has successfully been relayed on this chain, and can therefore not be relayed again."},"version()":{"notice":"Semantic version."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L2/L2ToL2CrossDomainMessenger.sol":"L2ToL2CrossDomainMessenger"},"evmVersion":"cancun","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/L2/CrossL2Inbox.sol":{"keccak256":"0x43bbf0554ccc19e597ef52d8b1e08e0ff719b70e864f05ccb6a36c56b7f985f5","urls":["bzz-raw://a79a113ef0eb24575c4c9f264bff823810662e398aa7fd81afc3142fd57118db","dweb:/ipfs/QmPje4qvpvj4wwUE2FF1E1LobJhg2vK4Zy3Ew95d6d79S3"],"license":"MIT"},"src/L2/ICrossL2Inbox.sol":{"keccak256":"0x2a7a9d55f12bd8c39ad3c2f1d328377e5fba9feafcd2be2f9c857baad4d411a8","urls":["bzz-raw://5bfb00cd40939c7fa1e6a5596267399c7f6b4580be895e73ee890a7d49659125","dweb:/ipfs/QmXQU3CphmhpWgXk2L7KaZLCP2eNnMQtJkvSEYeuZ6Fw82"],"license":"MIT"},"src/L2/IL2ToL2CrossDomainMessenger.sol":{"keccak256":"0x0bc5519108a6077e3918968f9812c6f20fcb036c8473b845c065b3cd9d6ef2a3","urls":["bzz-raw://56d64a5a169d54b16b02423faaf98fe9947780957678ec849596cb68880f3e97","dweb:/ipfs/QmRXkq7ABqUffim7foK5EiZRwZPk8Ln6vArafjABHySBbR"],"license":"MIT"},"src/L2/L2ToL2CrossDomainMessenger.sol":{"keccak256":"0xaae58981509e3eb3eed16e492a68b9a168ba0c38ba1a2e74192e005d7c410e72","urls":["bzz-raw://fdbc3ec2621df8e3dadee0879abe8f3faa5a3b9a17f799b6e83aef2cf28fd652","dweb:/ipfs/QmbdRMdGhj9Yqh6Kn7BGk2xsYcjZeWn4Yz9BSUbGhgBshr"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0x5586d9715d8fbdd48245220f13a96573555fd847a333869e862ae186802e0311","urls":["bzz-raw://3f34dbd5a0a8918120e226f549a8337bd6fc7176653159a85929ce6fe3d66e11","dweb:/ipfs/QmQKnhRPMnhKBRLmV2C1BqAsPpQg8xVFXi7ZLuHU9XQ1BE"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8","urls":["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12","dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"],"license":"MIT"},"src/libraries/Predeploys.sol":{"keccak256":"0xbc21e07126b325cf053f1c5a26968f02fb0a0da503634044a8e84c9d642acb8f","urls":["bzz-raw://7af279cd7b3b12189894ae43f33d19ba84931670ba10b78c108b9d31b767c6b3","dweb:/ipfs/QmWA4qha4WjQToAYhQbqVPe8WrniBAoktVNSSxCCqBraH3"],"license":"MIT"},"src/libraries/TransientContext.sol":{"keccak256":"0x7ae128d512768e928b3cd2d7604fcded205e5a99465360985fb0aaf985e888f8","urls":["bzz-raw://555255ed8deedb8cb090d5f979b51356a98c12b259ec07664de33280d24738fd","dweb:/ipfs/QmPUAfTpoqqUDEaRC2gRPr2CFbKSaz8J4yBQgLc9wM6Hss"],"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/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":47190,"contract":"src/L2/L2ToL2CrossDomainMessenger.sol:L2ToL2CrossDomainMessenger","label":"successfulMessages","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_bool)"},{"astId":47193,"contract":"src/L2/L2ToL2CrossDomainMessenger.sol:L2ToL2CrossDomainMessenger","label":"msgNonce","offset":0,"slot":"1","type":"t_uint240"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_bytes32,t_bool)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => bool)","numberOfBytes":"32","value":"t_bool"},"t_uint240":{"encoding":"inplace","label":"uint240","numberOfBytes":"30"}}},"userdoc":{"version":1,"kind":"user","methods":{"crossDomainMessageSender()":{"notice":"Retrieves the sender of the current cross domain message. If not entered, reverts."},"crossDomainMessageSource()":{"notice":"Retrieves the source of the current cross domain message. If not entered, reverts."},"messageNonce()":{"notice":"Retrieves the next message nonce. Message version will be added to the upper two bytes of the message         nonce. Message version allows us to treat messages as having different structures."},"messageVersion()":{"notice":"Current message version identifier."},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only be executed via         cross-chain call from the other messenger OR if the message was already received once and is currently         being replayed."},"sendMessage(uint256,address,bytes)":{"notice":"Sends a message to some target address on a destination chain. Note that if the call always reverts,         then the message will be unrelayable and any ETH sent will be permanently locked. The same will occur         if the target on the other chain is considered unsafe (see the _isUnsafeTarget() function)."},"successfulMessages(bytes32)":{"notice":"Mapping of message hashes to boolean receipt values. Note that a message will only be present in this         mapping if it has successfully been relayed on this chain, and can therefore not be relayed again."},"version()":{"notice":"Semantic version."}},"events":{"FailedRelayedMessage(bytes32)":{"notice":"Emitted whenever a message fails to be relayed on this chain."},"RelayedMessage(bytes32)":{"notice":"Emitted whenever a message is successfully relayed on this chain."},"SentMessage(bytes)":{"notice":"Emitted whenever a message is sent to the other chain."}},"errors":{"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger()":[{"notice":"Thrown when attempting to relay a message where CrossL2Inbox's origin is not L2ToL2CrossDomainMessenger."}],"MessageAlreadyRelayed()":[{"notice":"Thrown when attempting to relay a message that has already been relayed."}],"MessageDestinationNotRelayChain()":[{"notice":"Thrown when attempting to relay a message whose destination chain is not the chain relaying it."}],"MessageDestinationSameChain()":[{"notice":"Thrown when attempting to send a message to the chain that the message is being sent from."}],"MessageTargetCrossL2Inbox()":[{"notice":"Thrown when attempting to relay a message whose target is CrossL2Inbox."}],"MessageTargetL2ToL2CrossDomainMessenger()":[{"notice":"Thrown when attempting to relay a message whose target is L2ToL2CrossDomainMessenger."}],"NotEntered()":[{"notice":"Thrown when a non-written slot in transient storage is attempted to be read from."}],"ReentrantCall()":[{"notice":"Thrown when a reentrant call is detected."}],"RelayMessageCallerNotCrossL2Inbox()":[{"notice":"Thrown when attempting to relay a message and the function caller (msg.sender) is not CrossL2Inbox."}]},"notice":"The L2ToL2CrossDomainMessenger is a higher level abstraction on top of the CrossL2Inbox that provides         features necessary for secure transfers ERC20 tokens between L2 chains. Messages sent through the         L2ToL2CrossDomainMessenger on the source chain receive both replay protection as well as domain binding."},"devdoc":{"version":1,"kind":"dev","methods":{"crossDomainMessageSender()":{"returns":{"_sender":"Address of the sender of the current cross domain message."}},"crossDomainMessageSource()":{"returns":{"_source":"Chain ID of the source of the current cross domain message."}},"messageNonce()":{"returns":{"_0":"Nonce of the next message to be sent, with added message version."}},"relayMessage(uint256,uint256,uint256,address,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message payload to call target with.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_source":"Chain ID of the source chain.","_target":"Address that the message is targeted at."}},"sendMessage(uint256,address,bytes)":{"params":{"_destination":"Chain ID of the destination chain.","_message":"Message payload to call target with.","_target":"Target contract or wallet address."}}},"events":{"FailedRelayedMessage(bytes32)":{"params":{"messageHash":"Hash of the message that failed to be relayed."}},"RelayedMessage(bytes32)":{"params":{"messageHash":"Hash of the message that was relayed."}},"SentMessage(bytes)":{"params":{"data":"Encoded data of the message that was sent."}}},"title":"L2ToL2CrossDomainMessenger"},"ast":{"absolutePath":"src/L2/L2ToL2CrossDomainMessenger.sol","id":47492,"exportedSymbols":{"CrossL2Inbox":[47019],"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger":[47142],"Encoding":[47917],"IL2ToL2CrossDomainMessenger":[47118],"ISemver":[49266],"L2ToL2CrossDomainMessenger":[47491],"MessageAlreadyRelayed":[47154],"MessageDestinationNotRelayChain":[47145],"MessageDestinationSameChain":[47136],"MessageTargetCrossL2Inbox":[47148],"MessageTargetL2ToL2CrossDomainMessenger":[47151],"NotEntered":[47133],"Predeploys":[48636],"ReentrantCall":[47157],"RelayMessageCallerNotCrossL2Inbox":[47139]},"nodeType":"SourceUnit","src":"32:10913:26","nodes":[{"id":47120,"nodeType":"PragmaDirective","src":"32:23:26","nodes":[],"literals":["solidity","0.8",".25"]},{"id":47122,"nodeType":"ImportDirective","src":"57:54:26","nodes":[],"absolutePath":"src/libraries/Encoding.sol","file":"src/libraries/Encoding.sol","nameLocation":"-1:-1:-1","scope":47492,"sourceUnit":47918,"symbolAliases":[{"foreign":{"id":47121,"name":"Encoding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47917,"src":"66:8:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47124,"nodeType":"ImportDirective","src":"112:58:26","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":47492,"sourceUnit":48637,"symbolAliases":[{"foreign":{"id":47123,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"121:10:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47126,"nodeType":"ImportDirective","src":"171:55:26","nodes":[],"absolutePath":"src/L2/CrossL2Inbox.sol","file":"src/L2/CrossL2Inbox.sol","nameLocation":"-1:-1:-1","scope":47492,"sourceUnit":47020,"symbolAliases":[{"foreign":{"id":47125,"name":"CrossL2Inbox","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47019,"src":"180:12:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47128,"nodeType":"ImportDirective","src":"227:85:26","nodes":[],"absolutePath":"src/L2/IL2ToL2CrossDomainMessenger.sol","file":"src/L2/IL2ToL2CrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":47492,"sourceUnit":47119,"symbolAliases":[{"foreign":{"id":47127,"name":"IL2ToL2CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47118,"src":"236:27:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47130,"nodeType":"ImportDirective","src":"313:52:26","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":47492,"sourceUnit":49267,"symbolAliases":[{"foreign":{"id":47129,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49266,"src":"322:7:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":47133,"nodeType":"ErrorDefinition","src":"461:19:26","nodes":[],"documentation":{"id":47131,"nodeType":"StructuredDocumentation","src":"367:94:26","text":"@notice Thrown when a non-written slot in transient storage is attempted to be read from."},"errorSelector":"bca35af6","name":"NotEntered","nameLocation":"467:10:26","parameters":{"id":47132,"nodeType":"ParameterList","parameters":[],"src":"477:2:26"}},{"id":47136,"nodeType":"ErrorDefinition","src":"585:36:26","nodes":[],"documentation":{"id":47134,"nodeType":"StructuredDocumentation","src":"482:103:26","text":"@notice Thrown when attempting to send a message to the chain that the message is being sent from."},"errorSelector":"8ed9a95d","name":"MessageDestinationSameChain","nameLocation":"591:27:26","parameters":{"id":47135,"nodeType":"ParameterList","parameters":[],"src":"618:2:26"}},{"id":47139,"nodeType":"ErrorDefinition","src":"735:42:26","nodes":[],"documentation":{"id":47137,"nodeType":"StructuredDocumentation","src":"623:112:26","text":"@notice Thrown when attempting to relay a message and the function caller (msg.sender) is not CrossL2Inbox."},"errorSelector":"1fc35f94","name":"RelayMessageCallerNotCrossL2Inbox","nameLocation":"741:33:26","parameters":{"id":47138,"nodeType":"ParameterList","parameters":[],"src":"774:2:26"}},{"id":47142,"nodeType":"ErrorDefinition","src":"896:56:26","nodes":[],"documentation":{"id":47140,"nodeType":"StructuredDocumentation","src":"779:117:26","text":"@notice Thrown when attempting to relay a message where CrossL2Inbox's origin is not L2ToL2CrossDomainMessenger."},"errorSelector":"ccc4e338","name":"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger","nameLocation":"902:47:26","parameters":{"id":47141,"nodeType":"ParameterList","parameters":[],"src":"949:2:26"}},{"id":47145,"nodeType":"ErrorDefinition","src":"1062:40:26","nodes":[],"documentation":{"id":47143,"nodeType":"StructuredDocumentation","src":"954:108:26","text":"@notice Thrown when attempting to relay a message whose destination chain is not the chain relaying it."},"errorSelector":"31ac2211","name":"MessageDestinationNotRelayChain","nameLocation":"1068:31:26","parameters":{"id":47144,"nodeType":"ParameterList","parameters":[],"src":"1099:2:26"}},{"id":47148,"nodeType":"ErrorDefinition","src":"1188:34:26","nodes":[],"documentation":{"id":47146,"nodeType":"StructuredDocumentation","src":"1104:84:26","text":"@notice Thrown when attempting to relay a message whose target is CrossL2Inbox."},"errorSelector":"a9040b12","name":"MessageTargetCrossL2Inbox","nameLocation":"1194:25:26","parameters":{"id":47147,"nodeType":"ParameterList","parameters":[],"src":"1219:2:26"}},{"id":47151,"nodeType":"ErrorDefinition","src":"1322:48:26","nodes":[],"documentation":{"id":47149,"nodeType":"StructuredDocumentation","src":"1224:98:26","text":"@notice Thrown when attempting to relay a message whose target is L2ToL2CrossDomainMessenger."},"errorSelector":"4faa2509","name":"MessageTargetL2ToL2CrossDomainMessenger","nameLocation":"1328:39:26","parameters":{"id":47150,"nodeType":"ParameterList","parameters":[],"src":"1367:2:26"}},{"id":47154,"nodeType":"ErrorDefinition","src":"1457:30:26","nodes":[],"documentation":{"id":47152,"nodeType":"StructuredDocumentation","src":"1372:85:26","text":"@notice Thrown when attempting to relay a message that has already been relayed."},"errorSelector":"9ca9480b","name":"MessageAlreadyRelayed","nameLocation":"1463:21:26","parameters":{"id":47153,"nodeType":"ParameterList","parameters":[],"src":"1484:2:26"}},{"id":47157,"nodeType":"ErrorDefinition","src":"1543:22:26","nodes":[],"documentation":{"id":47155,"nodeType":"StructuredDocumentation","src":"1489:54:26","text":"@notice Thrown when a reentrant call is detected."},"errorSelector":"37ed32e8","name":"ReentrantCall","nameLocation":"1549:13:26","parameters":{"id":47156,"nodeType":"ParameterList","parameters":[],"src":"1562:2:26"}},{"id":47491,"nodeType":"ContractDefinition","src":"2031:8913:26","nodes":[{"id":47166,"nodeType":"VariableDeclaration","src":"2258:107:26","nodes":[],"constant":true,"documentation":{"id":47163,"nodeType":"StructuredDocumentation","src":"2113:140:26","text":"@notice Storage slot for `entered` value.\n         Equal to bytes32(uint256(keccak256(\"l2tol2crossdomainmessenger.entered\")) - 1)"},"mutability":"constant","name":"ENTERED_SLOT","nameLocation":"2284:12:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":47164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2258:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866353366633338633565343631626463626265623437383837666563663031346162643339393239333130396364353066363565356639303738636664303235","id":47165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2299:66:26","typeDescriptions":{"typeIdentifier":"t_rational_110929308892839657444751123403342639349772083510859194121277652461788381302821_by_1","typeString":"int_const 1109...(70 digits omitted)...2821"},"value":"0xf53fc38c5e461bdcbbeb47887fecf014abd399293109cd50f65e5f9078cfd025"},"visibility":"internal"},{"id":47170,"nodeType":"VariableDeclaration","src":"2547:135:26","nodes":[],"constant":true,"documentation":{"id":47167,"nodeType":"StructuredDocumentation","src":"2372:170:26","text":"@notice Storage slot for the sender of the current cross domain message.\n         Equal to bytes32(uint256(keccak256(\"l2tol2crossdomainmessenger.sender\")) - 1)"},"mutability":"constant","name":"CROSS_DOMAIN_MESSAGE_SENDER_SLOT","nameLocation":"2573:32:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":47168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2547:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862383334343464303730373262313232653265373261363639636533323835376438393233343563313938353666346537313432643036613136376162336633","id":47169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2616:66:26","typeDescriptions":{"typeIdentifier":"t_rational_83317915124952138165281597070141736405785001779305661129532428155124339880947_by_1","typeString":"int_const 8331...(69 digits omitted)...0947"},"value":"0xb83444d07072b122e2e72a669ce32857d892345c19856f4e7142d06a167ab3f3"},"visibility":"internal"},{"id":47174,"nodeType":"VariableDeclaration","src":"2864:135:26","nodes":[],"constant":true,"documentation":{"id":47171,"nodeType":"StructuredDocumentation","src":"2689:170:26","text":"@notice Storage slot for the source of the current cross domain message.\n         Equal to bytes32(uint256(keccak256(\"l2tol2crossdomainmessenger.source\")) - 1)"},"mutability":"constant","name":"CROSS_DOMAIN_MESSAGE_SOURCE_SLOT","nameLocation":"2890:32:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":47172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2864:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307837313164666133323539633834326666666331376436653166316530666335393237373536313333613233343563613536623463623831373835383966656537","id":47173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2933:66:26","typeDescriptions":{"typeIdentifier":"t_rational_51164317248826882881343213066748959193860054907587800719701918628625062166247_by_1","typeString":"int_const 5116...(69 digits omitted)...6247"},"value":"0x711dfa3259c842fffc17d6e1f1e0fc5927756133a2345ca56b4cb8178589fee7"},"visibility":"internal"},{"id":47181,"nodeType":"VariableDeclaration","src":"3058:49:26","nodes":[],"constant":true,"documentation":{"id":47175,"nodeType":"StructuredDocumentation","src":"3006:47:26","text":"@notice Current message version identifier."},"functionSelector":"52617f3c","mutability":"constant","name":"messageVersion","nameLocation":"3081:14:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":47176,"name":"uint16","nodeType":"ElementaryTypeName","src":"3058:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"arguments":[{"hexValue":"30","id":47179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3105:1:26","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":47178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3098:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":47177,"name":"uint16","nodeType":"ElementaryTypeName","src":"3098:6:26","typeDescriptions":{}}},"id":47180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3098:9:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"public"},{"id":47185,"nodeType":"VariableDeclaration","src":"3177:40:26","nodes":[],"baseFunctions":[49265],"constant":true,"documentation":{"id":47182,"nodeType":"StructuredDocumentation","src":"3114:58:26","text":"@notice Semantic version.\n @custom:semver 0.1.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"3200:7:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":47183,"name":"string","nodeType":"ElementaryTypeName","src":"3177:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"302e312e30","id":47184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3210:7:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_aa7cdbe2cce2ec7b606b0e199ddd9b264a6e645e767fb8479a7917dcd1b8693f","typeString":"literal_string \"0.1.0\""},"value":"0.1.0"},"visibility":"public"},{"id":47190,"nodeType":"VariableDeclaration","src":"3457:50:26","nodes":[],"constant":false,"documentation":{"id":47186,"nodeType":"StructuredDocumentation","src":"3224:228:26","text":"@notice Mapping of message hashes to boolean receipt values. Note that a message will only be present in this\n         mapping if it has successfully been relayed on this chain, and can therefore not be relayed again."},"functionSelector":"b1b1b209","mutability":"mutable","name":"successfulMessages","nameLocation":"3489:18:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"typeName":{"id":47189,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":47187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3465:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"3457:24:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":47188,"name":"bool","nodeType":"ElementaryTypeName","src":"3476:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"public"},{"id":47193,"nodeType":"VariableDeclaration","src":"3777:25:26","nodes":[],"constant":false,"documentation":{"id":47191,"nodeType":"StructuredDocumentation","src":"3514:258:26","text":"@notice Nonce for the next message to be sent, without the message version applied. Use the messageNonce getter,\n         which will insert the message version into the nonce to give you the actual nonce to be used for the\n         message."},"mutability":"mutable","name":"msgNonce","nameLocation":"3794:8:26","scope":47491,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":47192,"name":"uint240","nodeType":"ElementaryTypeName","src":"3777:7:26","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"},{"id":47198,"nodeType":"EventDefinition","src":"3943:40:26","nodes":[],"anonymous":true,"documentation":{"id":47194,"nodeType":"StructuredDocumentation","src":"3809:129:26","text":"@notice Emitted whenever a message is sent to the other chain.\n @param data Encoded data of the message that was sent."},"eventSelector":"0ee9ffdb2334d78de97ffb066b23a352a4d35180cefb36589d663fbb1eb6f326","name":"SentMessage","nameLocation":"3949:11:26","parameters":{"id":47197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47196,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"3967:4:26","nodeType":"VariableDeclaration","scope":47198,"src":"3961:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":47195,"name":"bytes","nodeType":"ElementaryTypeName","src":"3961:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3960:12:26"}},{"id":47203,"nodeType":"EventDefinition","src":"4136:50:26","nodes":[],"anonymous":false,"documentation":{"id":47199,"nodeType":"StructuredDocumentation","src":"3989:142:26","text":"@notice Emitted whenever a message is successfully relayed on this chain.\n @param messageHash Hash of the message that was relayed."},"eventSelector":"4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c","name":"RelayedMessage","nameLocation":"4142:14:26","parameters":{"id":47202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47201,"indexed":true,"mutability":"mutable","name":"messageHash","nameLocation":"4173:11:26","nodeType":"VariableDeclaration","scope":47203,"src":"4157:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":47200,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4157:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4156:29:26"}},{"id":47208,"nodeType":"EventDefinition","src":"4344:56:26","nodes":[],"anonymous":false,"documentation":{"id":47204,"nodeType":"StructuredDocumentation","src":"4192:147:26","text":"@notice Emitted whenever a message fails to be relayed on this chain.\n @param messageHash Hash of the message that failed to be relayed."},"eventSelector":"99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f","name":"FailedRelayedMessage","nameLocation":"4350:20:26","parameters":{"id":47207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47206,"indexed":true,"mutability":"mutable","name":"messageHash","nameLocation":"4387:11:26","nodeType":"VariableDeclaration","scope":47208,"src":"4371:27:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":47205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4371:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4370:29:26"}},{"id":47221,"nodeType":"ModifierDefinition","src":"4469:220:26","nodes":[],"body":{"id":47220,"nodeType":"Block","src":"4493:196:26","nodes":[],"statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":47211,"name":"_entered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47468,"src":"4507:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":47212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4507:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47216,"nodeType":"IfStatement","src":"4503:38:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47213,"name":"ReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47157,"src":"4526:13:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4526:15:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47215,"nodeType":"RevertStatement","src":"4519:22:26"}},{"AST":{"nativeSrc":"4560:47:26","nodeType":"YulBlock","src":"4560:47:26","statements":[{"expression":{"arguments":[{"name":"ENTERED_SLOT","nativeSrc":"4581:12:26","nodeType":"YulIdentifier","src":"4581:12:26"},{"kind":"number","nativeSrc":"4595:1:26","nodeType":"YulLiteral","src":"4595:1:26","type":"","value":"1"}],"functionName":{"name":"tstore","nativeSrc":"4574:6:26","nodeType":"YulIdentifier","src":"4574:6:26"},"nativeSrc":"4574:23:26","nodeType":"YulFunctionCall","src":"4574:23:26"},"nativeSrc":"4574:23:26","nodeType":"YulExpressionStatement","src":"4574:23:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":47166,"isOffset":false,"isSlot":false,"src":"4581:12:26","valueSize":1}],"id":47217,"nodeType":"InlineAssembly","src":"4551:56:26"},{"id":47218,"nodeType":"PlaceholderStatement","src":"4616:1:26"},{"AST":{"nativeSrc":"4636:47:26","nodeType":"YulBlock","src":"4636:47:26","statements":[{"expression":{"arguments":[{"name":"ENTERED_SLOT","nativeSrc":"4657:12:26","nodeType":"YulIdentifier","src":"4657:12:26"},{"kind":"number","nativeSrc":"4671:1:26","nodeType":"YulLiteral","src":"4671:1:26","type":"","value":"0"}],"functionName":{"name":"tstore","nativeSrc":"4650:6:26","nodeType":"YulIdentifier","src":"4650:6:26"},"nativeSrc":"4650:23:26","nodeType":"YulFunctionCall","src":"4650:23:26"},"nativeSrc":"4650:23:26","nodeType":"YulExpressionStatement","src":"4650:23:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":47166,"isOffset":false,"isSlot":false,"src":"4657:12:26","valueSize":1}],"id":47219,"nodeType":"InlineAssembly","src":"4627:56:26"}]},"documentation":{"id":47209,"nodeType":"StructuredDocumentation","src":"4406:58:26","text":"@notice Enforces that a function cannot be re-entered."},"name":"nonReentrant","nameLocation":"4478:12:26","parameters":{"id":47210,"nodeType":"ParameterList","parameters":[],"src":"4490:2:26"},"virtual":false,"visibility":"internal"},{"id":47233,"nodeType":"ModifierDefinition","src":"4867:87:26","nodes":[],"body":{"id":47232,"nodeType":"Block","src":"4890:64:26","nodes":[],"statements":[{"condition":{"id":47226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4904:11:26","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47224,"name":"_entered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47468,"src":"4905:8:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":47225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4905:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47230,"nodeType":"IfStatement","src":"4900:36:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47227,"name":"NotEntered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47133,"src":"4924:10:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47229,"nodeType":"RevertStatement","src":"4917:19:26"}},{"id":47231,"nodeType":"PlaceholderStatement","src":"4946:1:26"}]},"documentation":{"id":47222,"nodeType":"StructuredDocumentation","src":"4695:167:26","text":"@notice Enforces that cross domain message sender and source are set. Reverts if not.\n         Used to differentiate between 0 and nil in transient storage."},"name":"onlyEntered","nameLocation":"4876:11:26","parameters":{"id":47223,"nodeType":"ParameterList","parameters":[],"src":"4887:2:26"},"virtual":false,"visibility":"internal"},{"id":47243,"nodeType":"FunctionDefinition","src":"5142:187:26","nodes":[],"body":{"id":47242,"nodeType":"Block","src":"5230:99:26","nodes":[],"statements":[{"AST":{"nativeSrc":"5249:74:26","nodeType":"YulBlock","src":"5249:74:26","statements":[{"nativeSrc":"5263:50:26","nodeType":"YulAssignment","src":"5263:50:26","value":{"arguments":[{"name":"CROSS_DOMAIN_MESSAGE_SENDER_SLOT","nativeSrc":"5280:32:26","nodeType":"YulIdentifier","src":"5280:32:26"}],"functionName":{"name":"tload","nativeSrc":"5274:5:26","nodeType":"YulIdentifier","src":"5274:5:26"},"nativeSrc":"5274:39:26","nodeType":"YulFunctionCall","src":"5274:39:26"},"variableNames":[{"name":"_sender","nativeSrc":"5263:7:26","nodeType":"YulIdentifier","src":"5263:7:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":47170,"isOffset":false,"isSlot":false,"src":"5280:32:26","valueSize":1},{"declaration":47239,"isOffset":false,"isSlot":false,"src":"5263:7:26","valueSize":1}],"id":47241,"nodeType":"InlineAssembly","src":"5240:83:26"}]},"baseFunctions":[47085],"documentation":{"id":47234,"nodeType":"StructuredDocumentation","src":"4960:177:26","text":"@notice Retrieves the sender of the current cross domain message. If not entered, reverts.\n @return _sender Address of the sender of the current cross domain message."},"functionSelector":"38ffde18","implemented":true,"kind":"function","modifiers":[{"id":47237,"kind":"modifierInvocation","modifierName":{"id":47236,"name":"onlyEntered","nameLocations":["5192:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":47233,"src":"5192:11:26"},"nodeType":"ModifierInvocation","src":"5192:11:26"}],"name":"crossDomainMessageSender","nameLocation":"5151:24:26","parameters":{"id":47235,"nodeType":"ParameterList","parameters":[],"src":"5175:2:26"},"returnParameters":{"id":47240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47239,"mutability":"mutable","name":"_sender","nameLocation":"5221:7:26","nodeType":"VariableDeclaration","scope":47243,"src":"5213:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47238,"name":"address","nodeType":"ElementaryTypeName","src":"5213:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5212:17:26"},"scope":47491,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":47253,"nodeType":"FunctionDefinition","src":"5518:187:26","nodes":[],"body":{"id":47252,"nodeType":"Block","src":"5606:99:26","nodes":[],"statements":[{"AST":{"nativeSrc":"5625:74:26","nodeType":"YulBlock","src":"5625:74:26","statements":[{"nativeSrc":"5639:50:26","nodeType":"YulAssignment","src":"5639:50:26","value":{"arguments":[{"name":"CROSS_DOMAIN_MESSAGE_SOURCE_SLOT","nativeSrc":"5656:32:26","nodeType":"YulIdentifier","src":"5656:32:26"}],"functionName":{"name":"tload","nativeSrc":"5650:5:26","nodeType":"YulIdentifier","src":"5650:5:26"},"nativeSrc":"5650:39:26","nodeType":"YulFunctionCall","src":"5650:39:26"},"variableNames":[{"name":"_source","nativeSrc":"5639:7:26","nodeType":"YulIdentifier","src":"5639:7:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":47174,"isOffset":false,"isSlot":false,"src":"5656:32:26","valueSize":1},{"declaration":47249,"isOffset":false,"isSlot":false,"src":"5639:7:26","valueSize":1}],"id":47251,"nodeType":"InlineAssembly","src":"5616:83:26"}]},"baseFunctions":[47091],"documentation":{"id":47244,"nodeType":"StructuredDocumentation","src":"5335:178:26","text":"@notice Retrieves the source of the current cross domain message. If not entered, reverts.\n @return _source Chain ID of the source of the current cross domain message."},"functionSelector":"24794462","implemented":true,"kind":"function","modifiers":[{"id":47247,"kind":"modifierInvocation","modifierName":{"id":47246,"name":"onlyEntered","nameLocations":["5568:11:26"],"nodeType":"IdentifierPath","referencedDeclaration":47233,"src":"5568:11:26"},"nodeType":"ModifierInvocation","src":"5568:11:26"}],"name":"crossDomainMessageSource","nameLocation":"5527:24:26","parameters":{"id":47245,"nodeType":"ParameterList","parameters":[],"src":"5551:2:26"},"returnParameters":{"id":47250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47249,"mutability":"mutable","name":"_source","nameLocation":"5597:7:26","nodeType":"VariableDeclaration","scope":47253,"src":"5589:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47248,"name":"uint256","nodeType":"ElementaryTypeName","src":"5589:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5588:17:26"},"scope":47491,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":47313,"nodeType":"FunctionDefinition","src":"6245:643:26","nodes":[],"body":{"id":47312,"nodeType":"Block","src":"6347:541:26","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":47266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47263,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47256,"src":"6361:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":47264,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6377:5:26","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":47265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6383:7:26","memberName":"chainid","nodeType":"MemberAccess","src":"6377:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6361:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47270,"nodeType":"IfStatement","src":"6357:71:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47267,"name":"MessageDestinationSameChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47136,"src":"6399:27:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6399:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47269,"nodeType":"RevertStatement","src":"6392:36:26"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":47274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47271,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47258,"src":"6442:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":47272,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"6453:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6464:14:26","memberName":"CROSS_L2_INBOX","nodeType":"MemberAccess","referencedDeclaration":48293,"src":"6453:25:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6442:36:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47278,"nodeType":"IfStatement","src":"6438:76:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47275,"name":"MessageTargetCrossL2Inbox","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47148,"src":"6487:25:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6487:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47277,"nodeType":"RevertStatement","src":"6480:34:26"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":47282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47279,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47258,"src":"6528:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":47280,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"6539:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6550:31:26","memberName":"L2_TO_L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":48297,"src":"6539:42:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6528:53:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47286,"nodeType":"IfStatement","src":"6524:107:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47283,"name":"MessageTargetL2ToL2CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47151,"src":"6590:39:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6590:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47285,"nodeType":"RevertStatement","src":"6583:48:26"}},{"assignments":[47288],"declarations":[{"constant":false,"id":47288,"mutability":"mutable","name":"data","nameLocation":"6655:4:26","nodeType":"VariableDeclaration","scope":47312,"src":"6642:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":47287,"name":"bytes","nodeType":"ElementaryTypeName","src":"6642:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":47304,"initialValue":{"arguments":[{"expression":{"id":47291,"name":"L2ToL2CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47491,"src":"6690:26:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_L2ToL2CrossDomainMessenger_$47491_$","typeString":"type(contract L2ToL2CrossDomainMessenger)"}},"id":47292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6717:12:26","memberName":"relayMessage","nodeType":"MemberAccess","referencedDeclaration":47440,"src":"6690:39:26","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function L2ToL2CrossDomainMessenger.relayMessage(uint256,uint256,uint256,address,address,bytes memory) payable"}},{"components":[{"id":47293,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47256,"src":"6744:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":47294,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6758:5:26","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":47295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6764:7:26","memberName":"chainid","nodeType":"MemberAccess","src":"6758:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":47296,"name":"messageNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47453,"src":"6773:12:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":47297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6773:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":47298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6789:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":47299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6793:6:26","memberName":"sender","nodeType":"MemberAccess","src":"6789:10:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":47300,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47258,"src":"6801:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":47301,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47260,"src":"6810:8:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"id":47302,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6743:76:26","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,uint256,uint256,address,address,bytes calldata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_payable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function L2ToL2CrossDomainMessenger.relayMessage(uint256,uint256,uint256,address,address,bytes memory) payable"},{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_bytes_calldata_ptr_$","typeString":"tuple(uint256,uint256,uint256,address,address,bytes calldata)"}],"expression":{"id":47289,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6662:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":47290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6666:10:26","memberName":"encodeCall","nodeType":"MemberAccess","src":"6662:14:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":47303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6662:167:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6642:187:26"},{"eventCall":{"arguments":[{"id":47306,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47288,"src":"6856:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":47305,"name":"SentMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47198,"src":"6844:11:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":47307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6844:17:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47308,"nodeType":"EmitStatement","src":"6839:22:26"},{"expression":{"id":47310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6871:10:26","subExpression":{"id":47309,"name":"msgNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47193,"src":"6871:8:26","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"id":47311,"nodeType":"ExpressionStatement","src":"6871:10:26"}]},"baseFunctions":[47101],"documentation":{"id":47254,"nodeType":"StructuredDocumentation","src":"5711:529:26","text":"@notice Sends a message to some target address on a destination chain. Note that if the call always reverts,\n         then the message will be unrelayable and any ETH sent will be permanently locked. The same will occur\n         if the target on the other chain is considered unsafe (see the _isUnsafeTarget() function).\n @param _destination Chain ID of the destination chain.\n @param _target      Target contract or wallet address.\n @param _message     Message payload to call target with."},"functionSelector":"7056f41f","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"6254:11:26","parameters":{"id":47261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47256,"mutability":"mutable","name":"_destination","nameLocation":"6274:12:26","nodeType":"VariableDeclaration","scope":47313,"src":"6266:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47255,"name":"uint256","nodeType":"ElementaryTypeName","src":"6266:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":47258,"mutability":"mutable","name":"_target","nameLocation":"6296:7:26","nodeType":"VariableDeclaration","scope":47313,"src":"6288:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47257,"name":"address","nodeType":"ElementaryTypeName","src":"6288:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":47260,"mutability":"mutable","name":"_message","nameLocation":"6320:8:26","nodeType":"VariableDeclaration","scope":47313,"src":"6305:23:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":47259,"name":"bytes","nodeType":"ElementaryTypeName","src":"6305:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6265:64:26"},"returnParameters":{"id":47262,"nodeType":"ParameterList","parameters":[],"src":"6347:0:26"},"scope":47491,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":47440,"nodeType":"FunctionDefinition","src":"7550:1424:26","nodes":[],"body":{"id":47439,"nodeType":"Block","src":"7796:1178:26","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":47335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":47331,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7810:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":47332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7814:6:26","memberName":"sender","nodeType":"MemberAccess","src":"7810:10:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":47333,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"7824:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7835:14:26","memberName":"CROSS_L2_INBOX","nodeType":"MemberAccess","referencedDeclaration":48293,"src":"7824:25:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7810:39:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47339,"nodeType":"IfStatement","src":"7806:87:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47336,"name":"RelayMessageCallerNotCrossL2Inbox","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47139,"src":"7858:33:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7858:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47338,"nodeType":"RevertStatement","src":"7851:42:26"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":47348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":47341,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"7920:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7931:14:26","memberName":"CROSS_L2_INBOX","nodeType":"MemberAccess","referencedDeclaration":48293,"src":"7920:25:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":47340,"name":"CrossL2Inbox","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47019,"src":"7907:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CrossL2Inbox_$47019_$","typeString":"type(contract CrossL2Inbox)"}},"id":47343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7907:39:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CrossL2Inbox_$47019","typeString":"contract CrossL2Inbox"}},"id":47344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7947:6:26","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":46837,"src":"7907:46:26","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":47345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7907:48:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":47346,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"7959:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7970:31:26","memberName":"L2_TO_L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":48297,"src":"7959:42:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7907:94:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47353,"nodeType":"IfStatement","src":"7903:181:26","trueBody":{"id":47352,"nodeType":"Block","src":"8003:81:26","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47349,"name":"CrossL2InboxOriginNotL2ToL2CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47142,"src":"8024:47:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8024:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47351,"nodeType":"RevertStatement","src":"8017:56:26"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":47357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47354,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47316,"src":"8097:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":47355,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8113:5:26","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":47356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8119:7:26","memberName":"chainid","nodeType":"MemberAccess","src":"8113:13:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47361,"nodeType":"IfStatement","src":"8093:75:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47358,"name":"MessageDestinationNotRelayChain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47145,"src":"8135:31:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8135:33:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47360,"nodeType":"RevertStatement","src":"8128:40:26"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":47365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47362,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47324,"src":"8182:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":47363,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"8193:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8204:14:26","memberName":"CROSS_L2_INBOX","nodeType":"MemberAccess","referencedDeclaration":48293,"src":"8193:25:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8182:36:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47369,"nodeType":"IfStatement","src":"8178:76:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47366,"name":"MessageTargetCrossL2Inbox","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47148,"src":"8227:25:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47368,"nodeType":"RevertStatement","src":"8220:34:26"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":47373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47370,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47324,"src":"8268:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":47371,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48636,"src":"8279:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$48636_$","typeString":"type(library Predeploys)"}},"id":47372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8290:31:26","memberName":"L2_TO_L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":48297,"src":"8279:42:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8268:53:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47378,"nodeType":"IfStatement","src":"8264:132:26","trueBody":{"id":47377,"nodeType":"Block","src":"8323:73:26","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47374,"name":"MessageTargetL2ToL2CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47151,"src":"8344:39:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8344:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47376,"nodeType":"RevertStatement","src":"8337:48:26"}]}},{"assignments":[47380],"declarations":[{"constant":false,"id":47380,"mutability":"mutable","name":"messageHash","nameLocation":"8414:11:26","nodeType":"VariableDeclaration","scope":47439,"src":"8406:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":47379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8406:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":47392,"initialValue":{"arguments":[{"arguments":[{"id":47384,"name":"_destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47316,"src":"8449:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":47385,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47318,"src":"8463:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":47386,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47320,"src":"8472:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":47387,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47322,"src":"8480:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":47388,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47324,"src":"8489:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":47389,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47326,"src":"8498:8:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":47382,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8438:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":47383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8442:6:26","memberName":"encode","nodeType":"MemberAccess","src":"8438:10:26","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":47390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8438:69:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":47381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8428:9:26","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":47391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8428:80:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8406:102:26"},{"condition":{"baseExpression":{"id":47393,"name":"successfulMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47190,"src":"8522:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":47395,"indexExpression":{"id":47394,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47380,"src":"8541:11:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8522:31:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47400,"nodeType":"IfStatement","src":"8518:92:26","trueBody":{"id":47399,"nodeType":"Block","src":"8555:55:26","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":47396,"name":"MessageAlreadyRelayed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47154,"src":"8576:21:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":47397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8576:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47398,"nodeType":"RevertStatement","src":"8569:30:26"}]}},{"expression":{"arguments":[{"id":47402,"name":"_source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47318,"src":"8642:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":47403,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47322,"src":"8651:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":47401,"name":"_storeMessageMetadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47478,"src":"8620:21:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":47404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8620:39:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47405,"nodeType":"ExpressionStatement","src":"8620:39:26"},{"assignments":[47407],"declarations":[{"constant":false,"id":47407,"mutability":"mutable","name":"success","nameLocation":"8675:7:26","nodeType":"VariableDeclaration","scope":47439,"src":"8670:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":47406,"name":"bool","nodeType":"ElementaryTypeName","src":"8670:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":47412,"initialValue":{"arguments":[{"id":47409,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47324,"src":"8701:7:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":47410,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47326,"src":"8710:8:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":47408,"name":"_callWithAllGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47490,"src":"8685:15:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes memory) returns (bool)"}},"id":47411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8685:34:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"8670:49:26"},{"condition":{"id":47413,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47407,"src":"8734:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":47429,"nodeType":"Block","src":"8858:63:26","statements":[{"eventCall":{"arguments":[{"id":47426,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47380,"src":"8898:11:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":47425,"name":"FailedRelayedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47208,"src":"8877:20:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":47427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8877:33:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47428,"nodeType":"EmitStatement","src":"8872:38:26"}]},"id":47430,"nodeType":"IfStatement","src":"8730:191:26","trueBody":{"id":47424,"nodeType":"Block","src":"8743:109:26","statements":[{"expression":{"id":47418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":47414,"name":"successfulMessages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47190,"src":"8757:18:26","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_bool_$","typeString":"mapping(bytes32 => bool)"}},"id":47416,"indexExpression":{"id":47415,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47380,"src":"8776:11:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8757:31:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":47417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8791:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8757:38:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":47419,"nodeType":"ExpressionStatement","src":"8757:38:26"},{"eventCall":{"arguments":[{"id":47421,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47380,"src":"8829:11:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":47420,"name":"RelayedMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47203,"src":"8814:14:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":47422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8814:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47423,"nodeType":"EmitStatement","src":"8809:32:26"}]}},{"expression":{"arguments":[{"hexValue":"30","id":47432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8953:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"30","id":47435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8964:1:26","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":47434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8956:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":47433,"name":"address","nodeType":"ElementaryTypeName","src":"8956:7:26","typeDescriptions":{}}},"id":47436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8956:10:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"}],"id":47431,"name":"_storeMessageMetadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47478,"src":"8931:21:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":47437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8931:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":47438,"nodeType":"ExpressionStatement","src":"8931:36:26"}]},"baseFunctions":[47117],"documentation":{"id":47314,"nodeType":"StructuredDocumentation","src":"6894:651:26","text":"@notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only be executed via\n         cross-chain call from the other messenger OR if the message was already received once and is currently\n         being replayed.\n @param _destination Chain ID of the destination chain.\n @param _source      Chain ID of the source chain.\n @param _nonce       Nonce of the message being relayed.\n @param _sender      Address of the user who sent the message.\n @param _target      Address that the message is targeted at.\n @param _message     Message payload to call target with."},"functionSelector":"1ecd26f2","implemented":true,"kind":"function","modifiers":[{"id":47329,"kind":"modifierInvocation","modifierName":{"id":47328,"name":"nonReentrant","nameLocations":["7779:12:26"],"nodeType":"IdentifierPath","referencedDeclaration":47221,"src":"7779:12:26"},"nodeType":"ModifierInvocation","src":"7779:12:26"}],"name":"relayMessage","nameLocation":"7559:12:26","parameters":{"id":47327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47316,"mutability":"mutable","name":"_destination","nameLocation":"7589:12:26","nodeType":"VariableDeclaration","scope":47440,"src":"7581:20:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47315,"name":"uint256","nodeType":"ElementaryTypeName","src":"7581:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":47318,"mutability":"mutable","name":"_source","nameLocation":"7619:7:26","nodeType":"VariableDeclaration","scope":47440,"src":"7611:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47317,"name":"uint256","nodeType":"ElementaryTypeName","src":"7611:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":47320,"mutability":"mutable","name":"_nonce","nameLocation":"7644:6:26","nodeType":"VariableDeclaration","scope":47440,"src":"7636:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47319,"name":"uint256","nodeType":"ElementaryTypeName","src":"7636:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":47322,"mutability":"mutable","name":"_sender","nameLocation":"7668:7:26","nodeType":"VariableDeclaration","scope":47440,"src":"7660:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47321,"name":"address","nodeType":"ElementaryTypeName","src":"7660:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":47324,"mutability":"mutable","name":"_target","nameLocation":"7693:7:26","nodeType":"VariableDeclaration","scope":47440,"src":"7685:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47323,"name":"address","nodeType":"ElementaryTypeName","src":"7685:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":47326,"mutability":"mutable","name":"_message","nameLocation":"7723:8:26","nodeType":"VariableDeclaration","scope":47440,"src":"7710:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":47325,"name":"bytes","nodeType":"ElementaryTypeName","src":"7710:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7571:166:26"},"returnParameters":{"id":47330,"nodeType":"ParameterList","parameters":[],"src":"7796:0:26"},"scope":47491,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":47453,"nodeType":"FunctionDefinition","src":"9279:133:26","nodes":[],"body":{"id":47452,"nodeType":"Block","src":"9333:79:26","nodes":[],"statements":[{"expression":{"arguments":[{"id":47448,"name":"msgNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47193,"src":"9380:8:26","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},{"id":47449,"name":"messageVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47181,"src":"9390:14:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint240","typeString":"uint240"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"expression":{"id":47446,"name":"Encoding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47917,"src":"9350:8:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Encoding_$47917_$","typeString":"type(library Encoding)"}},"id":47447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9359:20:26","memberName":"encodeVersionedNonce","nodeType":"MemberAccess","referencedDeclaration":47761,"src":"9350:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint240_$_t_uint16_$returns$_t_uint256_$","typeString":"function (uint240,uint16) pure returns (uint256)"}},"id":47450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9350:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":47445,"id":47451,"nodeType":"Return","src":"9343:62:26"}]},"documentation":{"id":47441,"nodeType":"StructuredDocumentation","src":"8980:294:26","text":"@notice Retrieves the next message nonce. Message version will be added to the upper two bytes of the message\n         nonce. Message version allows us to treat messages as having different structures.\n @return Nonce of the next message to be sent, with added message version."},"functionSelector":"ecc70428","implemented":true,"kind":"function","modifiers":[],"name":"messageNonce","nameLocation":"9288:12:26","parameters":{"id":47442,"nodeType":"ParameterList","parameters":[],"src":"9300:2:26"},"returnParameters":{"id":47445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47444,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":47453,"src":"9324:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47443,"name":"uint256","nodeType":"ElementaryTypeName","src":"9324:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9323:9:26"},"scope":47491,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":47468,"nodeType":"FunctionDefinition","src":"9564:176:26","nodes":[],"body":{"id":47467,"nodeType":"Block","src":"9613:127:26","nodes":[],"statements":[{"assignments":[47460],"declarations":[{"constant":false,"id":47460,"mutability":"mutable","name":"value","nameLocation":"9631:5:26","nodeType":"VariableDeclaration","scope":47467,"src":"9623:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47459,"name":"uint256","nodeType":"ElementaryTypeName","src":"9623:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":47461,"nodeType":"VariableDeclarationStatement","src":"9623:13:26"},{"AST":{"nativeSrc":"9655:52:26","nodeType":"YulBlock","src":"9655:52:26","statements":[{"nativeSrc":"9669:28:26","nodeType":"YulAssignment","src":"9669:28:26","value":{"arguments":[{"name":"ENTERED_SLOT","nativeSrc":"9684:12:26","nodeType":"YulIdentifier","src":"9684:12:26"}],"functionName":{"name":"tload","nativeSrc":"9678:5:26","nodeType":"YulIdentifier","src":"9678:5:26"},"nativeSrc":"9678:19:26","nodeType":"YulFunctionCall","src":"9678:19:26"},"variableNames":[{"name":"value","nativeSrc":"9669:5:26","nodeType":"YulIdentifier","src":"9669:5:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":47166,"isOffset":false,"isSlot":false,"src":"9684:12:26","valueSize":1},{"declaration":47460,"isOffset":false,"isSlot":false,"src":"9669:5:26","valueSize":1}],"id":47462,"nodeType":"InlineAssembly","src":"9646:61:26"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":47465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47463,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47460,"src":"9723:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":47464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9732:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9723:10:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":47458,"id":47466,"nodeType":"Return","src":"9716:17:26"}]},"documentation":{"id":47454,"nodeType":"StructuredDocumentation","src":"9418:141:26","text":"@notice Retrieves whether the contract is currently entered or not.\n @return True if the contract is entered, and false otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"_entered","nameLocation":"9573:8:26","parameters":{"id":47455,"nodeType":"ParameterList","parameters":[],"src":"9581:2:26"},"returnParameters":{"id":47458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":47468,"src":"9607:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":47456,"name":"bool","nodeType":"ElementaryTypeName","src":"9607:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9606:6:26"},"scope":47491,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":47478,"nodeType":"FunctionDefinition","src":"9944:234:26","nodes":[],"body":{"id":47477,"nodeType":"Block","src":"10018:160:26","nodes":[],"statements":[{"AST":{"nativeSrc":"10037:135:26","nodeType":"YulBlock","src":"10037:135:26","statements":[{"expression":{"arguments":[{"name":"CROSS_DOMAIN_MESSAGE_SENDER_SLOT","nativeSrc":"10058:32:26","nodeType":"YulIdentifier","src":"10058:32:26"},{"name":"_sender","nativeSrc":"10092:7:26","nodeType":"YulIdentifier","src":"10092:7:26"}],"functionName":{"name":"tstore","nativeSrc":"10051:6:26","nodeType":"YulIdentifier","src":"10051:6:26"},"nativeSrc":"10051:49:26","nodeType":"YulFunctionCall","src":"10051:49:26"},"nativeSrc":"10051:49:26","nodeType":"YulExpressionStatement","src":"10051:49:26"},{"expression":{"arguments":[{"name":"CROSS_DOMAIN_MESSAGE_SOURCE_SLOT","nativeSrc":"10120:32:26","nodeType":"YulIdentifier","src":"10120:32:26"},{"name":"_source","nativeSrc":"10154:7:26","nodeType":"YulIdentifier","src":"10154:7:26"}],"functionName":{"name":"tstore","nativeSrc":"10113:6:26","nodeType":"YulIdentifier","src":"10113:6:26"},"nativeSrc":"10113:49:26","nodeType":"YulFunctionCall","src":"10113:49:26"},"nativeSrc":"10113:49:26","nodeType":"YulExpressionStatement","src":"10113:49:26"}]},"evmVersion":"cancun","externalReferences":[{"declaration":47170,"isOffset":false,"isSlot":false,"src":"10058:32:26","valueSize":1},{"declaration":47174,"isOffset":false,"isSlot":false,"src":"10120:32:26","valueSize":1},{"declaration":47473,"isOffset":false,"isSlot":false,"src":"10092:7:26","valueSize":1},{"declaration":47471,"isOffset":false,"isSlot":false,"src":"10154:7:26","valueSize":1}],"id":47476,"nodeType":"InlineAssembly","src":"10028:144:26"}]},"documentation":{"id":47469,"nodeType":"StructuredDocumentation","src":"9746:193:26","text":"@notice Stores message data such as sender and source in transient storage.\n @param _source Chain ID of the source chain.\n @param _sender Address of the sender of the message."},"implemented":true,"kind":"function","modifiers":[],"name":"_storeMessageMetadata","nameLocation":"9953:21:26","parameters":{"id":47474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47471,"mutability":"mutable","name":"_source","nameLocation":"9983:7:26","nodeType":"VariableDeclaration","scope":47478,"src":"9975:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":47470,"name":"uint256","nodeType":"ElementaryTypeName","src":"9975:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":47473,"mutability":"mutable","name":"_sender","nameLocation":"10000:7:26","nodeType":"VariableDeclaration","scope":47478,"src":"9992:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47472,"name":"address","nodeType":"ElementaryTypeName","src":"9992:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9974:34:26"},"returnParameters":{"id":47475,"nodeType":"ParameterList","parameters":[],"src":"10018:0:26"},"scope":47491,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":47490,"nodeType":"FunctionDefinition","src":"10461:481:26","nodes":[],"body":{"id":47489,"nodeType":"Block","src":"10559:383:26","nodes":[],"statements":[{"AST":{"nativeSrc":"10578:358:26","nodeType":"YulBlock","src":"10578:358:26","statements":[{"nativeSrc":"10592:334:26","nodeType":"YulAssignment","src":"10592:334:26","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10646:3:26","nodeType":"YulIdentifier","src":"10646:3:26"},"nativeSrc":"10646:5:26","nodeType":"YulFunctionCall","src":"10646:5:26"},{"name":"_target","nativeSrc":"10680:7:26","nodeType":"YulIdentifier","src":"10680:7:26"},{"arguments":[],"functionName":{"name":"callvalue","nativeSrc":"10722:9:26","nodeType":"YulIdentifier","src":"10722:9:26"},"nativeSrc":"10722:11:26","nodeType":"YulFunctionCall","src":"10722:11:26"},{"arguments":[{"name":"_message","nativeSrc":"10774:8:26","nodeType":"YulIdentifier","src":"10774:8:26"},{"kind":"number","nativeSrc":"10784:2:26","nodeType":"YulLiteral","src":"10784:2:26","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10770:3:26","nodeType":"YulIdentifier","src":"10770:3:26"},"nativeSrc":"10770:17:26","nodeType":"YulFunctionCall","src":"10770:17:26"},{"arguments":[{"name":"_message","nativeSrc":"10824:8:26","nodeType":"YulIdentifier","src":"10824:8:26"}],"functionName":{"name":"mload","nativeSrc":"10818:5:26","nodeType":"YulIdentifier","src":"10818:5:26"},"nativeSrc":"10818:15:26","nodeType":"YulFunctionCall","src":"10818:15:26"},{"kind":"number","nativeSrc":"10864:1:26","nodeType":"YulLiteral","src":"10864:1:26","type":"","value":"0"},{"kind":"number","nativeSrc":"10897:1:26","nodeType":"YulLiteral","src":"10897:1:26","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"10620:4:26","nodeType":"YulIdentifier","src":"10620:4:26"},"nativeSrc":"10620:306:26","nodeType":"YulFunctionCall","src":"10620:306:26"},"variableNames":[{"name":"_success","nativeSrc":"10592:8:26","nodeType":"YulIdentifier","src":"10592:8:26"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":47483,"isOffset":false,"isSlot":false,"src":"10774:8:26","valueSize":1},{"declaration":47483,"isOffset":false,"isSlot":false,"src":"10824:8:26","valueSize":1},{"declaration":47486,"isOffset":false,"isSlot":false,"src":"10592:8:26","valueSize":1},{"declaration":47481,"isOffset":false,"isSlot":false,"src":"10680:7:26","valueSize":1}],"id":47488,"nodeType":"InlineAssembly","src":"10569:367:26"}]},"documentation":{"id":47479,"nodeType":"StructuredDocumentation","src":"10184:272:26","text":"@notice Calls the target address with the message payload and all available gas.\n @param _target  Target address to call.\n @param _message Message payload to call target with.\n @return _success True if the call was successful, and false otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"_callWithAllGas","nameLocation":"10470:15:26","parameters":{"id":47484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47481,"mutability":"mutable","name":"_target","nameLocation":"10494:7:26","nodeType":"VariableDeclaration","scope":47490,"src":"10486:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":47480,"name":"address","nodeType":"ElementaryTypeName","src":"10486:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":47483,"mutability":"mutable","name":"_message","nameLocation":"10516:8:26","nodeType":"VariableDeclaration","scope":47490,"src":"10503:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":47482,"name":"bytes","nodeType":"ElementaryTypeName","src":"10503:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10485:40:26"},"returnParameters":{"id":47487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47486,"mutability":"mutable","name":"_success","nameLocation":"10549:8:26","nodeType":"VariableDeclaration","scope":47490,"src":"10544:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":47485,"name":"bool","nodeType":"ElementaryTypeName","src":"10544:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10543:15:26"},"scope":47491,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":47159,"name":"IL2ToL2CrossDomainMessenger","nameLocations":["2070:27:26"],"nodeType":"IdentifierPath","referencedDeclaration":47118,"src":"2070:27:26"},"id":47160,"nodeType":"InheritanceSpecifier","src":"2070:27:26"},{"baseName":{"id":47161,"name":"ISemver","nameLocations":["2099:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":49266,"src":"2099:7:26"},"id":47162,"nodeType":"InheritanceSpecifier","src":"2099:7:26"}],"canonicalName":"L2ToL2CrossDomainMessenger","contractDependencies":[],"contractKind":"contract","documentation":{"id":47158,"nodeType":"StructuredDocumentation","src":"1567:464:26","text":"@custom:proxied\n @custom:predeploy 0x4200000000000000000000000000000000000023\n @title L2ToL2CrossDomainMessenger\n @notice The L2ToL2CrossDomainMessenger is a higher level abstraction on top of the CrossL2Inbox that provides\n         features necessary for secure transfers ERC20 tokens between L2 chains. Messages sent through the\n         L2ToL2CrossDomainMessenger on the source chain receive both replay protection as well as domain binding."},"fullyImplemented":true,"linearizedBaseContracts":[47491,49266,47118],"name":"L2ToL2CrossDomainMessenger","nameLocation":"2040:26:26","scope":47492,"usedErrors":[47133,47136,47139,47142,47145,47148,47151,47154,47157],"usedEvents":[47198,47203,47208]}],"license":"MIT"},"id":26}