{"abi":[{"type":"constructor","inputs":[{"name":"swapContract","type":"address","internalType":"address"},{"name":"erc20SwapContract","type":"address","internalType":"address"},{"name":"permit2Contract","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ERC20_SWAP_CONTRACT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20Swap"}],"stateMutability":"view"},{"type":"function","name":"PERMIT2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISignatureTransfer"}],"stateMutability":"view"},{"type":"function","name":"SWAP_CONTRACT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract EtherSwap"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_CCTP_DATA","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_CLAIM","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_CLAIM_CALL","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_CLAIM_CCTP","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_CLAIM_SEND","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_EXECUTE_LOCK_ERC20","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPEHASH_SEND_DATA","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TYPESTRING_EXECUTE_LOCK_ERC20","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"claimCall","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"callee","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimCall","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"callee","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimERC20Call","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Erc20Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"callee","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimERC20Call","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Erc20Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"callee","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimERC20Execute","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Erc20Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"destination","type":"address","internalType":"address"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimERC20Execute","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Erc20Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimERC20ExecuteCctp","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Erc20Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"tokenMessenger","type":"address","internalType":"address"},{"name":"cctpData","type":"tuple","internalType":"struct Router.CctpData","components":[{"name":"destinationDomain","type":"uint32","internalType":"uint32"},{"name":"mintRecipient","type":"bytes32","internalType":"bytes32"},{"name":"destinationCaller","type":"bytes32","internalType":"bytes32"},{"name":"maxFee","type":"uint256","internalType":"uint256"},{"name":"minFinalityThreshold","type":"uint32","internalType":"uint32"},{"name":"hookData","type":"bytes","internalType":"bytes"}]},{"name":"auth","type":"tuple","internalType":"struct Router.ClaimCctpAuthorization","components":[{"name":"minAmount","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"claimERC20ExecuteOft","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Erc20Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"oft","type":"address","internalType":"address"},{"name":"sendData","type":"tuple","internalType":"struct Router.SendData","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"extraOptions","type":"bytes","internalType":"bytes"},{"name":"composeMsg","type":"bytes","internalType":"bytes"},{"name":"oftCmd","type":"bytes","internalType":"bytes"}]},{"name":"auth","type":"tuple","internalType":"struct Router.ClaimSendAuthorization","components":[{"name":"minAmountLd","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"claimExecute","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimExecute","inputs":[{"name":"claim","type":"tuple","internalType":"struct Router.Claim","components":[{"name":"preimage","type":"bytes32","internalType":"bytes32"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"minAmountOut","type":"uint256","internalType":"uint256"},{"name":"destination","type":"address","internalType":"address"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeAndLock","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeAndLockERC20","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeAndLockERC20WithPermit2","inputs":[{"name":"preimageHash","type":"bytes32","internalType":"bytes32"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"claimAddress","type":"address","internalType":"address"},{"name":"refundAddress","type":"address","internalType":"address"},{"name":"timelock","type":"uint256","internalType":"uint256"},{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"permit","type":"tuple","internalType":"struct ISignatureTransfer.PermitTransferFrom","components":[{"name":"permitted","type":"tuple","internalType":"struct ISignatureTransfer.TokenPermissions","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"name":"owner","type":"address","internalType":"address"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeCctp","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"tokenMessenger","type":"address","internalType":"address"},{"name":"cctpData","type":"tuple","internalType":"struct Router.CctpData","components":[{"name":"destinationDomain","type":"uint32","internalType":"uint32"},{"name":"mintRecipient","type":"bytes32","internalType":"bytes32"},{"name":"destinationCaller","type":"bytes32","internalType":"bytes32"},{"name":"maxFee","type":"uint256","internalType":"uint256"},{"name":"minFinalityThreshold","type":"uint32","internalType":"uint32"},{"name":"hookData","type":"bytes","internalType":"bytes"}]},{"name":"minAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeOft","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct Router.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"token","type":"address","internalType":"address"},{"name":"oft","type":"address","internalType":"address"},{"name":"sendData","type":"tuple","internalType":"struct Router.SendData","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"extraOptions","type":"bytes","internalType":"bytes"},{"name":"composeMsg","type":"bytes","internalType":"bytes"},{"name":"oftCmd","type":"bytes","internalType":"bytes"}]},{"name":"minAmountLd","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"},{"name":"refundAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"error","name":"CallFailed","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ClaimInvalidAddress","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"SwapCallNotAllowed","inputs":[]}],"bytecode":{"object":"0x7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6101209081527f3f0593d90c203cedd52beaf1f2e33ef6958a48ee6bc9180eb653d00d34ee618d610140527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5610160524661018052306101a05260a06101008190526101c0604052902060e052348015610098575f5ffd5b50604051613a0b380380613a0b8339810160408190526100b791610113565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b0392831660805290821660a0521660c052610153565b80516001600160a01b038116811461010e575f5ffd5b919050565b5f5f5f60608486031215610125575f5ffd5b61012e846100f8565b925061013c602085016100f8565b915061014a604085016100f8565b90509250925092565b60805160a05160c05160e05161383f6101cc5f395f81816102e5015261146d01525f81816103d001528181611c000152611f7c01525f81816101f60152818161154601528181611baa01528181612110015261219f01525f81816104ed0152818161081c01528181611a800152611b55015261383f5ff3fe6080604052600436106101b2575f3560e01c8063870e70e4116100e7578063cf3afa5111610087578063ea8cd08811610062578063ea8cd08814610541578063ebb7af9214610574578063fe54c240146105a7578063ffa1ad74146105c6575f5ffd5b8063cf3afa51146104dc578063da2271c31461050f578063ea81272e1461052e575f5ffd5b8063a3f7ef98116100c2578063a3f7ef9814610476578063a66bd06e14610489578063a7b77acb1461049c578063b47ec1a0146104bb575f5ffd5b8063870e70e414610425578063891d6080146104385780639667434f14610457575f5ffd5b80633644e515116101525780636531efdf1161012d5780636531efdf14610359578063660a2dce1461038c5780636afdd850146103bf57806373e09a78146103f2575f5ffd5b80633644e515146102d45780634a0870ff146103075780635b2acb701461033a575f5ffd5b8063211f34401161018d578063211f344014610242578063215ea30a146102615780632c886673146102745780633503c73d146102b5575f5ffd5b806315ee82d3146101bd5780631bcd0c09146101d25780632067b7ca146101e5575f5ffd5b366101b957005b5f5ffd5b6101d06101cb366004612792565b6105ec565b005b6101d06101e0366004612848565b6107af565b3480156101f0575f5ffd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561024d575f5ffd5b506101d061025c3660046128cf565b6108a7565b6101d061026f366004612979565b6109e8565b34801561027f575f5ffd5b506102a77ff854d53d13bfc357f12f22b9d29b6f5c46693d79fb5dfd1153ba80151e59528c81565b604051908152602001610239565b3480156102c0575f5ffd5b506101d06102cf366004612a7b565b610a3b565b3480156102df575f5ffd5b506102a77f000000000000000000000000000000000000000000000000000000000000000081565b348015610312575f5ffd5b506102a77ff9191232ae0d81b1acc28544153c0b08c23469adb796613e7689fff1685328c081565b348015610345575f5ffd5b506101d0610354366004612add565b610b81565b348015610364575f5ffd5b506102a77fd574e98ae922e812083482a53f290e4a94af4ec6bc2d9490b0386edcf40dfecf81565b348015610397575f5ffd5b506102a77f9b5b1c929227bcc37f83e385e88fc739668266cfce6830b07fceef394627016f81565b3480156103ca575f5ffd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fd575f5ffd5b506102a77f19ac9140b08b00506c1962f90ff8781be79b2632dcbd9e86df54bcbd18cc62f981565b6101d0610433366004612b79565b610d4e565b348015610443575f5ffd5b506101d0610452366004612c21565b610e86565b348015610462575f5ffd5b506101d0610471366004612c8e565b610f2a565b6101d0610484366004612cfc565b610f3c565b6101d0610497366004612d94565b610f83565b3480156104a7575f5ffd5b506101d06104b6366004612e70565b61101b565b3480156104c6575f5ffd5b506104cf6110ac565b6040516102399190612f65565b3480156104e7575f5ffd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a575f5ffd5b506101d0610529366004612f7e565b6110c9565b6101d061053c36600461300b565b611216565b34801561054c575f5ffd5b506102a77f08487e29c43aa652b8d92ae7f71993123179f4cef490c858f3443d3c76fba69881565b34801561057f575f5ffd5b506102a77fa47e6983ae363f2a4c612ca9d2c8acd221ad9a6dd1ae17020ccfa05f14074fcf81565b3480156105b2575f5ffd5b506101d06105c1366004613094565b611235565b3480156105d1575f5ffd5b506105da600281565b60405160ff9091168152602001610239565b6105f4611317565b6106e57fd574e98ae922e812083482a53f290e4a94af4ec6bc2d9490b0386edcf40dfecf8835868661062587611345565b8635602088013561063c60608a0160408b016130df565b60408051602081019990995288019690965273ffffffffffffffffffffffffffffffffffffffff9485166060880152928416608087015260a086019190915260c085015260e08401521661010082015261012001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101206106d660808401606085016130fa565b83608001358460a00135611442565b73ffffffffffffffffffffffffffffffffffffffff166107048861152e565b73ffffffffffffffffffffffffffffffffffffffff1614610751576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075b8686611671565b61077d8484848435602086013561077860608801604089016130df565b611782565b6107a660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b6107b7611317565b6107c18282611671565b6040517f799f212b0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff86811660248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063799f212b9047906084015f604051808303818588803b15801561085f575f5ffd5b505af1158015610871573d5f5f3e3d5ffd5b505050505061089f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6108af611317565b604080517fa47e6983ae363f2a4c612ca9d2c8acd221ad9a6dd1ae17020ccfa05f14074fcf60208201528a359181019190915273ffffffffffffffffffffffffffffffffffffffff808816606083015260808201879052851660a08201526109339060c0015b60405160208183030381529060405280519060200120848484611442565b73ffffffffffffffffffffffffffffffffffffffff166109528a61152e565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a98888611671565b6109b4848787611958565b6109dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050505050565b6109f0611317565b6109fa8888611671565b610a08868686868686611782565b610a3160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050505050565b610a43611317565b33610a4d85611a68565b73ffffffffffffffffffffffffffffffffffffffff1614610a9a576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aa383611b53565b5f8373ffffffffffffffffffffffffffffffffffffffff1685602001358484604051610ad0929190613113565b5f6040518083038185875af1925050503d805f8114610b0a576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b606091505b5050905080610b51576040517f3f9a3b480000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b50610b7b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610b89611317565b610c067f19ac9140b08b00506c1962f90ff8781be79b2632dcbd9e86df54bcbd18cc62f9885f0135888888604051610bc2929190613113565b60405190819003812061091594939291602001938452602084019290925273ffffffffffffffffffffffffffffffffffffffff166040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff16610c2588611a68565b73ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c7b86611b53565b5f8673ffffffffffffffffffffffffffffffffffffffff1688602001358787604051610ca8929190613113565b5f6040518083038185875af1925050503d805f8114610ce2576040519150601f19603f3d011682016040523d82523d5f602084013e610ce7565b606091505b5050905080610d24576040517f3f9a3b480000000000000000000000000000000000000000000000000000000081525f6004820152602401610b48565b506107a660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610d56611317565b610e037ff854d53d13bfc357f12f22b9d29b6f5c46693d79fb5dfd1153ba80151e59528c88358686610d8787611c88565b60408051602081019690965285019390935273ffffffffffffffffffffffffffffffffffffffff918216606085015216608083015260a0820152823560c082015260e00160405160208183030381529060405280519060200120826020016020810190610df491906130fa565b83604001358460600135611442565b73ffffffffffffffffffffffffffffffffffffffff16610e228861152e565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e798686611671565b61077d8484848435611d40565b610e8e611317565b33610e9886611a68565b73ffffffffffffffffffffffffffffffffffffffff1614610ee5576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eef8484611671565b610efa338383611958565b610f2360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b610f32611317565b33610e988661152e565b610f44611317565b610f4e8686611671565b610f5a84848484611d40565b61089f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610f8b611317565b5f5f8787604051602001610fa0929190613169565b604051602081830303815290604052905080516020820120915050610fcd8c8c8c8c8c868b8b8b8b611f1c565b610fd78787611671565b610fe48c8c8c8c8c612062565b5061100e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050505050505050565b611023611317565b604080517fa47e6983ae363f2a4c612ca9d2c8acd221ad9a6dd1ae17020ccfa05f14074fcf60208201528a359181019190915273ffffffffffffffffffffffffffffffffffffffff808816606083015260808201879052851660a082015261108d9060c001610915565b73ffffffffffffffffffffffffffffffffffffffff166109528a611a68565b60405180610100016040528060cf815260200161373b60cf913981565b6110d1611317565b61110a7f19ac9140b08b00506c1962f90ff8781be79b2632dcbd9e86df54bcbd18cc62f9885f0135888888604051610bc2929190613113565b73ffffffffffffffffffffffffffffffffffffffff166111298861152e565b73ffffffffffffffffffffffffffffffffffffffff1614611176576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117f86611b53565b6111b586602089013561119860608b0160408c016130df565b73ffffffffffffffffffffffffffffffffffffffff1691906121f2565b5f8673ffffffffffffffffffffffffffffffffffffffff1686866040516111dd929190613113565b5f604051808303815f865af19150503d805f8114610ce2576040519150601f19603f3d011682016040523d82523d5f602084013e610ce7565b61121e611317565b6112288282611671565b61077d8787878787612062565b61123d611317565b336112478561152e565b73ffffffffffffffffffffffffffffffffffffffff1614611294576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129d83611b53565b6112b683602086013561119860608801604089016130df565b5f8373ffffffffffffffffffffffffffffffffffffffff1683836040516112de929190613113565b5f604051808303815f865af19150503d805f8114610b0a576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b61131f6122bd565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f61143c7ff9191232ae0d81b1acc28544153c0b08c23469adb796613e7689fff1685328c061137760208501856132b1565b602085013561138960408701876132d4565b604051611397929190613113565b6040519081900390206113ad60608801886132d4565b6040516113bb929190613113565b6040519081900390206113d160808901896132d4565b6040516113df929190613113565b60405190819003812061142296959493929160200195865263ffffffff94909416602086015260408501929092526060840152608083015260a082015260c00190565b604051602081830303815290604052805160209091012090565b92915050565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000006022820152604281018590525f90600190606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611519573d5f5f3e3d5ffd5b5050506020604051035190505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663b2b78df88335602085013561158260608701604088016130df565b61159260808801606089016130df565b60808801356115a760c08a0160a08b016130fa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089811b9190911682526004820197909752602481019590955273ffffffffffffffffffffffffffffffffffffffff9384166044860152929091166064840152608483015260ff1660a482015260c086013560c48201529085013560e4820152610104015b6020604051808303815f875af115801561164d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143c9190613335565b80365f5b82811015610f235784848281811061168f5761168f613350565b90506020028101906116a1919061337d565b91506116b86116b360208401846130df565b611b53565b5f6116c660208401846130df565b73ffffffffffffffffffffffffffffffffffffffff1660208401356116ee60408601866132d4565b6040516116fc929190613113565b5f6040518083038185875af1925050503d805f8114611736576040519150601f19603f3d011682016040523d82523d5f602084013e61173b565b606091505b5050905080611779576040517f3f9a3b4800000000000000000000000000000000000000000000000000000000815260048101839052602401610b48565b50600101611675565b5f61178d878561231a565b6040805160e08101909152909150479073ffffffffffffffffffffffffffffffffffffffff88169063c7c7f5b3908390806117cb60208c018c6132b1565b63ffffffff1681526020018a6020013581526020018681526020018981526020018a80604001906117fc91906132d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161184260608c018c6132d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161188860808c018c6132d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250604080518082018252868152602081018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261190b92919089906004016133b9565b60c06040518083038185885af1158015611927573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061194c919061352b565b50505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff831615801561197f57479150611a0e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa1580156119e7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0b91906135e3565b91505b82821015611a48576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611a5d57611a5885836123e4565b610f23565b610f238486846124d0565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016633648a80783356020850135611abc60608701604088016130df565b6060870135611ad160a0890160808a016130fa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526004810195909552602485019390935273ffffffffffffffffffffffffffffffffffffffff9091166044840152606483015260ff16608482015260a085013560a482015260c085013560c482015260e401611631565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611bf857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611c4e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15611c85576040517f513d660100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f61143c7f9b5b1c929227bcc37f83e385e88fc739668266cfce6830b07fceef394627016f611cba60208501856132b1565b602085013560408601356060870135611cd960a0890160808a016132b1565b611ce660a08a018a6132d4565b604051611cf4929190613113565b60408051918290038220602083019890985263ffffffff968716908201526060810194909452608084019290925260a083015290911660c082015260e081019190915261010001611422565b5f611d4b858361231a565b9050611d6e73ffffffffffffffffffffffffffffffffffffffff861685836121f2565b611d7b60a08401846132d4565b90505f03611e785773ffffffffffffffffffffffffffffffffffffffff8416638e0250ee82611dad60208701876132b1565b602087013589604089013560608a0135611dcd60a08c0160808d016132b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b168152600481019790975263ffffffff9586166024880152604487019490945273ffffffffffffffffffffffffffffffffffffffff9092166064860152608485015260a48401521660c482015260e4015f604051808303815f87803b158015611e5d575f5ffd5b505af1158015611e6f573d5f5f3e3d5ffd5b50505050610f23565b73ffffffffffffffffffffffffffffffffffffffff841663779b432d82611ea260208701876132b1565b602087013589604089013560608a0135611ec260a08c0160808d016132b1565b611ecf60a08d018d6132d4565b6040518a63ffffffff1660e01b8152600401611ef3999897969594939291906135fa565b5f604051808303815f87803b158015611f0a575f5ffd5b505af11580156109dd573d5f5f3e3d5ffd5b5f5f7f08487e29c43aa652b8d92ae7f71993123179f4cef490c858f3443d3c76fba69890506040518181528c60208201528b60408201528a60608201528960808201528860a08201528760c082015260e08120925060e0810160405250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe8660405180604001604052803073ffffffffffffffffffffffffffffffffffffffff168152602001895f0160200135815250878560405180610100016040528060cf815260200161373b60cf913989896040518863ffffffff1660e01b8152600401612028979695949392919061366a565b5f604051808303815f87803b15801561203f575f5ffd5b505af1158015612051573d5f5f3e3d5ffd5b505050505050505050505050505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015284905f9073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156120ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f291906135e3565b905061213573ffffffffffffffffffffffffffffffffffffffff83167f0000000000000000000000000000000000000000000000000000000000000000836121f2565b6040517fe64fafcc000000000000000000000000000000000000000000000000000000008152600481018890526024810182905273ffffffffffffffffffffffffffffffffffffffff87811660448301528681166064830152858116608483015260a482018590527f0000000000000000000000000000000000000000000000000000000000000000169063e64fafcc9060c4015f604051808303815f87803b1580156121e0575f5ffd5b505af115801561100e573d5f5f3e3d5ffd5b6121fe8383835f61265a565b6122b85761220f83835f600161265a565b61225d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610b48565b61226a838383600161265a565b6122b8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610b48565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203612318576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015612384573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a891906135e3565b90508181101561143c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461243a576040519150601f19603f3d011682016040523d82523d5f602084013e61243f565b606091505b50509050806122b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e736660448201527f65722045746865720000000000000000000000000000000000000000000000006064820152608401610b48565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f928392908716916125669190613705565b5f604051808303815f865af19150503d805f811461259f576040519150601f19603f3d011682016040523d82523d5f602084013e6125a4565b606091505b50915091508180156125ce5750805115806125ce5750808060200190518101906125ce919061371b565b610f23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e736660448201527f657220455243323020746f6b656e7300000000000000000000000000000000006064820152608401610b48565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000005f81815273ffffffffffffffffffffffffffffffffffffffff8616600452602485905291602083604481808b5af1925060015f511483166126d65783831516156126ca573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f61010082840312156126f3575f5ffd5b50919050565b5f5f83601f840112612709575f5ffd5b50813567ffffffffffffffff811115612720575f5ffd5b6020830191508360208260051b850101111561273a575f5ffd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114611c85575f5ffd5b803561276d81612741565b919050565b5f60a082840312156126f3575f5ffd5b5f60c082840312156126f3575f5ffd5b5f5f5f5f5f5f5f610240888a0312156127a9575f5ffd5b6127b389896126e2565b965061010088013567ffffffffffffffff8111156127cf575f5ffd5b6127db8a828b016126f9565b9097509550506101208801356127f081612741565b935061014088013561280181612741565b925061016088013567ffffffffffffffff81111561281d575f5ffd5b6128298a828b01612772565b92505061283a896101808a01612782565b905092959891949750929550565b5f5f5f5f5f5f60a0878903121561285d575f5ffd5b86359550602087013561286f81612741565b9450604087013561287f81612741565b935060608701359250608087013567ffffffffffffffff8111156128a1575f5ffd5b6128ad89828a016126f9565b979a9699509497509295939492505050565b803560ff8116811461276d575f5ffd5b5f5f5f5f5f5f5f5f5f6101e08a8c0312156128e8575f5ffd5b6128f28b8b6126e2565b98506101008a013567ffffffffffffffff81111561290e575f5ffd5b61291a8c828d016126f9565b9099509750506101208a013561292f81612741565b95506101408a013594506101608a013561294881612741565b93506129576101808b016128bf565b989b979a5095989497939692955092936101a081013593506101c00135919050565b5f5f5f5f5f5f5f5f60e0898b031215612990575f5ffd5b883567ffffffffffffffff8111156129a6575f5ffd5b6129b28b828c016126f9565b90995097505060208901356129c681612741565b955060408901356129d681612741565b9450606089013567ffffffffffffffff8111156129f1575f5ffd5b6129fd8b828c01612772565b9450506080890135925060a0890135915060c0890135612a1c81612741565b809150509295985092959890939650565b5f60e082840312156126f3575f5ffd5b5f5f83601f840112612a4d575f5ffd5b50813567ffffffffffffffff811115612a64575f5ffd5b60208301915083602082850101111561273a575f5ffd5b5f5f5f5f6101208587031215612a8f575f5ffd5b612a998686612a2d565b935060e0850135612aa981612741565b925061010085013567ffffffffffffffff811115612ac5575f5ffd5b612ad187828801612a3d565b95989497509550505050565b5f5f5f5f5f5f5f610180888a031215612af4575f5ffd5b612afe8989612a2d565b965060e0880135612b0e81612741565b955061010088013567ffffffffffffffff811115612b2a575f5ffd5b612b368a828b01612a3d565b9096509450612b4a905061012089016128bf565b9699959850939692959461014084013594506101609093013592915050565b5f608082840312156126f3575f5ffd5b5f5f5f5f5f5f5f610200888a031215612b90575f5ffd5b612b9a89896126e2565b965061010088013567ffffffffffffffff811115612bb6575f5ffd5b612bc28a828b016126f9565b909750955050610120880135612bd781612741565b9350610140880135612be881612741565b925061016088013567ffffffffffffffff811115612c04575f5ffd5b612c108a828b01612782565b92505061283a896101808a01612b69565b5f5f5f5f5f6101408688031215612c36575f5ffd5b612c408787612a2d565b945060e086013567ffffffffffffffff811115612c5b575f5ffd5b612c67888289016126f9565b909550935050610100860135612c7c81612741565b94979396509194610120013592915050565b5f5f5f5f5f6101608688031215612ca3575f5ffd5b612cad87876126e2565b945061010086013567ffffffffffffffff811115612cc9575f5ffd5b612cd5888289016126f9565b909550935050610120860135612cea81612741565b94979396509194610140013592915050565b5f5f5f5f5f5f60a08789031215612d11575f5ffd5b863567ffffffffffffffff811115612d27575f5ffd5b612d3389828a016126f9565b9097509550506020870135612d4781612741565b93506040870135612d5781612741565b9250606087013567ffffffffffffffff811115612d72575f5ffd5b612d7e89828a01612782565b9699959850939692959460809093013593505050565b5f5f5f5f5f5f5f5f5f5f5f6101808c8e031215612daf575f5ffd5b8b359a5060208c0135612dc181612741565b9950612dcf60408d01612762565b9850612ddd60608d01612762565b975060808c0135965060a08c013567ffffffffffffffff811115612dff575f5ffd5b612e0b8e828f016126f9565b9097509550612e1f90508d60c08e01612b69565b9350612e2e6101408d01612762565b92506101608c013567ffffffffffffffff811115612e4a575f5ffd5b612e568e828f01612a3d565b915080935050809150509295989b509295989b9093969950565b5f5f5f5f5f5f5f5f5f6101c08a8c031215612e89575f5ffd5b612e938b8b612a2d565b985060e08a013567ffffffffffffffff811115612eae575f5ffd5b612eba8c828d016126f9565b9099509750506101008a0135612ecf81612741565b95506101208a013594506101408a0135612ee881612741565b9350612ef76101608b016128bf565b989b979a50959894979396929550929361018081013593506101a00135919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f612f776020830184612f19565b9392505050565b5f5f5f5f5f5f5f6101a0888a031215612f95575f5ffd5b612f9f89896126e2565b9650610100880135612fb081612741565b955061012088013567ffffffffffffffff811115612fcc575f5ffd5b612fd88a828b01612a3d565b9096509450612fec905061014089016128bf565b9699959850939692959461016084013594506101809093013592915050565b5f5f5f5f5f5f5f60c0888a031215613021575f5ffd5b87359650602088013561303381612741565b9550604088013561304381612741565b9450606088013561305381612741565b93506080880135925060a088013567ffffffffffffffff811115613075575f5ffd5b6130818a828b016126f9565b989b979a50959850939692959293505050565b5f5f5f5f61014085870312156130a8575f5ffd5b6130b286866126e2565b93506101008501356130c381612741565b925061012085013567ffffffffffffffff811115612ac5575f5ffd5b5f602082840312156130ef575f5ffd5b8135612f7781612741565b5f6020828403121561310a575f5ffd5b612f77826128bf565b818382375f9101908152919050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602080825281018290525f6040600584901b8301810190830185837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa136839003015b878210156132a4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845282358181126131e7575f5ffd5b890180356131f481612741565b73ffffffffffffffffffffffffffffffffffffffff168652602081810135908701526040810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261324b575f5ffd5b0160208101903567ffffffffffffffff811115613266575f5ffd5b803603821315613274575f5ffd5b60606040880152613289606088018284613122565b965050506020830192506020840193506001820191506131ab565b5092979650505050505050565b5f602082840312156132c1575f5ffd5b813563ffffffff81168114612f77575f5ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613307575f5ffd5b83018035915067ffffffffffffffff821115613321575f5ffd5b60200191503681900382131561273a575f5ffd5b5f60208284031215613345575f5ffd5b8151612f7781612741565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126133af575f5ffd5b9190910192915050565b6080815263ffffffff8451166080820152602084015160a0820152604084015160c0820152606084015160e08201525f608085015160e0610100840152613404610160840182612f19565b905060a08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80848303016101208501526134408282612f19565b91505060c08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808483030161014085015261347d8282612f19565b92505050613498602083018580518252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff83166060830152611526565b5f604082840312156134c9575f5ffd5b6040805190810167ffffffffffffffff81118282101715613511577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b5f5f82840360c081121561353d575f5ffd5b608081121561354a575f5ffd5b506040516060810167ffffffffffffffff81118282101715613593577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405283518152602084015167ffffffffffffffff811681146135b4575f5ffd5b60208201526135c685604086016134b9565b604082015291506135da84608085016134b9565b90509250929050565b5f602082840312156135f3575f5ffd5b5051919050565b89815263ffffffff8916602082015287604082015273ffffffffffffffffffffffffffffffffffffffff871660608201528560808201528460a082015263ffffffff841660c082015261010060e08201525f61365b61010083018486613122565b9b9a5050505050505050505050565b5f883561367681612741565b73ffffffffffffffffffffffffffffffffffffffff908116835260208a810135818501526040808c0135908501526060808c01359085015289518216608085015289015160a0840152871660c08301528560e08301526101406101008301526136e3610140830186612f19565b8281036101208401526136f7818587613122565b9a9950505050505050505050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561372b575f5ffd5b81518015158114612f77575f5ffdfe45786563757465416e644c6f636b4552433230207769746e6573732945786563757465416e644c6f636b4552433230286279746573333220707265696d616765486173682c6164647265737320746f6b656e2c6164647265737320636c61696d416464726573732c6164647265737320726566756e64416464726573732c75696e743235362074696d656c6f636b2c627974657333322063616c6c734861736829546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a264697066735822122059bde45892e47342d3e7918d2565498f15e0689039b2c6be73fc5554534660d564736f6c63430008210033","sourceMap":"8179:95:5:-:0;8155:244;273:25:57;;;8288:19:5;314:18:57;307:34;8321:14:5;357:18:57;350:34;8349:13:5;400:18:57;393:34;8384:4:5;443:19:57;436:61;8155:244:5;922:35749;8155:244;;;245:19:57;922:35749:5;8155:244;8136:269;;-1:-1:-1;8092:313:5;8744:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2365:1:51;1505:66;2539;-1:-1:-1;;;;;8840:48:5;;;;;8898:50;;;;;8958:45;;;922:35749;;508:177:57;587:13;;-1:-1:-1;;;;;629:31:57;;619:42;;609:70;;675:1;672;665:12;609:70;508:177;;;:::o;690:378::-;778:6;786;794;847:2;835:9;826:7;822:23;818:32;815:52;;;863:1;860;853:12;815:52;886:40;916:9;886:40;:::i;:::-;876:50;;945:49;990:2;979:9;975:18;945:49;:::i;:::-;935:59;;1013:49;1058:2;1047:9;1043:18;1013:49;:::i;:::-;1003:59;;690:378;;;;;:::o;:::-;922:35749:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101b2575f3560e01c8063870e70e4116100e7578063cf3afa5111610087578063ea8cd08811610062578063ea8cd08814610541578063ebb7af9214610574578063fe54c240146105a7578063ffa1ad74146105c6575f5ffd5b8063cf3afa51146104dc578063da2271c31461050f578063ea81272e1461052e575f5ffd5b8063a3f7ef98116100c2578063a3f7ef9814610476578063a66bd06e14610489578063a7b77acb1461049c578063b47ec1a0146104bb575f5ffd5b8063870e70e414610425578063891d6080146104385780639667434f14610457575f5ffd5b80633644e515116101525780636531efdf1161012d5780636531efdf14610359578063660a2dce1461038c5780636afdd850146103bf57806373e09a78146103f2575f5ffd5b80633644e515146102d45780634a0870ff146103075780635b2acb701461033a575f5ffd5b8063211f34401161018d578063211f344014610242578063215ea30a146102615780632c886673146102745780633503c73d146102b5575f5ffd5b806315ee82d3146101bd5780631bcd0c09146101d25780632067b7ca146101e5575f5ffd5b366101b957005b5f5ffd5b6101d06101cb366004612792565b6105ec565b005b6101d06101e0366004612848565b6107af565b3480156101f0575f5ffd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561024d575f5ffd5b506101d061025c3660046128cf565b6108a7565b6101d061026f366004612979565b6109e8565b34801561027f575f5ffd5b506102a77ff854d53d13bfc357f12f22b9d29b6f5c46693d79fb5dfd1153ba80151e59528c81565b604051908152602001610239565b3480156102c0575f5ffd5b506101d06102cf366004612a7b565b610a3b565b3480156102df575f5ffd5b506102a77f000000000000000000000000000000000000000000000000000000000000000081565b348015610312575f5ffd5b506102a77ff9191232ae0d81b1acc28544153c0b08c23469adb796613e7689fff1685328c081565b348015610345575f5ffd5b506101d0610354366004612add565b610b81565b348015610364575f5ffd5b506102a77fd574e98ae922e812083482a53f290e4a94af4ec6bc2d9490b0386edcf40dfecf81565b348015610397575f5ffd5b506102a77f9b5b1c929227bcc37f83e385e88fc739668266cfce6830b07fceef394627016f81565b3480156103ca575f5ffd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b3480156103fd575f5ffd5b506102a77f19ac9140b08b00506c1962f90ff8781be79b2632dcbd9e86df54bcbd18cc62f981565b6101d0610433366004612b79565b610d4e565b348015610443575f5ffd5b506101d0610452366004612c21565b610e86565b348015610462575f5ffd5b506101d0610471366004612c8e565b610f2a565b6101d0610484366004612cfc565b610f3c565b6101d0610497366004612d94565b610f83565b3480156104a7575f5ffd5b506101d06104b6366004612e70565b61101b565b3480156104c6575f5ffd5b506104cf6110ac565b6040516102399190612f65565b3480156104e7575f5ffd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a575f5ffd5b506101d0610529366004612f7e565b6110c9565b6101d061053c36600461300b565b611216565b34801561054c575f5ffd5b506102a77f08487e29c43aa652b8d92ae7f71993123179f4cef490c858f3443d3c76fba69881565b34801561057f575f5ffd5b506102a77fa47e6983ae363f2a4c612ca9d2c8acd221ad9a6dd1ae17020ccfa05f14074fcf81565b3480156105b2575f5ffd5b506101d06105c1366004613094565b611235565b3480156105d1575f5ffd5b506105da600281565b60405160ff9091168152602001610239565b6105f4611317565b6106e57fd574e98ae922e812083482a53f290e4a94af4ec6bc2d9490b0386edcf40dfecf8835868661062587611345565b8635602088013561063c60608a0160408b016130df565b60408051602081019990995288019690965273ffffffffffffffffffffffffffffffffffffffff9485166060880152928416608087015260a086019190915260c085015260e08401521661010082015261012001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101206106d660808401606085016130fa565b83608001358460a00135611442565b73ffffffffffffffffffffffffffffffffffffffff166107048861152e565b73ffffffffffffffffffffffffffffffffffffffff1614610751576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075b8686611671565b61077d8484848435602086013561077860608801604089016130df565b611782565b6107a660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b6107b7611317565b6107c18282611671565b6040517f799f212b0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff86811660248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063799f212b9047906084015f604051808303818588803b15801561085f575f5ffd5b505af1158015610871573d5f5f3e3d5ffd5b505050505061089f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6108af611317565b604080517fa47e6983ae363f2a4c612ca9d2c8acd221ad9a6dd1ae17020ccfa05f14074fcf60208201528a359181019190915273ffffffffffffffffffffffffffffffffffffffff808816606083015260808201879052851660a08201526109339060c0015b60405160208183030381529060405280519060200120848484611442565b73ffffffffffffffffffffffffffffffffffffffff166109528a61152e565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a98888611671565b6109b4848787611958565b6109dd60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050505050565b6109f0611317565b6109fa8888611671565b610a08868686868686611782565b610a3160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050505050565b610a43611317565b33610a4d85611a68565b73ffffffffffffffffffffffffffffffffffffffff1614610a9a576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aa383611b53565b5f8373ffffffffffffffffffffffffffffffffffffffff1685602001358484604051610ad0929190613113565b5f6040518083038185875af1925050503d805f8114610b0a576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b606091505b5050905080610b51576040517f3f9a3b480000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b50610b7b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b610b89611317565b610c067f19ac9140b08b00506c1962f90ff8781be79b2632dcbd9e86df54bcbd18cc62f9885f0135888888604051610bc2929190613113565b60405190819003812061091594939291602001938452602084019290925273ffffffffffffffffffffffffffffffffffffffff166040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff16610c2588611a68565b73ffffffffffffffffffffffffffffffffffffffff1614610c72576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c7b86611b53565b5f8673ffffffffffffffffffffffffffffffffffffffff1688602001358787604051610ca8929190613113565b5f6040518083038185875af1925050503d805f8114610ce2576040519150601f19603f3d011682016040523d82523d5f602084013e610ce7565b606091505b5050905080610d24576040517f3f9a3b480000000000000000000000000000000000000000000000000000000081525f6004820152602401610b48565b506107a660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610d56611317565b610e037ff854d53d13bfc357f12f22b9d29b6f5c46693d79fb5dfd1153ba80151e59528c88358686610d8787611c88565b60408051602081019690965285019390935273ffffffffffffffffffffffffffffffffffffffff918216606085015216608083015260a0820152823560c082015260e00160405160208183030381529060405280519060200120826020016020810190610df491906130fa565b83604001358460600135611442565b73ffffffffffffffffffffffffffffffffffffffff16610e228861152e565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e798686611671565b61077d8484848435611d40565b610e8e611317565b33610e9886611a68565b73ffffffffffffffffffffffffffffffffffffffff1614610ee5576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eef8484611671565b610efa338383611958565b610f2360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b610f32611317565b33610e988661152e565b610f44611317565b610f4e8686611671565b610f5a84848484611d40565b61089f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610f8b611317565b5f5f8787604051602001610fa0929190613169565b604051602081830303815290604052905080516020820120915050610fcd8c8c8c8c8c868b8b8b8b611f1c565b610fd78787611671565b610fe48c8c8c8c8c612062565b5061100e60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050505050505050565b611023611317565b604080517fa47e6983ae363f2a4c612ca9d2c8acd221ad9a6dd1ae17020ccfa05f14074fcf60208201528a359181019190915273ffffffffffffffffffffffffffffffffffffffff808816606083015260808201879052851660a082015261108d9060c001610915565b73ffffffffffffffffffffffffffffffffffffffff166109528a611a68565b60405180610100016040528060cf815260200161373b60cf913981565b6110d1611317565b61110a7f19ac9140b08b00506c1962f90ff8781be79b2632dcbd9e86df54bcbd18cc62f9885f0135888888604051610bc2929190613113565b73ffffffffffffffffffffffffffffffffffffffff166111298861152e565b73ffffffffffffffffffffffffffffffffffffffff1614611176576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61117f86611b53565b6111b586602089013561119860608b0160408c016130df565b73ffffffffffffffffffffffffffffffffffffffff1691906121f2565b5f8673ffffffffffffffffffffffffffffffffffffffff1686866040516111dd929190613113565b5f604051808303815f865af19150503d805f8114610ce2576040519150601f19603f3d011682016040523d82523d5f602084013e610ce7565b61121e611317565b6112288282611671565b61077d8787878787612062565b61123d611317565b336112478561152e565b73ffffffffffffffffffffffffffffffffffffffff1614611294576040517f8fdad36100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61129d83611b53565b6112b683602086013561119860608801604089016130df565b5f8373ffffffffffffffffffffffffffffffffffffffff1683836040516112de929190613113565b5f604051808303815f865af19150503d805f8114610b0a576040519150601f19603f3d011682016040523d82523d5f602084013e610b0f565b61131f6122bd565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5f61143c7ff9191232ae0d81b1acc28544153c0b08c23469adb796613e7689fff1685328c061137760208501856132b1565b602085013561138960408701876132d4565b604051611397929190613113565b6040519081900390206113ad60608801886132d4565b6040516113bb929190613113565b6040519081900390206113d160808901896132d4565b6040516113df929190613113565b60405190819003812061142296959493929160200195865263ffffffff94909416602086015260408501929092526060840152608083015260a082015260c00190565b604051602081830303815290604052805160209091012090565b92915050565b6040517f190100000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000006022820152604281018590525f90600190606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611519573d5f5f3e3d5ffd5b5050506020604051035190505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663b2b78df88335602085013561158260608701604088016130df565b61159260808801606089016130df565b60808801356115a760c08a0160a08b016130fa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089811b9190911682526004820197909752602481019590955273ffffffffffffffffffffffffffffffffffffffff9384166044860152929091166064840152608483015260ff1660a482015260c086013560c48201529085013560e4820152610104015b6020604051808303815f875af115801561164d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143c9190613335565b80365f5b82811015610f235784848281811061168f5761168f613350565b90506020028101906116a1919061337d565b91506116b86116b360208401846130df565b611b53565b5f6116c660208401846130df565b73ffffffffffffffffffffffffffffffffffffffff1660208401356116ee60408601866132d4565b6040516116fc929190613113565b5f6040518083038185875af1925050503d805f8114611736576040519150601f19603f3d011682016040523d82523d5f602084013e61173b565b606091505b5050905080611779576040517f3f9a3b4800000000000000000000000000000000000000000000000000000000815260048101839052602401610b48565b50600101611675565b5f61178d878561231a565b6040805160e08101909152909150479073ffffffffffffffffffffffffffffffffffffffff88169063c7c7f5b3908390806117cb60208c018c6132b1565b63ffffffff1681526020018a6020013581526020018681526020018981526020018a80604001906117fc91906132d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161184260608c018c6132d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161188860808c018c6132d4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250604080518082018252868152602081018a905290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815261190b92919089906004016133b9565b60c06040518083038185885af1158015611927573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061194c919061352b565b50505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff831615801561197f57479150611a0e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa1580156119e7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0b91906135e3565b91505b82821015611a48576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611a5d57611a5885836123e4565b610f23565b610f238486846124d0565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016633648a80783356020850135611abc60608701604088016130df565b6060870135611ad160a0890160808a016130fa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526004810195909552602485019390935273ffffffffffffffffffffffffffffffffffffffff9091166044840152606483015260ff16608482015260a085013560a482015260c085013560c482015260e401611631565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611bf857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611c4e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15611c85576040517f513d660100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f61143c7f9b5b1c929227bcc37f83e385e88fc739668266cfce6830b07fceef394627016f611cba60208501856132b1565b602085013560408601356060870135611cd960a0890160808a016132b1565b611ce660a08a018a6132d4565b604051611cf4929190613113565b60408051918290038220602083019890985263ffffffff968716908201526060810194909452608084019290925260a083015290911660c082015260e081019190915261010001611422565b5f611d4b858361231a565b9050611d6e73ffffffffffffffffffffffffffffffffffffffff861685836121f2565b611d7b60a08401846132d4565b90505f03611e785773ffffffffffffffffffffffffffffffffffffffff8416638e0250ee82611dad60208701876132b1565b602087013589604089013560608a0135611dcd60a08c0160808d016132b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e08a901b168152600481019790975263ffffffff9586166024880152604487019490945273ffffffffffffffffffffffffffffffffffffffff9092166064860152608485015260a48401521660c482015260e4015f604051808303815f87803b158015611e5d575f5ffd5b505af1158015611e6f573d5f5f3e3d5ffd5b50505050610f23565b73ffffffffffffffffffffffffffffffffffffffff841663779b432d82611ea260208701876132b1565b602087013589604089013560608a0135611ec260a08c0160808d016132b1565b611ecf60a08d018d6132d4565b6040518a63ffffffff1660e01b8152600401611ef3999897969594939291906135fa565b5f604051808303815f87803b158015611f0a575f5ffd5b505af11580156109dd573d5f5f3e3d5ffd5b5f5f7f08487e29c43aa652b8d92ae7f71993123179f4cef490c858f3443d3c76fba69890506040518181528c60208201528b60408201528a60608201528960808201528860a08201528760c082015260e08120925060e0810160405250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe8660405180604001604052803073ffffffffffffffffffffffffffffffffffffffff168152602001895f0160200135815250878560405180610100016040528060cf815260200161373b60cf913989896040518863ffffffff1660e01b8152600401612028979695949392919061366a565b5f604051808303815f87803b15801561203f575f5ffd5b505af1158015612051573d5f5f3e3d5ffd5b505050505050505050505050505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015284905f9073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156120ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f291906135e3565b905061213573ffffffffffffffffffffffffffffffffffffffff83167f0000000000000000000000000000000000000000000000000000000000000000836121f2565b6040517fe64fafcc000000000000000000000000000000000000000000000000000000008152600481018890526024810182905273ffffffffffffffffffffffffffffffffffffffff87811660448301528681166064830152858116608483015260a482018590527f0000000000000000000000000000000000000000000000000000000000000000169063e64fafcc9060c4015f604051808303815f87803b1580156121e0575f5ffd5b505af115801561100e573d5f5f3e3d5ffd5b6121fe8383835f61265a565b6122b85761220f83835f600161265a565b61225d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610b48565b61226a838383600161265a565b6122b8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610b48565b505050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054600203612318576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015612384573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a891906135e3565b90508181101561143c576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461243a576040519150601f19603f3d011682016040523d82523d5f602084013e61243f565b606091505b50509050806122b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e736660448201527f65722045746865720000000000000000000000000000000000000000000000006064820152608401610b48565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f928392908716916125669190613705565b5f604051808303815f865af19150503d805f811461259f576040519150601f19603f3d011682016040523d82523d5f602084013e6125a4565b606091505b50915091508180156125ce5750805115806125ce5750808060200190518101906125ce919061371b565b610f23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f5472616e7366657248656c7065723a20636f756c64206e6f74207472616e736660448201527f657220455243323020746f6b656e7300000000000000000000000000000000006064820152608401610b48565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000005f81815273ffffffffffffffffffffffffffffffffffffffff8616600452602485905291602083604481808b5af1925060015f511483166126d65783831516156126ca573d5f823e3d81fd5b5f873b113d1516831692505b60405250949350505050565b5f61010082840312156126f3575f5ffd5b50919050565b5f5f83601f840112612709575f5ffd5b50813567ffffffffffffffff811115612720575f5ffd5b6020830191508360208260051b850101111561273a575f5ffd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114611c85575f5ffd5b803561276d81612741565b919050565b5f60a082840312156126f3575f5ffd5b5f60c082840312156126f3575f5ffd5b5f5f5f5f5f5f5f610240888a0312156127a9575f5ffd5b6127b389896126e2565b965061010088013567ffffffffffffffff8111156127cf575f5ffd5b6127db8a828b016126f9565b9097509550506101208801356127f081612741565b935061014088013561280181612741565b925061016088013567ffffffffffffffff81111561281d575f5ffd5b6128298a828b01612772565b92505061283a896101808a01612782565b905092959891949750929550565b5f5f5f5f5f5f60a0878903121561285d575f5ffd5b86359550602087013561286f81612741565b9450604087013561287f81612741565b935060608701359250608087013567ffffffffffffffff8111156128a1575f5ffd5b6128ad89828a016126f9565b979a9699509497509295939492505050565b803560ff8116811461276d575f5ffd5b5f5f5f5f5f5f5f5f5f6101e08a8c0312156128e8575f5ffd5b6128f28b8b6126e2565b98506101008a013567ffffffffffffffff81111561290e575f5ffd5b61291a8c828d016126f9565b9099509750506101208a013561292f81612741565b95506101408a013594506101608a013561294881612741565b93506129576101808b016128bf565b989b979a5095989497939692955092936101a081013593506101c00135919050565b5f5f5f5f5f5f5f5f60e0898b031215612990575f5ffd5b883567ffffffffffffffff8111156129a6575f5ffd5b6129b28b828c016126f9565b90995097505060208901356129c681612741565b955060408901356129d681612741565b9450606089013567ffffffffffffffff8111156129f1575f5ffd5b6129fd8b828c01612772565b9450506080890135925060a0890135915060c0890135612a1c81612741565b809150509295985092959890939650565b5f60e082840312156126f3575f5ffd5b5f5f83601f840112612a4d575f5ffd5b50813567ffffffffffffffff811115612a64575f5ffd5b60208301915083602082850101111561273a575f5ffd5b5f5f5f5f6101208587031215612a8f575f5ffd5b612a998686612a2d565b935060e0850135612aa981612741565b925061010085013567ffffffffffffffff811115612ac5575f5ffd5b612ad187828801612a3d565b95989497509550505050565b5f5f5f5f5f5f5f610180888a031215612af4575f5ffd5b612afe8989612a2d565b965060e0880135612b0e81612741565b955061010088013567ffffffffffffffff811115612b2a575f5ffd5b612b368a828b01612a3d565b9096509450612b4a905061012089016128bf565b9699959850939692959461014084013594506101609093013592915050565b5f608082840312156126f3575f5ffd5b5f5f5f5f5f5f5f610200888a031215612b90575f5ffd5b612b9a89896126e2565b965061010088013567ffffffffffffffff811115612bb6575f5ffd5b612bc28a828b016126f9565b909750955050610120880135612bd781612741565b9350610140880135612be881612741565b925061016088013567ffffffffffffffff811115612c04575f5ffd5b612c108a828b01612782565b92505061283a896101808a01612b69565b5f5f5f5f5f6101408688031215612c36575f5ffd5b612c408787612a2d565b945060e086013567ffffffffffffffff811115612c5b575f5ffd5b612c67888289016126f9565b909550935050610100860135612c7c81612741565b94979396509194610120013592915050565b5f5f5f5f5f6101608688031215612ca3575f5ffd5b612cad87876126e2565b945061010086013567ffffffffffffffff811115612cc9575f5ffd5b612cd5888289016126f9565b909550935050610120860135612cea81612741565b94979396509194610140013592915050565b5f5f5f5f5f5f60a08789031215612d11575f5ffd5b863567ffffffffffffffff811115612d27575f5ffd5b612d3389828a016126f9565b9097509550506020870135612d4781612741565b93506040870135612d5781612741565b9250606087013567ffffffffffffffff811115612d72575f5ffd5b612d7e89828a01612782565b9699959850939692959460809093013593505050565b5f5f5f5f5f5f5f5f5f5f5f6101808c8e031215612daf575f5ffd5b8b359a5060208c0135612dc181612741565b9950612dcf60408d01612762565b9850612ddd60608d01612762565b975060808c0135965060a08c013567ffffffffffffffff811115612dff575f5ffd5b612e0b8e828f016126f9565b9097509550612e1f90508d60c08e01612b69565b9350612e2e6101408d01612762565b92506101608c013567ffffffffffffffff811115612e4a575f5ffd5b612e568e828f01612a3d565b915080935050809150509295989b509295989b9093969950565b5f5f5f5f5f5f5f5f5f6101c08a8c031215612e89575f5ffd5b612e938b8b612a2d565b985060e08a013567ffffffffffffffff811115612eae575f5ffd5b612eba8c828d016126f9565b9099509750506101008a0135612ecf81612741565b95506101208a013594506101408a0135612ee881612741565b9350612ef76101608b016128bf565b989b979a50959894979396929550929361018081013593506101a00135919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f612f776020830184612f19565b9392505050565b5f5f5f5f5f5f5f6101a0888a031215612f95575f5ffd5b612f9f89896126e2565b9650610100880135612fb081612741565b955061012088013567ffffffffffffffff811115612fcc575f5ffd5b612fd88a828b01612a3d565b9096509450612fec905061014089016128bf565b9699959850939692959461016084013594506101809093013592915050565b5f5f5f5f5f5f5f60c0888a031215613021575f5ffd5b87359650602088013561303381612741565b9550604088013561304381612741565b9450606088013561305381612741565b93506080880135925060a088013567ffffffffffffffff811115613075575f5ffd5b6130818a828b016126f9565b989b979a50959850939692959293505050565b5f5f5f5f61014085870312156130a8575f5ffd5b6130b286866126e2565b93506101008501356130c381612741565b925061012085013567ffffffffffffffff811115612ac5575f5ffd5b5f602082840312156130ef575f5ffd5b8135612f7781612741565b5f6020828403121561310a575f5ffd5b612f77826128bf565b818382375f9101908152919050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602080825281018290525f6040600584901b8301810190830185837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa136839003015b878210156132a4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845282358181126131e7575f5ffd5b890180356131f481612741565b73ffffffffffffffffffffffffffffffffffffffff168652602081810135908701526040810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261324b575f5ffd5b0160208101903567ffffffffffffffff811115613266575f5ffd5b803603821315613274575f5ffd5b60606040880152613289606088018284613122565b965050506020830192506020840193506001820191506131ab565b5092979650505050505050565b5f602082840312156132c1575f5ffd5b813563ffffffff81168114612f77575f5ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613307575f5ffd5b83018035915067ffffffffffffffff821115613321575f5ffd5b60200191503681900382131561273a575f5ffd5b5f60208284031215613345575f5ffd5b8151612f7781612741565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126133af575f5ffd5b9190910192915050565b6080815263ffffffff8451166080820152602084015160a0820152604084015160c0820152606084015160e08201525f608085015160e0610100840152613404610160840182612f19565b905060a08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80848303016101208501526134408282612f19565b91505060c08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808483030161014085015261347d8282612f19565b92505050613498602083018580518252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff83166060830152611526565b5f604082840312156134c9575f5ffd5b6040805190810167ffffffffffffffff81118282101715613511577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b5f5f82840360c081121561353d575f5ffd5b608081121561354a575f5ffd5b506040516060810167ffffffffffffffff81118282101715613593577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405283518152602084015167ffffffffffffffff811681146135b4575f5ffd5b60208201526135c685604086016134b9565b604082015291506135da84608085016134b9565b90509250929050565b5f602082840312156135f3575f5ffd5b5051919050565b89815263ffffffff8916602082015287604082015273ffffffffffffffffffffffffffffffffffffffff871660608201528560808201528460a082015263ffffffff841660c082015261010060e08201525f61365b61010083018486613122565b9b9a5050505050505050505050565b5f883561367681612741565b73ffffffffffffffffffffffffffffffffffffffff908116835260208a810135818501526040808c0135908501526060808c01359085015289518216608085015289015160a0840152871660c08301528560e08301526101406101008301526136e3610140830186612f19565b8281036101208401526136f7818587613122565b9a9950505050505050505050565b5f82518060208501845e5f920191825250919050565b5f6020828403121561372b575f5ffd5b81518015158114612f77575f5ffdfe45786563757465416e644c6f636b4552433230207769746e6573732945786563757465416e644c6f636b4552433230286279746573333220707265696d616765486173682c6164647265737320746f6b656e2c6164647265737320636c61696d416464726573732c6164647265737320726566756e64416464726573732c75696e743235362074696d656c6f636b2c627974657333322063616c6c734861736829546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a264697066735822122059bde45892e47342d3e7918d2565498f15e0689039b2c6be73fc5554534660d564736f6c63430008210033","sourceMap":"922:35749:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18239:1120;;;;;;:::i;:::-;;:::i;:::-;;26449:355;;;;;;:::i;:::-;;:::i;7917:46::-;;;;;;;;;;;;;;;;;;3691:42:57;3679:55;;;3661:74;;3649:2;3634:18;7917:46:5;;;;;;;;16520:801;;;;;;;;;;-1:-1:-1;16520:801:5;;;;;:::i;:::-;;:::i;20024:379::-;;;;;;:::i;:::-;;:::i;6829:172::-;;;;;;;;;;;;6875:126;6829:172;;;;;6770:25:57;;;6758:2;6743:18;6829:172:5;6624:177:57;12438:391:5;;;;;;;;;;-1:-1:-1;12438:391:5;;;;;:::i;:::-;;:::i;8092:313::-;;;;;;;;;;;;;;;6668:155;;;;;;;;;;;;6721:102;6668:155;;13654:711;;;;;;;;;;-1:-1:-1;13654:711:5;;;;;:::i;:::-;;:::i;6458:204::-;;;;;;;;;;;;6504:158;6458:204;;7007:214;;;;;;;;;;;;7052:169;7007:214;;8042:43;;;;;;;;;;;;;;;6326:126;;;;;;;;;;;;6380:72;6326:126;;21140:1021;;;;;;:::i;:::-;;:::i;9642:399::-;;;;;;;;;;-1:-1:-1;9642:399:5;;;;;:::i;:::-;;:::i;15004:414::-;;;;;;;;;;-1:-1:-1;15004:414:5;;;;;:::i;:::-;;:::i;22673:313::-;;;;;;:::i;:::-;;:::i;28466:894::-;;;;;;:::i;:::-;;:::i;11136:786::-;;;;;;;;;;-1:-1:-1;11136:786:5;;;;;:::i;:::-;;:::i;7447:272::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7798:40::-;;;;;;;;;;;;;;;25119:869;;;;;;;;;;-1:-1:-1;25119:869:5;;;;;:::i;:::-;;:::i;27327:376::-;;;;;;:::i;:::-;;:::i;7227:214::-;;;;;;;;;;;;7281:160;7227:214;;6180:140;;;;;;;;;;;;6229:91;6180:140;;23626:515;;;;;;;;;;-1:-1:-1;23626:515:5;;;;;:::i;:::-;;:::i;6140:33::-;;;;;;;;;;;;6172:1;6140:33;;;;;20277:4:57;20265:17;;;20247:36;;20235:2;20220:18;6140:33:5;20105:184:57;18239:1120:5;3023:21:51;:19;:21::i;:::-;18565:591:5::1;6504:158;18733:14:::0;::::1;18777:5:::0;18812:3;18845:22:::1;18858:8:::0;18845:12:::1;:22::i;:::-;18897:16:::0;::::1;18943:15;::::0;::::1;;18988:18;::::0;;;::::1;::::0;::::1;;:::i;:::-;18644:388;::::0;;::::1;::::0;::::1;21021:25:57::0;;;;21062:18;;21055:34;;;;21137:42;21125:55;;;21105:18;;;21098:83;21217:55;;;21197:18;;;21190:83;21289:19;;;21282:35;;;;21333:19;;;21326:35;21377:19;;;21370:35;21442:55;21421:19;;;21414:84;20993:19;;18644:388:5::1;::::0;;;;;::::1;::::0;;;;;;18609:445;;18644:388:::1;18609:445:::0;;::::1;::::0;19076:6:::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;19104:4;:6;;;19132:4;:6;;;18565:22;:591::i;:::-;18524:632;;:21;18539:5;18524:14;:21::i;:::-;:632;;;18507:713;;19188:21;;;;;;;;;;;;;;18507:713;19230:19;19243:5;;19230:12;:19::i;:::-;19259:93;19276:5:::0;19283:3;19288:8;19298:16;::::1;19316:15;::::0;::::1;;19333:18;::::0;;;::::1;::::0;::::1;;:::i;:::-;19259:16;:93::i;:::-;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;18239:1120:5;;;;;;;:::o;26449:355::-;3023:21:51;:19;:21::i;:::-;26667:19:5::1;26680:5;;26667:12;:19::i;:::-;26696:101;::::0;;;;::::1;::::0;::::1;21927:25:57::0;;;26696:18:5::1;21988:55:57::0;;;21968:18;;;21961:83;22080:55;;;22060:18;;;22053:83;22152:18;;;22145:34;;;26696:13:5::1;:18;::::0;::::1;::::0;26722:21:::1;::::0;21899:19:57;;26696:101:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;26449:355:5;;;;;;:::o;16520:801::-;3023:21:51;:19;:21::i;:::-;17068:76:5::1;::::0;;6229:91:::1;17068:76;::::0;::::1;22449:25:57::0;17095:14:5;::::1;22490:18:57::0;;;22483:34;;;;22565:42;22553:55;;;22533:18;;;22526:83;22625:18;;;22618:34;;;22689:55;;22668:19;;;22661:84;17014:158:5::1;::::0;22421:19:57;;17068:76:5::1;;;;;;;;;;;;;17058:87;;;;;;17147:1;17150;17153;17014:22;:158::i;:::-;16973:199;;:21;16988:5;16973:14;:21::i;:::-;:199;;;16956:280;;17204:21;;;;;;;;;;;;;;16956:280;17246:19;17259:5;;17246:12;:19::i;:::-;17275:39;17281:11;17294:5;17301:12;17275:5;:39::i;:::-;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;16520:801:5;;;;;;;;;:::o;20024:379::-;3023:21:51;:19;:21::i;:::-;20289:19:5::1;20302:5;;20289:12;:19::i;:::-;20318:78;20335:5;20342:3;20347:8;20357:11;20370:10;20382:13;20318:16;:78::i;:::-;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;20024:379:5;;;;;;;;:::o;12438:391::-;3023:21:51;:19;:21::i;:::-;12576:10:5::1;12556:16;12566:5:::0;12556:9:::1;:16::i;:::-;:30;;;12552:89;;12609:21;;;;;;;;;;;;;;12552:89;12651:32;12676:6;12651:24;:32::i;:::-;12695:12;12712:6;:11;;12731:5;:12;;;12745:8;;12712:42;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12694:60;;;12769:7;12764:59;;12799:13;::::0;::::1;::::0;;12810:1:::1;12799:13;::::0;::::1;6770:25:57::0;6743:18;;12799:13:5::1;;;;;;;;12764:59;12542:287;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;12438:391:5;;;;:::o;13654:711::-;3023:21:51;:19;:21::i;:::-;13955:158:5::1;6380:72;14041:5;:14;;;14057:6;14075:8;;14065:19;;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;14009:76:::1;::::0;;;;::::1;;23453:25:57::0;;;23509:2;23494:18;;23487:34;;;;23569:42;23557:55;23552:2;23537:18;;23530:83;23644:2;23629:18;;23622:34;23440:3;23425:19;;23222:440;13955:158:5::1;13919:194;;:16;13929:5;13919:9;:16::i;:::-;:194;;;13902:275;;14145:21;;;;;;;;;;;;;;13902:275;14187:32;14212:6;14187:24;:32::i;:::-;14231:12;14248:6;:11;;14267:5;:12;;;14281:8;;14248:42;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14230:60;;;14305:7;14300:59;;14335:13;::::0;::::1;::::0;;14346:1:::1;14335:13;::::0;::::1;6770:25:57::0;6743:18;;14335:13:5::1;6624:177:57::0;14300:59:5::1;13809:556;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;21140:1021:5;3023:21:51;:19;:21::i;:::-;21478:507:5::1;6875:126;21646:14:::0;::::1;21690:5:::0;21725:14;21769:22:::1;21782:8:::0;21769:12:::1;:22::i;:::-;21557:304;::::0;;::::1;::::0;::::1;23954:25:57::0;;;;23995:18;;23988:34;;;;24070:42;24058:55;;;24038:18;;;24031:83;24150:55;24130:18;;;24123:83;24222:19;;;24215:35;21821:14:5;::::1;24266:19:57::0;;;24259:35;23926:19;;21557:304:5::1;;;;;;;;;;;;21522:361;;;;;;21905:4;:6;;;;;;;;;;:::i;:::-;21933:4;:6;;;21961:4;:6;;;21478:22;:507::i;:::-;21437:548;;:21;21452:5;21437:14;:21::i;:::-;:548;;;21420:629;;22017:21;;;;;;;;;;;;;;21420:629;22059:19;22072:5;;22059:12;:19::i;:::-;22088:66;22106:5:::0;22113:14;22129:8;22139:14;::::1;22088:17;:66::i;9642:399::-:0;3023:21:51;:19;:21::i;:::-;9892:10:5::1;9872:16;9882:5:::0;9872:9:::1;:16::i;:::-;:30;;;9868:89;;9925:21;;;;;;;;;;;;;;9868:89;9967:19;9980:5;;9967:12;:19::i;:::-;9996:38;10002:10;10014:5;10021:12;9996:5;:38::i;:::-;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;9642:399:5;;;;;:::o;15004:414::-;3023:21:51;:19;:21::i;:::-;15269:10:5::1;15244:21;15259:5:::0;15244:14:::1;:21::i;22673:313::-:0;3023:21:51;:19;:21::i;:::-;22889:19:5::1;22902:5;;22889:12;:19::i;:::-;22918:61;22936:5;22943:14;22959:8;22969:9;22918:17;:61::i;:::-;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;28466:894:5;3023:21:51;:19;:21::i;:::-;28850:17:5::1;28891:22;28927:5;;28916:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28891:42;;29041:9;29035:16;29028:4;29017:9;29013:20;29003:49;28990:62;;28972:94;29086:141;29115:12;29129;29143;29157:13;29172:8;29182:9;29193:6;29201:5;29208:9;;29086:15;:141::i;:::-;29237:19;29250:5;;29237:12;:19::i;:::-;29266:87;29287:12;29301;29315;29329:13;29344:8;29266:20;:87::i;:::-;28840:520;3065:20:51::0;2365:1;1505:66;3972:62;3749:292;3065:20;28466:894:5;;;;;;;;;;;:::o;11136:786::-;3023:21:51;:19;:21::i;:::-;11669:76:5::1;::::0;;6229:91:::1;11669:76;::::0;::::1;22449:25:57::0;11696:14:5;::::1;22490:18:57::0;;;22483:34;;;;22565:42;22553:55;;;22533:18;;;22526:83;22625:18;;;22618:34;;;22689:55;;22668:19;;;22661:84;11615:158:5::1;::::0;22421:19:57;;11669:76:5::1;22190:561:57::0;11615:158:5::1;11579:194;;:16;11589:5;11579:9;:16::i;7447:272::-:0;;;;;;;;;;;;;;;;;;;:::o;25119:869::-;3023:21:51;:19;:21::i;:::-;25469:158:5::1;6380:72;25555:5;:14;;;25571:6;25589:8;;25579:19;;;;;;;:::i;25469:158::-;25428:199;;:21;25443:5;25428:14;:21::i;:::-;:199;;;25411:280;;25659:21;;;;;;;;;;;;;;25411:280;25701:32;25726:6;25701:24;:32::i;:::-;25802:61;25842:6:::0;25850:12:::1;::::0;::::1;;25809:18;::::0;;;::::1;::::0;::::1;;:::i;:::-;25802:39;;::::0;:61;:39:::1;:61::i;:::-;25875:12;25892:6;:11;;25904:8;;25892:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27327:376:::0;3023:21:51;:19;:21::i;:::-;27580:19:5::1;27593:5;;27580:12;:19::i;:::-;27609:87;27630:12;27644;27658;27672:13;27687:8;27609:20;:87::i;23626:515::-:0;3023:21:51;:19;:21::i;:::-;23779:10:5::1;23754:21;23769:5:::0;23754:14:::1;:21::i;:::-;:35;;;23750:94;;23812:21;;;;;;;;;;;;;;23750:94;23854:32;23879:6;23854:24;:32::i;:::-;23955:61;23995:6:::0;24003:12:::1;::::0;::::1;;23962:18;::::0;;;::::1;::::0;::::1;;:::i;23955:61::-;24028:12;24045:6;:11;;24057:8;;24045:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3749:292:51::0;3872:25;:23;:25::i;:::-;2407:1;1505:66;3972:62;3749:292::o;31721:403:5:-;31794:7;31820:297;6721:102;31907:15;;;;:8;:15;:::i;:::-;31940:11;;;;31979:21;;;;31940:8;31979:21;:::i;:::-;31969:32;;;;;;;:::i;:::-;;;;;;;;;32029:19;;;;:8;:19;:::i;:::-;32019:30;;;;;;;:::i;:::-;;;;;;;;;32077:15;;;;:8;:15;:::i;:::-;32067:26;;;;;;;:::i;:::-;;;;;;;;;31843:264;;;;;;;;;27818:25:57;;;27891:10;27879:23;;;;27874:2;27859:18;;27852:51;27934:2;27919:18;;27912:34;;;;27977:2;27962:18;;27955:34;28020:3;28005:19;;27998:35;28064:3;28049:19;;28042:35;27805:3;27790:19;;27533:550;31843:264:5;;;;;;;;;;;;;32756:11;;32749:4;32739:15;;;32729:39;;32589:195;31820:297;31813:304;31721:403;-1:-1:-1;;31721:403:5:o;32790:228::-;32942:58;;28358:66:57;32942:58:5;;;28346:79:57;32971:16:5;28441:11:57;;;28434:27;28477:12;;;28470:28;;;32896:7:5;;32922:89;;28514:12:57;;32942:58:5;;;;;;;;;;;;;32932:69;;32942:58;32932:69;;;;32922:89;;;;;;;;;28764:25:57;28837:4;28825:17;;28805:18;;;28798:45;28859:18;;;28852:34;;;28902:18;;;28895:34;;;28736:19;;32922:89:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32915:96;;32790:228;;;;;;;:::o;31368:347::-;31437:7;31463:25;:19;:25;;31502:14;;31530:12;;;;31556:18;;;;;;;;:::i;:::-;31588:19;;;;;;;;:::i;:::-;31621:14;;;;31649:7;;;;;;;;:::i;:::-;31463:245;;;31691:7;31463:245;;;;;;;;;;;;29279:25:57;;;;29320:18;;;29313:34;;;;29395:42;29383:55;;;29363:18;;;29356:83;29475:55;;;;29455:18;;;29448:83;29547:19;;;29540:35;29624:4;29612:17;29591:19;;;29584:46;31670:7:5;;;;29646:19:57;;;29639:35;31691:7:5;;;;29690:19:57;;;29683:35;29251:19;;31463:245:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35505:467::-;35586:5;35608:15;35569:14;35634:332;35658:6;35654:1;:10;35634:332;;;35689:5;;35695:1;35689:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;35685:12;-1:-1:-1;35712:34:5;35737:8;;;;35685:12;35737:8;:::i;:::-;35712:24;:34::i;:::-;35817:12;35834:8;;;;:1;:8;:::i;:::-;:13;;35855:7;;;;35864:10;;;;35855:1;35864:10;:::i;:::-;35834:41;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35816:59;;;35894:7;35889:67;;35928:13;;;;;;;;6770:25:57;;;6743:18;;35928:13:5;6624:177:57;35889:67:5;-1:-1:-1;35666:3:5;;35634:332;;33278:826;33497:16;33516:35;33532:5;33539:11;33516:15;:35::i;:::-;33658:324;;;;;;;;;33497:54;;-1:-1:-1;33582:21:5;;33613:13;;;;;;33582:21;;33658:324;33698:15;;;;:8;:15;:::i;:::-;33658:324;;;;;;33735:8;:11;;;33658:324;;;;33774:8;33658:324;;;;33813:11;33658:324;;;;33856:8;:21;;;;;;;;:::i;:::-;33658:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33658:324:5;;;-1:-1:-1;33658:324:5;;33907:19;;;;:8;:19;:::i;:::-;33658:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33658:324:5;;;-1:-1:-1;33658:324:5;;33952:15;;;;:8;:15;:::i;:::-;33658:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33658:324:5;;-1:-1:-1;33996:64:5;;;;;;;;;;;;;;;;;33613:484;;;;;;;;;;;;;33996:64;34074:13;;33613:484;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33487:617;;33278:826;;;;;;:::o;35978:606::-;36070:15;36110:19;;;;36140:148;;;;36177:21;36167:31;;36140:148;;;36239:38;;;;;36271:4;36239:38;;;3661:74:57;36239:23:5;;;;;;3634:18:57;;36239:38:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36229:48;;36140:148;36312:12;36302:7;:22;36298:81;;;36347:21;;;;;;;;;;;;;;36298:81;36393:7;36389:189;;;36416:59;36453:11;36467:7;36416:28;:59::i;:::-;36389:189;;;36506:61;36539:5;36546:11;36559:7;36506:32;:61::i;31135:227::-;31194:7;31220:19;:13;:19;;31253:14;;31269:12;;;;31283:19;;;;;;;;:::i;:::-;31304:14;;;;31320:7;;;;;;;;:::i;:::-;31220:135;;;;;;;;;;;;;34897:25:57;;;;34938:18;;;34931:34;;;;35013:42;35001:55;;;34981:18;;;34974:83;35073:18;;;35066:34;35149:4;35137:17;35116:19;;;35109:46;31329:7:5;;;;35171:19:57;;;35164:35;31338:7:5;;;;35215:19:57;;;35208:35;34869:19;;31220:135:5;34586:663:57;35257:242:5;35353:13;35335:32;;:6;:32;;;:74;;;;35389:19;35371:38;;:6;:38;;;35335:74;:104;;;;35431:7;35413:26;;:6;:26;;;35335:104;35331:162;;;35462:20;;;;;;;;;;;;;;35331:162;35257:242;:::o;32130:453::-;32203:7;32229:347;7052:169;32316:26;;;;:8;:26;:::i;:::-;32360:22;;;;32400:26;;;;32444:15;;;;32477:29;;;;;;;;:::i;:::-;32534:17;;;;:8;:17;:::i;:::-;32524:28;;;;;;;:::i;:::-;;;;;;;;;;32252:314;;;35565:25:57;;;;35638:10;35626:23;;;35606:18;;;35599:51;35666:18;;;35659:34;;;;35709:18;;;35702:34;;;;35752:19;;;35745:35;35817:23;;;35796:19;;;35789:52;35857:19;;;35850:35;;;;35537:19;;32252:314:5;35254:637:57;34110:1141:5;34254:14;34271:33;34287:5;34294:9;34271:15;:33::i;:::-;34254:50;-1:-1:-1;34314:50:5;:26;;;34341:14;34254:50;34314:26;:50::i;:::-;34379:17;;;;:8;:17;:::i;:::-;:24;;34407:1;34379:29;34375:870;;34424:65;;;;34511:6;34539:26;;;;:8;:26;:::i;:::-;34587:22;;;;34631:5;34658:26;;;;34706:15;;;;34743:29;;;;;;;;:::i;:::-;34424:366;;;;;;;;;;;;;36207:25:57;;;;34424:366:5;36268:23:57;;;36248:18;;;36241:51;36308:18;;;36301:34;;;;36383:42;36371:55;;;36351:18;;;36344:83;36443:19;;;36436:35;36487:19;;;36480:35;36552:23;36531:19;;;36524:52;36179:19;;34424:366:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34375:870;;;34821:73;;;;34916:6;34944:26;;;;:8;:26;:::i;:::-;34992:22;;;;35036:5;35063:26;;;;35111:15;;;;35148:29;;;;;;;;:::i;:::-;35199:17;;;;:8;:17;:::i;:::-;34821:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29848:1281;30192:15;30231:16;7281:160;30231:46;;30351:4;30345:11;30385:8;30380:3;30373:21;30434:12;30427:4;30422:3;30418:14;30411:36;30487:12;30480:4;30475:3;30471:14;30464:36;30540:12;30533:4;30528:3;30524:14;30517:36;30593:13;30586:4;30581:3;30577:14;30570:37;30647:8;30640:4;30635:3;30631:14;30624:32;30696:9;30689:4;30684:3;30680:14;30673:33;30749:4;30744:3;30734:20;30723:31;;30793:4;30788:3;30784:14;30778:4;30771:28;;30316:497;30833:7;:33;;;30880:6;30900:106;;;;;;;;30957:4;30900:106;;;;;;30981:6;:16;;:23;;;30900:106;;;31020:5;31039:7;31060:29;;;;;;;;;;;;;;;;;31103:9;;30833:289;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30182:947;29848:1281;;;;;;;;;;:::o;29366:476::-;29630:30;;;;;29654:4;29630:30;;;3661:74:57;29590:12:5;;29568;;29630:15;;;;;;3634:18:57;;29630:30:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29613:47;-1:-1:-1;29670:56:5;:18;;;29697:19;29613:47;29670:18;:56::i;:::-;29736:99;;;;;;;;39196:25:57;;;39237:18;;;39230:34;;;29736:24:5;39300:55:57;;;39280:18;;;39273:83;39392:55;;;39372:18;;;39365:83;39485:55;;;39464:19;;;39457:84;39557:19;;;39550:35;;;29736:19:5;:24;;;;39168:19:57;;29736:99:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5098:367:49;5190:42;5203:5;5210:7;5219:5;5226;5190:12;:42::i;:::-;5185:274;;5253:37;5266:5;5273:7;5282:1;5285:4;5253:12;:37::i;:::-;5248:91;;5299:40;;;;;3691:42:57;3679:55;;5299:40:49;;;3661:74:57;3634:18;;5299:40:49;3497:244:57;5248:91:49;5358:41;5371:5;5378:7;5387:5;5394:4;5358:12;:41::i;:::-;5353:95;;5408:40;;;;;3691:42:57;3679:55;;5408:40:49;;;3661:74:57;3634:18;;5408:40:49;3497:244:57;5353:95:49;5098:367;;;:::o;3586:157:51:-;1505:66;4560:52;2407:1;4560:63;3644:93;;3696:30;;;;;;;;;;;;;;3644:93;3586:157::o;33024:248:5:-;33141:38;;;;;33173:4;33141:38;;;3661:74:57;33106:14:5;;33141:23;;;;;;3634:18:57;;33141:38:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33132:47;;33202:9;33193:6;:18;33189:77;;;33234:21;;;;;;;;;;;;;;649:199:7;728:12;745:2;:7;;760:6;745:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;727:44;;;789:7;781:60;;;;;;;40008:2:57;781:60:7;;;39990:21:57;40047:2;40027:18;;;40020:30;40086:34;40066:18;;;40059:62;40157:10;40137:18;;;40130:38;40185:19;;781:60:7;39806:404:57;1299:403:7;1500:45;;;1489:10;40407:55:57;;;1500:45:7;;;40389:74:57;40479:18;;;;40472:34;;;1500:45:7;;;;;;;;;;40362:18:57;;;;1500:45:7;;;;;;;;;;;;;1489:57;;-1:-1:-1;;;;1489:10:7;;;;:57;;1500:45;1489:57;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1453:93;;;;1577:7;:57;;;;-1:-1:-1;1589:11:7;;:16;;:44;;;1620:4;1609:24;;;;;;;;;;;;:::i;:::-;1556:139;;;;;;;41307:2:57;1556:139:7;;;41289:21:57;41346:2;41326:18;;;41319:30;41385:34;41365:18;;;41358:62;41456:17;41436:18;;;41429:45;41491:19;;1556:139:7;41105:411:57;12059:1252:49;12289:4;12283:11;12199:23;12157:12;12307:22;;;12368:15;12355:29;;12349:4;12342:43;12405:4;12398:19;;;12157:12;12481:4;12157:12;12469:4;12157:12;;12453:5;12446;12441:45;12430:56;;12698:1;12691:4;12685:11;12682:18;12673:7;12669:32;12659:606;;12830:6;12820:7;12813:15;12809:28;12806:165;;;12886:16;12880:4;12875:3;12860:43;12936:16;12931:3;12924:29;12806:165;13247:1;13239:5;13227:18;13224:25;13205:16;13198:24;13194:56;13185:7;13181:70;13170:81;;12659:606;13285:4;13278:17;-1:-1:-1;12059:1252:49;;-1:-1:-1;;;;12059:1252:49:o;14:159:57:-;77:5;122:3;113:6;108:3;104:16;100:26;97:46;;;139:1;136;129:12;97:46;-1:-1:-1;161:6:57;14:159;-1:-1:-1;14:159:57:o;178:380::-;254:8;264:6;318:3;311:4;303:6;299:17;295:27;285:55;;336:1;333;326:12;285:55;-1:-1:-1;359:20:57;;402:18;391:30;;388:50;;;434:1;431;424:12;388:50;471:4;463:6;459:17;447:29;;531:3;524:4;514:6;511:1;507:14;499:6;495:27;491:38;488:47;485:67;;;548:1;545;538:12;485:67;178:380;;;;;:::o;563:154::-;649:42;642:5;638:54;631:5;628:65;618:93;;707:1;704;697:12;722:134;790:20;;819:31;790:20;819:31;:::i;:::-;722:134;;;:::o;861:157::-;922:5;967:3;958:6;953:3;949:16;945:26;942:46;;;984:1;981;974:12;1023:171;1098:5;1143:3;1134:6;1129:3;1125:16;1121:26;1118:46;;;1160:1;1157;1150:12;1199:1296;1454:6;1462;1470;1478;1486;1494;1502;1555:3;1543:9;1534:7;1530:23;1526:33;1523:53;;;1572:1;1569;1562:12;1523:53;1595:57;1644:7;1633:9;1595:57;:::i;:::-;1585:67;;1703:3;1692:9;1688:19;1675:33;1731:18;1723:6;1720:30;1717:50;;;1763:1;1760;1753:12;1717:50;1802:83;1877:7;1868:6;1857:9;1853:22;1802:83;:::i;:::-;1904:8;;-1:-1:-1;1776:109:57;-1:-1:-1;;1989:3:57;1974:19;;1961:33;2003:31;1961:33;2003:31;:::i;:::-;2053:5;-1:-1:-1;2110:3:57;2095:19;;2082:33;2124;2082;2124;:::i;:::-;2176:7;-1:-1:-1;2236:3:57;2221:19;;2208:33;2266:18;2253:32;;2250:52;;;2298:1;2295;2288:12;2250:52;2321:70;2383:7;2372:8;2361:9;2357:24;2321:70;:::i;:::-;2311:80;;;2410:79;2481:7;2475:3;2464:9;2460:19;2410:79;:::i;:::-;2400:89;;1199:1296;;;;;;;;;;:::o;2500:992::-;2646:6;2654;2662;2670;2678;2686;2739:3;2727:9;2718:7;2714:23;2710:33;2707:53;;;2756:1;2753;2746:12;2707:53;2801:23;;;-1:-1:-1;2900:2:57;2885:18;;2872:32;2913:33;2872:32;2913:33;:::i;:::-;2965:7;-1:-1:-1;3024:2:57;3009:18;;2996:32;3037:33;2996:32;3037:33;:::i;:::-;3089:7;-1:-1:-1;3169:2:57;3154:18;;3141:32;;-1:-1:-1;3250:3:57;3235:19;;3222:33;3278:18;3267:30;;3264:50;;;3310:1;3307;3300:12;3264:50;3349:83;3424:7;3415:6;3404:9;3400:22;3349:83;:::i;:::-;2500:992;;;;-1:-1:-1;2500:992:57;;-1:-1:-1;2500:992:57;;3451:8;;2500:992;-1:-1:-1;;;2500:992:57:o;3746:156::-;3812:20;;3872:4;3861:16;;3851:27;;3841:55;;3892:1;3889;3882:12;3907:1320;4108:6;4116;4124;4132;4140;4148;4156;4164;4172;4225:3;4213:9;4204:7;4200:23;4196:33;4193:53;;;4242:1;4239;4232:12;4193:53;4265:57;4314:7;4303:9;4265:57;:::i;:::-;4255:67;;4373:3;4362:9;4358:19;4345:33;4401:18;4393:6;4390:30;4387:50;;;4433:1;4430;4423:12;4387:50;4472:83;4547:7;4538:6;4527:9;4523:22;4472:83;:::i;:::-;4574:8;;-1:-1:-1;4446:109:57;-1:-1:-1;;4659:3:57;4644:19;;4631:33;4673:31;4631:33;4673:31;:::i;:::-;4723:5;-1:-1:-1;4801:3:57;4786:19;;4773:33;;-1:-1:-1;4884:3:57;4869:19;;4856:33;4898;4856;4898;:::i;:::-;4950:7;-1:-1:-1;4976:37:57;5008:3;4993:19;;4976:37;:::i;:::-;3907:1320;;;;-1:-1:-1;3907:1320:57;;;;;;;;-1:-1:-1;4966:47:57;;5086:3;5071:19;;5058:33;;-1:-1:-1;5190:3:57;5175:19;5162:33;;3907:1320;-1:-1:-1;3907:1320:57:o;5232:1387::-;5424:6;5432;5440;5448;5456;5464;5472;5480;5533:3;5521:9;5512:7;5508:23;5504:33;5501:53;;;5550:1;5547;5540:12;5501:53;5590:9;5577:23;5623:18;5615:6;5612:30;5609:50;;;5655:1;5652;5645:12;5609:50;5694:83;5769:7;5760:6;5749:9;5745:22;5694:83;:::i;:::-;5796:8;;-1:-1:-1;5668:109:57;-1:-1:-1;;5881:2:57;5866:18;;5853:32;5894:31;5853:32;5894:31;:::i;:::-;5944:5;-1:-1:-1;6001:2:57;5986:18;;5973:32;6014:33;5973:32;6014:33;:::i;:::-;6066:7;-1:-1:-1;6126:2:57;6111:18;;6098:32;6155:18;6142:32;;6139:52;;;6187:1;6184;6177:12;6139:52;6210:70;6272:7;6261:8;6250:9;6246:24;6210:70;:::i;:::-;6200:80;-1:-1:-1;;6353:3:57;6338:19;;6325:33;;-1:-1:-1;6457:3:57;6442:19;;6429:33;;-1:-1:-1;6540:3:57;6525:19;;6512:33;6554;6512;6554;:::i;:::-;6606:7;6596:17;;;5232:1387;;;;;;;;;;;:::o;6806:154::-;6864:5;6909:3;6900:6;6895:3;6891:16;6887:26;6884:46;;;6926:1;6923;6916:12;6965:347;7016:8;7026:6;7080:3;7073:4;7065:6;7061:17;7057:27;7047:55;;7098:1;7095;7088:12;7047:55;-1:-1:-1;7121:20:57;;7164:18;7153:30;;7150:50;;;7196:1;7193;7186:12;7150:50;7233:4;7225:6;7221:17;7209:29;;7285:3;7278:4;7269:6;7261;7257:19;7253:30;7250:39;7247:59;;;7302:1;7299;7292:12;7317:669;7430:6;7438;7446;7454;7507:3;7495:9;7486:7;7482:23;7478:33;7475:53;;;7524:1;7521;7514:12;7475:53;7547:52;7591:7;7580:9;7547:52;:::i;:::-;7537:62;;7649:3;7638:9;7634:19;7621:33;7663:31;7688:5;7663:31;:::i;:::-;7713:5;-1:-1:-1;7769:3:57;7754:19;;7741:33;7797:18;7786:30;;7783:50;;;7829:1;7826;7819:12;7783:50;7868:58;7918:7;7909:6;7898:9;7894:22;7868:58;:::i;:::-;7317:669;;;;-1:-1:-1;7945:8:57;-1:-1:-1;;;;7317:669:57:o;7991:982::-;8129:6;8137;8145;8153;8161;8169;8177;8230:3;8218:9;8209:7;8205:23;8201:33;8198:53;;;8247:1;8244;8237:12;8198:53;8270:52;8314:7;8303:9;8270:52;:::i;:::-;8260:62;;8372:3;8361:9;8357:19;8344:33;8386:31;8411:5;8386:31;:::i;:::-;8436:5;-1:-1:-1;8492:3:57;8477:19;;8464:33;8520:18;8509:30;;8506:50;;;8552:1;8549;8542:12;8506:50;8591:58;8641:7;8632:6;8621:9;8617:22;8591:58;:::i;:::-;8668:8;;-1:-1:-1;8565:84:57;-1:-1:-1;8722:37:57;;-1:-1:-1;8754:3:57;8739:19;;8722:37;:::i;:::-;7991:982;;;;-1:-1:-1;7991:982:57;;;;8712:47;8832:3;8817:19;;8804:33;;-1:-1:-1;8936:3:57;8921:19;;;8908:33;;7991:982;-1:-1:-1;;7991:982:57:o;9237:171::-;9312:5;9357:3;9348:6;9343:3;9339:16;9335:26;9332:46;;;9374:1;9371;9364:12;9413:1310;9668:6;9676;9684;9692;9700;9708;9716;9769:3;9757:9;9748:7;9744:23;9740:33;9737:53;;;9786:1;9783;9776:12;9737:53;9809:57;9858:7;9847:9;9809:57;:::i;:::-;9799:67;;9917:3;9906:9;9902:19;9889:33;9945:18;9937:6;9934:30;9931:50;;;9977:1;9974;9967:12;9931:50;10016:83;10091:7;10082:6;10071:9;10067:22;10016:83;:::i;:::-;10118:8;;-1:-1:-1;9990:109:57;-1:-1:-1;;10203:3:57;10188:19;;10175:33;10217:31;10175:33;10217:31;:::i;:::-;10267:5;-1:-1:-1;10324:3:57;10309:19;;10296:33;10338;10296;10338;:::i;:::-;10390:7;-1:-1:-1;10450:3:57;10435:19;;10422:33;10480:18;10467:32;;10464:52;;;10512:1;10509;10502:12;10464:52;10535:84;10611:7;10600:8;10589:9;10585:24;10535:84;:::i;:::-;10525:94;;;10638:79;10709:7;10703:3;10692:9;10688:19;10638:79;:::i;10728:855::-;10890:6;10898;10906;10914;10922;10975:3;10963:9;10954:7;10950:23;10946:33;10943:53;;;10992:1;10989;10982:12;10943:53;11015:52;11059:7;11048:9;11015:52;:::i;:::-;11005:62;;11118:3;11107:9;11103:19;11090:33;11146:18;11138:6;11135:30;11132:50;;;11178:1;11175;11168:12;11132:50;11217:83;11292:7;11283:6;11272:9;11268:22;11217:83;:::i;:::-;11319:8;;-1:-1:-1;11191:109:57;-1:-1:-1;;11404:3:57;11389:19;;11376:33;11418:31;11376:33;11418:31;:::i;:::-;10728:855;;;;-1:-1:-1;10728:855:57;;11546:3;11531:19;11518:33;;10728:855;-1:-1:-1;;10728:855:57:o;11588:865::-;11755:6;11763;11771;11779;11787;11840:3;11828:9;11819:7;11815:23;11811:33;11808:53;;;11857:1;11854;11847:12;11808:53;11880:57;11929:7;11918:9;11880:57;:::i;:::-;11870:67;;11988:3;11977:9;11973:19;11960:33;12016:18;12008:6;12005:30;12002:50;;;12048:1;12045;12038:12;12002:50;12087:83;12162:7;12153:6;12142:9;12138:22;12087:83;:::i;:::-;12189:8;;-1:-1:-1;12061:109:57;-1:-1:-1;;12274:3:57;12259:19;;12246:33;12288:31;12246:33;12288:31;:::i;:::-;11588:865;;;;-1:-1:-1;11588:865:57;;12416:3;12401:19;12388:33;;11588:865;-1:-1:-1;;11588:865:57:o;12458:1138::-;12632:6;12640;12648;12656;12664;12672;12725:3;12713:9;12704:7;12700:23;12696:33;12693:53;;;12742:1;12739;12732:12;12693:53;12782:9;12769:23;12815:18;12807:6;12804:30;12801:50;;;12847:1;12844;12837:12;12801:50;12886:83;12961:7;12952:6;12941:9;12937:22;12886:83;:::i;:::-;12988:8;;-1:-1:-1;12860:109:57;-1:-1:-1;;13073:2:57;13058:18;;13045:32;13086:31;13045:32;13086:31;:::i;:::-;13136:5;-1:-1:-1;13193:2:57;13178:18;;13165:32;13206:33;13165:32;13206:33;:::i;:::-;13258:7;-1:-1:-1;13318:2:57;13303:18;;13290:32;13347:18;13334:32;;13331:52;;;13379:1;13376;13369:12;13331:52;13402:84;13478:7;13467:8;13456:9;13452:24;13402:84;:::i;:::-;12458:1138;;;;-1:-1:-1;12458:1138:57;;;;;13559:3;13544:19;;;13531:33;;-1:-1:-1;;;12458:1138:57:o;13601:1537::-;13833:6;13841;13849;13857;13865;13873;13881;13889;13897;13905;13913:7;13967:3;13955:9;13946:7;13942:23;13938:33;13935:53;;;13984:1;13981;13974:12;13935:53;14029:23;;;-1:-1:-1;14128:2:57;14113:18;;14100:32;14141:33;14100:32;14141:33;:::i;:::-;14193:7;-1:-1:-1;14219:38:57;14253:2;14238:18;;14219:38;:::i;:::-;14209:48;;14276:38;14310:2;14299:9;14295:18;14276:38;:::i;:::-;14266:48;-1:-1:-1;14387:3:57;14372:19;;14359:33;;-1:-1:-1;14469:3:57;14454:19;;14441:33;14497:18;14486:30;;14483:50;;;14529:1;14526;14519:12;14483:50;14568:83;14643:7;14634:6;14623:9;14619:22;14568:83;:::i;:::-;14670:8;;-1:-1:-1;14542:109:57;-1:-1:-1;14724:79:57;;-1:-1:-1;14795:7:57;14789:3;14774:19;;14724:79;:::i;:::-;14714:89;;14822:39;14856:3;14845:9;14841:19;14822:39;:::i;:::-;14812:49;;14914:3;14903:9;14899:19;14886:33;14944:18;14934:8;14931:32;14928:52;;;14976:1;14973;14966:12;14928:52;15016:60;15068:7;15057:8;15046:9;15042:24;15016:60;:::i;:::-;14989:87;;15095:8;15085:18;;;15123:9;15112:20;;;13601:1537;;;;;;;;;;;;;;:::o;15143:1310::-;15339:6;15347;15355;15363;15371;15379;15387;15395;15403;15456:3;15444:9;15435:7;15431:23;15427:33;15424:53;;;15473:1;15470;15463:12;15424:53;15496:52;15540:7;15529:9;15496:52;:::i;:::-;15486:62;;15599:3;15588:9;15584:19;15571:33;15627:18;15619:6;15616:30;15613:50;;;15659:1;15656;15649:12;15613:50;15698:83;15773:7;15764:6;15753:9;15749:22;15698:83;:::i;:::-;15800:8;;-1:-1:-1;15672:109:57;-1:-1:-1;;15885:3:57;15870:19;;15857:33;15899:31;15857:33;15899:31;:::i;:::-;15949:5;-1:-1:-1;16027:3:57;16012:19;;15999:33;;-1:-1:-1;16110:3:57;16095:19;;16082:33;16124;16082;16124;:::i;:::-;16176:7;-1:-1:-1;16202:37:57;16234:3;16219:19;;16202:37;:::i;:::-;15143:1310;;;;-1:-1:-1;15143:1310:57;;;;;;;;-1:-1:-1;16192:47:57;;16312:3;16297:19;;16284:33;;-1:-1:-1;16416:3:57;16401:19;16388:33;;15143:1310;-1:-1:-1;15143:1310:57:o;16458:348::-;16500:3;16538:5;16532:12;16565:6;16560:3;16553:19;16621:6;16614:4;16607:5;16603:16;16596:4;16591:3;16587:14;16581:47;16673:1;16666:4;16657:6;16652:3;16648:16;16644:27;16637:38;16795:4;16725:66;16720:2;16712:6;16708:15;16704:88;16699:3;16695:98;16691:109;16684:116;;;16458:348;;;;:::o;16811:220::-;16960:2;16949:9;16942:21;16923:4;16980:45;17021:2;17010:9;17006:18;16998:6;16980:45;:::i;:::-;16972:53;16811:220;-1:-1:-1;;;16811:220:57:o;17285:992::-;17428:6;17436;17444;17452;17460;17468;17476;17529:3;17517:9;17508:7;17504:23;17500:33;17497:53;;;17546:1;17543;17536:12;17497:53;17569:57;17618:7;17607:9;17569:57;:::i;:::-;17559:67;;17676:3;17665:9;17661:19;17648:33;17690:31;17715:5;17690:31;:::i;:::-;17740:5;-1:-1:-1;17796:3:57;17781:19;;17768:33;17824:18;17813:30;;17810:50;;;17856:1;17853;17846:12;17810:50;17895:58;17945:7;17936:6;17925:9;17921:22;17895:58;:::i;:::-;17972:8;;-1:-1:-1;17869:84:57;-1:-1:-1;18026:37:57;;-1:-1:-1;18058:3:57;18043:19;;18026:37;:::i;:::-;17285:992;;;;-1:-1:-1;17285:992:57;;;;18016:47;18136:3;18121:19;;18108:33;;-1:-1:-1;18240:3:57;18225:19;;;18212:33;;17285:992;-1:-1:-1;;17285:992:57:o;18282:1134::-;18437:6;18445;18453;18461;18469;18477;18485;18538:3;18526:9;18517:7;18513:23;18509:33;18506:53;;;18555:1;18552;18545:12;18506:53;18600:23;;;-1:-1:-1;18699:2:57;18684:18;;18671:32;18712:33;18671:32;18712:33;:::i;:::-;18764:7;-1:-1:-1;18823:2:57;18808:18;;18795:32;18836:33;18795:32;18836:33;:::i;:::-;18888:7;-1:-1:-1;18947:2:57;18932:18;;18919:32;18960:33;18919:32;18960:33;:::i;:::-;19012:7;-1:-1:-1;19092:3:57;19077:19;;19064:33;;-1:-1:-1;19174:3:57;19159:19;;19146:33;19202:18;19191:30;;19188:50;;;19234:1;19231;19224:12;19188:50;19273:83;19348:7;19339:6;19328:9;19324:22;19273:83;:::i;:::-;18282:1134;;;;-1:-1:-1;18282:1134:57;;-1:-1:-1;18282:1134:57;;;;19247:109;;-1:-1:-1;;;18282:1134:57:o;19421:679::-;19539:6;19547;19555;19563;19616:3;19604:9;19595:7;19591:23;19587:33;19584:53;;;19633:1;19630;19623:12;19584:53;19656:57;19705:7;19694:9;19656:57;:::i;:::-;19646:67;;19763:3;19752:9;19748:19;19735:33;19777:31;19802:5;19777:31;:::i;:::-;19827:5;-1:-1:-1;19883:3:57;19868:19;;19855:33;19911:18;19900:30;;19897:50;;;19943:1;19940;19933:12;20294:247;20353:6;20406:2;20394:9;20385:7;20381:23;20377:32;20374:52;;;20422:1;20419;20412:12;20374:52;20461:9;20448:23;20480:31;20505:5;20480:31;:::i;21509:182::-;21566:6;21619:2;21607:9;21598:7;21594:23;21590:32;21587:52;;;21635:1;21632;21625:12;21587:52;21658:27;21675:9;21658:27;:::i;22756:271::-;22939:6;22931;22926:3;22913:33;22895:3;22965:16;;22990:13;;;22965:16;22756:271;-1:-1:-1;22756:271:57:o;24305:325::-;24393:6;24388:3;24381:19;24445:6;24438:5;24431:4;24426:3;24422:14;24409:43;;24497:1;24490:4;24481:6;24476:3;24472:16;24468:27;24461:38;24363:3;24619:4;24549:66;24544:2;24536:6;24532:15;24528:88;24523:3;24519:98;24515:109;24508:116;;24305:325;;;;:::o;24635:2027::-;24881:2;24893:21;;;24866:18;;24949:22;;;-1:-1:-1;25002:2:57;25051:1;25047:14;;;25032:30;;25028:39;;;24987:18;;25090:6;-1:-1:-1;25167:66:57;25142:14;25138:27;;;25134:100;25243:1390;25257:6;25254:1;25251:13;25243:1390;;;25346:66;25334:9;25326:6;25322:22;25318:95;25313:3;25306:108;25466:6;25453:20;25520:2;25500:18;25496:27;25486:55;;25537:1;25534;25527:12;25486:55;25567:31;;25626:19;;25658:33;25626:19;25658:33;:::i;:::-;25732:42;25719:56;25704:72;;25853:2;25842:14;;;25829:28;25877:15;;;25870:32;25967:2;25956:14;;25943:28;26028:14;26024:26;;;26052:66;26020:99;25994:126;;25984:154;;26134:1;26131;26124:12;25984:154;26166:32;26287:2;26274:16;;;26225:21;26317:18;26306:30;;26303:50;;;26349:1;26346;26339:12;26303:50;26402:6;26386:14;26382:27;26373:7;26369:41;26366:61;;;26423:1;26420;26413:12;26366:61;26464:4;26459:2;26451:6;26447:15;26440:29;26492:61;26547:4;26539:6;26535:17;26527:6;26518:7;26492:61;:::i;:::-;26482:71;;;;26588:2;26580:6;26576:15;26566:25;;26620:2;26615:3;26611:12;26604:19;;25279:1;25276;25272:9;25267:14;;25243:1390;;;-1:-1:-1;26650:6:57;;24635:2027;-1:-1:-1;;;;;;;24635:2027:57:o;26667:276::-;26725:6;26778:2;26766:9;26757:7;26753:23;26749:32;26746:52;;;26794:1;26791;26784:12;26746:52;26833:9;26820:23;26883:10;26876:5;26872:22;26865:5;26862:33;26852:61;;26909:1;26906;26899:12;26948:580;27025:4;27031:6;27091:11;27078:25;27181:66;27170:8;27154:14;27150:29;27146:102;27126:18;27122:127;27112:155;;27263:1;27260;27253:12;27112:155;27290:33;;27342:20;;;-1:-1:-1;27385:18:57;27374:30;;27371:50;;;27417:1;27414;27407:12;27371:50;27450:4;27438:17;;-1:-1:-1;27481:14:57;27477:27;;;27467:38;;27464:58;;;27518:1;27515;27508:12;29729:251;29799:6;29852:2;29840:9;29831:7;29827:23;29823:32;29820:52;;;29868:1;29865;29858:12;29820:52;29900:9;29894:16;29919:31;29944:5;29919:31;:::i;29985:184::-;30037:77;30034:1;30027:88;30134:4;30131:1;30124:15;30158:4;30155:1;30148:15;30174:380;30264:4;30322:11;30309:25;30412:66;30401:8;30385:14;30381:29;30377:102;30357:18;30353:127;30343:155;;30494:1;30491;30484:12;30343:155;30515:33;;;;;30174:380;-1:-1:-1;;30174:380:57:o;30899:1355::-;31198:3;31187:9;31180:22;31258:10;31249:6;31243:13;31239:30;31233:3;31222:9;31218:19;31211:59;31325:4;31317:6;31313:17;31307:24;31301:3;31290:9;31286:19;31279:53;31387:4;31379:6;31375:17;31369:24;31363:3;31352:9;31348:19;31341:53;31450:4;31442:6;31438:17;31432:24;31425:4;31414:9;31410:20;31403:54;31161:4;31504:3;31496:6;31492:16;31486:23;31546:4;31540:3;31529:9;31525:19;31518:33;31574:52;31621:3;31610:9;31606:19;31592:12;31574:52;:::i;:::-;31560:66;;31675:3;31667:6;31663:16;31657:23;31745:66;31733:9;31725:6;31721:22;31717:95;31711:3;31700:9;31696:19;31689:124;31836:41;31870:6;31854:14;31836:41;:::i;:::-;31822:55;;;31926:3;31918:6;31914:16;31908:23;31996:66;31984:9;31976:6;31972:22;31968:95;31962:3;31951:9;31947:19;31940:124;32081:41;32115:6;32099:14;32081:41;:::i;:::-;32073:49;;;;32131:60;32185:4;32174:9;32170:20;32162:6;30819:12;;30807:25;;30881:4;30870:16;;;30864:23;30848:14;;30841:47;30741:153;32131:60;20623:42;20612:54;;32242:4;32227:20;;20600:67;32200:48;20546:127;32259:756;32329:5;32377:4;32365:9;32360:3;32356:19;32352:30;32349:50;;;32395:1;32392;32385:12;32349:50;32448:4;32442:11;;;32480:17;;32527:18;32512:34;;32548:22;;;32509:62;32506:242;;;32604:77;32601:1;32594:88;32705:4;32702:1;32695:15;32733:4;32730:1;32723:15;32506:242;32764:4;32757:24;32850:16;;32875:23;;32964:2;32949:18;;;32943:25;32984:15;;;32977:32;;;;-1:-1:-1;32799:6:57;32259:756;-1:-1:-1;32259:756:57:o;33020:1095::-;33161:6;33169;33213:9;33204:7;33200:23;33243:3;33239:2;33235:12;33232:32;;;33260:1;33257;33250:12;33232:32;33284:4;33280:2;33276:13;33273:33;;;33302:1;33299;33292:12;33273:33;-1:-1:-1;33355:2:57;33349:9;33397:4;33385:17;;33432:18;33417:34;;33453:22;;;33414:62;33411:242;;;33509:77;33506:1;33499:88;33610:4;33607:1;33600:15;33638:4;33635:1;33628:15;33411:242;33669:2;33662:22;33708:16;;33693:32;;33768:2;33753:18;;33747:25;33812:18;33801:30;;33791:41;;33781:69;;33846:1;33843;33836:12;33781:69;33878:2;33866:15;;33859:30;33922:70;33984:7;33979:2;33964:18;;33922:70;:::i;:::-;33917:2;33905:15;;33898:95;33909:6;-1:-1:-1;34037:72:57;34101:7;34094:4;34079:20;;34037:72;:::i;:::-;34027:82;;33020:1095;;;;;:::o;34351:230::-;34421:6;34474:2;34462:9;34453:7;34449:23;34445:32;34442:52;;;34490:1;34487;34480:12;34442:52;-1:-1:-1;34535:16:57;;34351:230;-1:-1:-1;34351:230:57:o;36587:826::-;36936:6;36925:9;36918:25;36991:10;36983:6;36979:23;36974:2;36963:9;36959:18;36952:51;37039:6;37034:2;37023:9;37019:18;37012:34;37094:42;37086:6;37082:55;37077:2;37066:9;37062:18;37055:83;37175:6;37169:3;37158:9;37154:19;37147:35;37219:6;37213:3;37202:9;37198:19;37191:35;37275:10;37267:6;37263:23;37257:3;37246:9;37242:19;37235:52;37324:3;37318;37307:9;37303:19;37296:32;36899:4;37345:62;37402:3;37391:9;37387:19;37379:6;37371;37345:62;:::i;:::-;37337:70;36587:826;-1:-1:-1;;;;;;;;;;;36587:826:57:o;37418:1486::-;37860:4;37905:6;37892:20;37921:31;37946:5;37921:31;:::i;:::-;37990:42;37979:54;;;37961:73;;38104:4;38092:17;;;38079:31;38126:20;;;38119:37;38226:4;38214:17;;;38201:31;38248:20;;;38241:37;38348:4;38336:17;;;38323:31;38370:20;;;38363:37;38441:13;;38437:62;;38431:3;38416:19;;38409:91;38543:17;;38537:24;38531:3;38516:19;;38509:53;20612:54;;38613:3;38598:19;;20600:67;38655:6;38649:3;38638:9;38634:19;38627:35;38699:3;38693;38682:9;38678:19;38671:32;38726:46;38767:3;38756:9;38752:19;38744:6;38726:46;:::i;:::-;38821:9;38813:6;38809:22;38803:3;38792:9;38788:19;38781:51;38849:49;38891:6;38883;38875;38849:49;:::i;:::-;38841:57;37418:1486;-1:-1:-1;;;;;;;;;;37418:1486:57:o;40517:301::-;40646:3;40684:6;40678:13;40730:6;40723:4;40715:6;40711:17;40706:3;40700:37;40792:1;40756:16;;40781:13;;;-1:-1:-1;40756:16:57;40517:301;-1:-1:-1;40517:301:57:o;40823:277::-;40890:6;40943:2;40931:9;40922:7;40918:23;40914:32;40911:52;;;40959:1;40956;40949:12;40911:52;40991:9;40985:16;41044:5;41037:13;41030:21;41023:5;41020:32;41010:60;;41066:1;41063;41056:12","linkReferences":{},"immutableReferences":{"2666":[{"start":1261,"length":32},{"start":2076,"length":32},{"start":6784,"length":32},{"start":6997,"length":32}],"2670":[{"start":502,"length":32},{"start":5446,"length":32},{"start":7082,"length":32},{"start":8464,"length":32},{"start":8607,"length":32}],"2674":[{"start":976,"length":32},{"start":7168,"length":32},{"start":8060,"length":32}],"2696":[{"start":741,"length":32},{"start":5229,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","ERC20_SWAP_CONTRACT()":"2067b7ca","PERMIT2()":"6afdd850","SWAP_CONTRACT()":"cf3afa51","TYPEHASH_CCTP_DATA()":"660a2dce","TYPEHASH_CLAIM()":"ebb7af92","TYPEHASH_CLAIM_CALL()":"73e09a78","TYPEHASH_CLAIM_CCTP()":"2c886673","TYPEHASH_CLAIM_SEND()":"6531efdf","TYPEHASH_EXECUTE_LOCK_ERC20()":"ea8cd088","TYPEHASH_SEND_DATA()":"4a0870ff","TYPESTRING_EXECUTE_LOCK_ERC20()":"b47ec1a0","VERSION()":"ffa1ad74","claimCall((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),address,bytes)":"3503c73d","claimCall((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)":"5b2acb70","claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes)":"fe54c240","claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)":"da2271c3","claimERC20Execute((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256)":"9667434f","claimERC20Execute((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256,address,uint8,bytes32,bytes32)":"211f3440","claimERC20ExecuteCctp((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,address,(uint32,bytes32,bytes32,uint256,uint32,bytes),(uint256,uint8,bytes32,bytes32))":"870e70e4","claimERC20ExecuteOft((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,address,(uint32,bytes32,bytes,bytes,bytes),(uint256,uint256,address,uint8,bytes32,bytes32))":"15ee82d3","claimExecute((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256)":"891d6080","claimExecute((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256,address,uint8,bytes32,bytes32)":"a7b77acb","executeAndLock(bytes32,address,address,uint256,(address,uint256,bytes)[])":"1bcd0c09","executeAndLockERC20(bytes32,address,address,address,uint256,(address,uint256,bytes)[])":"ea81272e","executeAndLockERC20WithPermit2(bytes32,address,address,address,uint256,(address,uint256,bytes)[],((address,uint256),uint256,uint256),address,bytes)":"a66bd06e","executeCctp((address,uint256,bytes)[],address,address,(uint32,bytes32,bytes32,uint256,uint32,bytes),uint256)":"a3f7ef98","executeOft((address,uint256,bytes)[],address,address,(uint32,bytes32,bytes,bytes,bytes),uint256,uint256,address)":"215ea30a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.33+commit.64118f21\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"swapContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"erc20SwapContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permit2Contract\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimInvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_SWAP_CONTRACT\",\"outputs\":[{\"internalType\":\"contract ERC20Swap\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract ISignatureTransfer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_CONTRACT\",\"outputs\":[{\"internalType\":\"contract EtherSwap\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_CCTP_DATA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_CLAIM\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_CLAIM_CALL\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_CLAIM_CCTP\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_CLAIM_SEND\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_EXECUTE_LOCK_ERC20\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPEHASH_SEND_DATA\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TYPESTRING_EXECUTE_LOCK_ERC20\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"claimCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"claimCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Erc20Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"claimERC20Call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Erc20Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"callee\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"claimERC20Call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Erc20Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"claimERC20Execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Erc20Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"claimERC20Execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Erc20Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenMessenger\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"destinationDomain\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mintRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationCaller\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maxFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"minFinalityThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.CctpData\",\"name\":\"cctpData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.ClaimCctpAuthorization\",\"name\":\"auth\",\"type\":\"tuple\"}],\"name\":\"claimERC20ExecuteCctp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Erc20Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oft\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.SendData\",\"name\":\"sendData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.ClaimSendAuthorization\",\"name\":\"auth\",\"type\":\"tuple\"}],\"name\":\"claimERC20ExecuteOft\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"claimExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"preimage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Router.Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"claimExecute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"executeAndLock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"executeAndLockERC20\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"preimageHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"claimAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timelock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.TokenPermissions\",\"name\":\"permitted\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct ISignatureTransfer.PermitTransferFrom\",\"name\":\"permit\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"executeAndLockERC20WithPermit2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenMessenger\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"destinationDomain\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mintRecipient\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationCaller\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maxFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"minFinalityThreshold\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.CctpData\",\"name\":\"cctpData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"}],\"name\":\"executeCctp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"oft\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct Router.SendData\",\"name\":\"sendData\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundAddress\",\"type\":\"address\"}],\"name\":\"executeOft\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"A contract that enables atomic claiming from EtherSwap and ERC20Swap contracts followed by arbitrary call execution and fund sweeping. This allows users to claim their funds and immediately use them in other operations like DEX trades, all in a single transaction.\",\"errors\":{\"CallFailed(uint256)\":[{\"details\":\"Thrown when one of the arbitrary calls fails\",\"params\":{\"index\":\"The index of the failed call in the calls array\"}}],\"ClaimInvalidAddress()\":[{\"details\":\"Thrown when the claimer address doesn't match the transaction sender\"}],\"InsufficientBalance()\":[{\"details\":\"Thrown when the router's balance is below the required minimum for the operation\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"SwapCallNotAllowed()\":[{\"details\":\"Thrown when a call targets a swap contract\"}]},\"kind\":\"dev\",\"methods\":{\"claimCall((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),address,bytes)\":{\"details\":\"Claims funds from the EtherSwap contract and performs a single external call forwarding the claimed Ether\",\"params\":{\"callData\":\"The encoded function calldata for the call\",\"callee\":\"The contract address to call after claiming\",\"claim\":\"The claim parameters for the EtherSwap contract\"}},\"claimCall((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)\":{\"details\":\"Claims funds from the EtherSwap contract and performs a single external call, authorized via EIP-712 signature\",\"params\":{\"callData\":\"The encoded function calldata for the call\",\"callee\":\"The contract address to call after claiming\",\"claim\":\"The claim parameters for the EtherSwap contract\",\"r\":\"First 32 bytes of the EIP-712 signature authorizing this call\",\"s\":\"Second 32 bytes of the EIP-712 signature authorizing this call\",\"v\":\"Recovery identifier (27 or 28); the final byte of a packed 65-byte EIP-712 signature authorizing this call\"}},\"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes)\":{\"details\":\"Claims tokens from the ERC20Swap contract and performs a single external call\",\"params\":{\"callData\":\"The encoded function calldata for the call\",\"callee\":\"The contract address to call after claiming\",\"claim\":\"The claim parameters for the ERC20Swap contract\"}},\"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)\":{\"details\":\"Claims tokens from the ERC20Swap contract and performs a single external call, authorized via EIP-712 signature\",\"params\":{\"callData\":\"The encoded function calldata for the call\",\"callee\":\"The contract address to call after claiming\",\"claim\":\"The claim parameters for the ERC20Swap contract\",\"r\":\"First 32 bytes of the EIP-712 signature authorizing this call\",\"s\":\"Second 32 bytes of the EIP-712 signature authorizing this call\",\"v\":\"Recovery identifier (27 or 28); the final byte of a packed 65-byte EIP-712 signature authorizing this call\"}},\"claimERC20Execute((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256)\":{\"details\":\"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then sweeps remaining funds\",\"params\":{\"calls\":\"Array of arbitrary calls to execute after claiming\",\"claim\":\"The claim parameters for the ERC20Swap contract\",\"minAmountOut\":\"The minimum amount to sweep to the claimer\",\"token\":\"The token address to sweep (address(0) for Ether)\"}},\"claimERC20Execute((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256,address,uint8,bytes32,bytes32)\":{\"details\":\"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then sweeps remaining funds to a specified destination This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim\",\"params\":{\"calls\":\"Array of arbitrary calls to execute after claiming\",\"claim\":\"The claim parameters for the ERC20Swap contract\",\"destination\":\"The address where the swept funds will be sent\",\"minAmountOut\":\"The minimum amount to sweep to the destination\",\"r\":\"First 32 bytes of the signature\",\"s\":\"Second 32 bytes of the signature\",\"token\":\"The token address to sweep (address(0) for Ether)\",\"v\":\"Recovery identifier (27 or 28); the final byte of a packed 65-byte signature\"}},\"claimERC20ExecuteCctp((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,address,(uint32,bytes32,bytes32,uint256,uint32,bytes),(uint256,uint8,bytes32,bytes32))\":{\"details\":\"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then burns the router's balance through CCTP This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim\",\"params\":{\"auth\":\"The signed authorization for the CCTP burn, including the minimum remaining amount\",\"calls\":\"Array of arbitrary calls to execute after claiming\",\"cctpData\":\"The destination and settlement options for the CCTP burn\",\"claim\":\"The claim parameters for the ERC20Swap contract\",\"token\":\"The token whose router balance will be burned\",\"tokenMessenger\":\"The CCTP Token Messenger contract that executes the burn\"}},\"claimERC20ExecuteOft((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,address,(uint32,bytes32,bytes,bytes,bytes),(uint256,uint256,address,uint8,bytes32,bytes32))\":{\"details\":\"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then sends the router's balance through an OFT token This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim\",\"params\":{\"auth\":\"The signed authorization for the OFT send, including `minAmountLd`, `lzTokenFee`, and the refund address. The router derives the native fee from its post-call Ether balance.\",\"calls\":\"Array of arbitrary calls to execute after claiming\",\"claim\":\"The claim parameters for the ERC20Swap contract\",\"oft\":\"The OFT contract that executes the cross-chain send\",\"sendData\":\"The destination and message options for the OFT send. The router derives both `amountLD` and `minAmountLD` from the post-call token balance.\",\"token\":\"The token whose router balance will be sent\"}},\"claimExecute((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256)\":{\"details\":\"Claims funds from the swap contract, executes arbitrary calls, then sweeps remaining funds\",\"params\":{\"calls\":\"Array of arbitrary calls to execute after claiming\",\"claim\":\"The claim parameters for the EtherSwap contract\",\"minAmountOut\":\"The minimum amount to sweep to the claimer\",\"token\":\"The token address to sweep (address(0) for Ether)\"}},\"claimExecute((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256,address,uint8,bytes32,bytes32)\":{\"details\":\"Claims funds from the swap contract, executes arbitrary calls, then sweeps remaining funds to a specified destination This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim\",\"params\":{\"calls\":\"Array of arbitrary calls to execute after claiming\",\"claim\":\"The claim parameters for the EtherSwap contract\",\"destination\":\"The address where the swept funds will be sent\",\"minAmountOut\":\"The minimum amount to sweep to the destination\",\"r\":\"First 32 bytes of the signature\",\"s\":\"Second 32 bytes of the signature\",\"token\":\"The token address to sweep (address(0) for Ether)\",\"v\":\"Recovery identifier (27 or 28); the final byte of a packed 65-byte signature\"}},\"constructor\":{\"details\":\"Constructor sets the EtherSwap and ERC20Swap contract addresses\",\"params\":{\"erc20SwapContract\":\"The address of the ERC20Swap contract to interact with\",\"permit2Contract\":\"The address of the Permit2 contract to interact with\",\"swapContract\":\"The address of the EtherSwap contract to interact with\"}},\"executeAndLock(bytes32,address,address,uint256,(address,uint256,bytes)[])\":{\"details\":\"Executes arbitrary calls, then locks the remaining Ether balance in the swap contract\",\"params\":{\"calls\":\"Array of arbitrary calls to execute before locking\",\"claimAddress\":\"The address that can claim the locked Ether\",\"preimageHash\":\"The preimage hash for the swap\",\"refundAddress\":\"The address that can refund the locked Ether\",\"timelock\":\"The block height after which a refund becomes possible\"}},\"executeAndLockERC20(bytes32,address,address,address,uint256,(address,uint256,bytes)[])\":{\"details\":\"Executes arbitrary calls, then locks the remaining token balance in the swap contract\",\"params\":{\"calls\":\"Array of arbitrary calls to execute before locking\",\"claimAddress\":\"The address that can claim the locked tokens\",\"preimageHash\":\"The preimage hash for the swap\",\"refundAddress\":\"The address that can refund the locked tokens\",\"timelock\":\"The block height after which a refund becomes possible\",\"tokenAddress\":\"The ERC20 token address to lock\"}},\"executeAndLockERC20WithPermit2(bytes32,address,address,address,uint256,(address,uint256,bytes)[],((address,uint256),uint256,uint256),address,bytes)\":{\"details\":\"Executes arbitrary calls, transfers tokens via Permit2, then locks the remaining token balance\",\"params\":{\"calls\":\"Array of arbitrary calls to execute before locking\",\"claimAddress\":\"The address that can claim the locked tokens\",\"owner\":\"The address of the token owner who signed the permit\",\"permit\":\"Permit2 transfer permit signed by the token owner\",\"preimageHash\":\"The preimage hash for the swap\",\"refundAddress\":\"The address that can refund the locked tokens\",\"signature\":\"Signature over the Permit2 transfer permit and witness data\",\"timelock\":\"The block height after which a refund becomes possible\",\"tokenAddress\":\"The ERC20 token address to lock\"}},\"executeCctp((address,uint256,bytes)[],address,address,(uint32,bytes32,bytes32,uint256,uint32,bytes),uint256)\":{\"details\":\"Executes arbitrary calls, then burns the router's token balance through CCTP\",\"params\":{\"calls\":\"Array of arbitrary calls to execute before the CCTP burn\",\"cctpData\":\"The destination and settlement options for the CCTP burn\",\"minAmount\":\"The minimum amount that must remain for the CCTP burn after executing `calls`\",\"token\":\"The token whose router balance will be burned\",\"tokenMessenger\":\"The CCTP Token Messenger contract that executes the burn\"}},\"executeOft((address,uint256,bytes)[],address,address,(uint32,bytes32,bytes,bytes,bytes),uint256,uint256,address)\":{\"details\":\"Executes arbitrary calls, then sends the router's token balance through an OFT token\",\"params\":{\"calls\":\"Array of arbitrary calls to execute before the OFT send\",\"lzTokenFee\":\"The LayerZero token fee to use for the send\",\"minAmountLd\":\"The minimum amount that must remain for the OFT send after executing `calls`\",\"oft\":\"The OFT contract that executes the cross-chain send\",\"refundAddress\":\"The address that receives any excess native fee refund from the OFT\",\"sendData\":\"The destination and message options for the OFT send\",\"token\":\"The token whose router balance will be sent\"}}},\"stateVariables\":{\"ERC20_SWAP_CONTRACT\":{\"details\":\"The ERC20Swap contract instance this router interacts with\"},\"PERMIT2\":{\"details\":\"The Permit2 contract instance used for signature transfers\"},\"SWAP_CONTRACT\":{\"details\":\"The EtherSwap contract instance this router interacts with\"},\"VERSION\":{\"details\":\"Version of the contract used for compatibility checks\"}},\"title\":\"Router\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes)\":{\"notice\":\"This function does not sweep remaining funds to the claimer, so ensure that the callee consumes all tokens\"},\"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)\":{\"notice\":\"This function does not sweep remaining funds to the claimer, so ensure that the callee consumes all tokens\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Router.sol\":\"Router\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[\":@openzeppelin/contracts/=solidity-lib/openzeppelin-contracts/contracts/\",\":ds-test/=solidity-lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=solidity-lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=solidity-lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=solidity-lib/forge-std/src/\",\":halmos-cheatcodes/=solidity-lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=solidity-lib/openzeppelin-contracts/\",\":permit2/=solidity-lib/permit2/src/\",\":solmate/=solidity-lib/permit2/lib/solmate/\"]},\"sources\":{\"contracts/ERC20Swap.sol\":{\"keccak256\":\"0x4c89458aa8967b85f27a19b4df1954860c7a975324ba8d149eafe0f470156ae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://182a66a2e5652143dea42a459b572cbc80e3ec7087a871448f3b3d59adea0dfa\",\"dweb:/ipfs/QmQ1tviXEyynbQfiMJrUgvmtQnyE1GLadpqKb1xU6mVLD5\"]},\"contracts/EtherSwap.sol\":{\"keccak256\":\"0x92b9a4f446a429e9cf4b50115b8fed30c029ae1664ee1066838aa73f3c2965cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f75cdf232aa6b98cda71845ae9c8a10afe53efa35c9e6ccff34934dbb8daa89\",\"dweb:/ipfs/QmPJLaQVKFjLWAim45qCHCeqdVFBxokCbwZbwfpaL1isVo\"]},\"contracts/Router.sol\":{\"keccak256\":\"0xf0e9fc0a82872eed54e8c8fb019b52d0a7ee4571055bfad74e520f9dac50e5ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dec93d553851cb43152853764cc35b2ac54d89fa9b677155076338f1aeeaeba5\",\"dweb:/ipfs/QmaCim2exKnoN6f2GAwHB9ZRPWBk8fvwbDJLES84Vas3K9\"]},\"contracts/TransferHelper.sol\":{\"keccak256\":\"0xcefbce6839aac69609f9cd24891bbe5ab3b074707208668afb69d1cc478d28b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d447f900bb1e5b98fd978d3302c59baa1a3d855a5cabf63c65cf4ef69e8e5614\",\"dweb:/ipfs/QmdQJWux8bqSg2NXBmmEfB9pEnm1ex1mJbZ4kNtqvs199C\"]},\"contracts/interfaces/ITokenMessengerV2.sol\":{\"keccak256\":\"0x43b9cebdb58e9db04e9175a50f2cfd323596583f0101bb15a823c94ba2afdbb9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34665dd12f17109a81acf30b2be772538efe829fa156002b3af14443f254e9a6\",\"dweb:/ipfs/QmccTYbN3pdvWvLd9ubyCcJG7CfSW6rDfXfSxF3CDJTmcE\"]},\"contracts/interfaces/OFT.sol\":{\"keccak256\":\"0x40b7c630bc92b1db5f15dbca0e739d0a1afe97488c84f74a634025eda95cff31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://214185eaee9df0da3117825e12aa73f5f7492473d443f17e2f7a3b05fd05c892\",\"dweb:/ipfs/QmYTEvudYPdxGSBhhDWnCvkE876JyJioKpki8RykopHN13\"]},\"solidity-lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"solidity-lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"solidity-lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"solidity-lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"solidity-lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0\",\"dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j\"]},\"solidity-lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"solidity-lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"solidity-lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"solidity-lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"solidity-lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.33+commit.64118f21"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"swapContract","type":"address"},{"internalType":"address","name":"erc20SwapContract","type":"address"},{"internalType":"address","name":"permit2Contract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"type":"error","name":"CallFailed"},{"inputs":[],"type":"error","name":"ClaimInvalidAddress"},{"inputs":[],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"SwapCallNotAllowed"},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ERC20_SWAP_CONTRACT","outputs":[{"internalType":"contract ERC20Swap","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PERMIT2","outputs":[{"internalType":"contract ISignatureTransfer","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SWAP_CONTRACT","outputs":[{"internalType":"contract EtherSwap","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_CCTP_DATA","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_CLAIM","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_CLAIM_CALL","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_CLAIM_CCTP","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_CLAIM_SEND","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_EXECUTE_LOCK_ERC20","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPEHASH_SEND_DATA","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TYPESTRING_EXECUTE_LOCK_ERC20","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VERSION","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"struct Router.Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"claimCall"},{"inputs":[{"internalType":"struct Router.Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimCall"},{"inputs":[{"internalType":"struct Router.Erc20Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimERC20Call"},{"inputs":[{"internalType":"struct Router.Erc20Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"address","name":"callee","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"claimERC20Call"},{"inputs":[{"internalType":"struct Router.Erc20Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimERC20Execute"},{"inputs":[{"internalType":"struct Router.Erc20Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claimERC20Execute"},{"inputs":[{"internalType":"struct Router.Erc20Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"tokenMessenger","type":"address"},{"internalType":"struct Router.CctpData","name":"cctpData","type":"tuple","components":[{"internalType":"uint32","name":"destinationDomain","type":"uint32"},{"internalType":"bytes32","name":"mintRecipient","type":"bytes32"},{"internalType":"bytes32","name":"destinationCaller","type":"bytes32"},{"internalType":"uint256","name":"maxFee","type":"uint256"},{"internalType":"uint32","name":"minFinalityThreshold","type":"uint32"},{"internalType":"bytes","name":"hookData","type":"bytes"}]},{"internalType":"struct Router.ClaimCctpAuthorization","name":"auth","type":"tuple","components":[{"internalType":"uint256","name":"minAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]}],"stateMutability":"payable","type":"function","name":"claimERC20ExecuteCctp"},{"inputs":[{"internalType":"struct Router.Erc20Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"oft","type":"address"},{"internalType":"struct Router.SendData","name":"sendData","type":"tuple","components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}]},{"internalType":"struct Router.ClaimSendAuthorization","name":"auth","type":"tuple","components":[{"internalType":"uint256","name":"minAmountLd","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]}],"stateMutability":"payable","type":"function","name":"claimERC20ExecuteOft"},{"inputs":[{"internalType":"struct Router.Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claimExecute"},{"inputs":[{"internalType":"struct Router.Claim","name":"claim","type":"tuple","components":[{"internalType":"bytes32","name":"preimage","type":"bytes32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}]},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"minAmountOut","type":"uint256"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimExecute"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeAndLock"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeAndLockERC20"},{"inputs":[{"internalType":"bytes32","name":"preimageHash","type":"bytes32"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"claimAddress","type":"address"},{"internalType":"address","name":"refundAddress","type":"address"},{"internalType":"uint256","name":"timelock","type":"uint256"},{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"struct ISignatureTransfer.PermitTransferFrom","name":"permit","type":"tuple","components":[{"internalType":"struct ISignatureTransfer.TokenPermissions","name":"permitted","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}]},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeAndLockERC20WithPermit2"},{"inputs":[{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"tokenMessenger","type":"address"},{"internalType":"struct Router.CctpData","name":"cctpData","type":"tuple","components":[{"internalType":"uint32","name":"destinationDomain","type":"uint32"},{"internalType":"bytes32","name":"mintRecipient","type":"bytes32"},{"internalType":"bytes32","name":"destinationCaller","type":"bytes32"},{"internalType":"uint256","name":"maxFee","type":"uint256"},{"internalType":"uint32","name":"minFinalityThreshold","type":"uint32"},{"internalType":"bytes","name":"hookData","type":"bytes"}]},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"executeCctp"},{"inputs":[{"internalType":"struct Router.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"oft","type":"address"},{"internalType":"struct Router.SendData","name":"sendData","type":"tuple","components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}]},{"internalType":"uint256","name":"minAmountLd","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"},{"internalType":"address","name":"refundAddress","type":"address"}],"stateMutability":"payable","type":"function","name":"executeOft"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"claimCall((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),address,bytes)":{"details":"Claims funds from the EtherSwap contract and performs a single external call forwarding the claimed Ether","params":{"callData":"The encoded function calldata for the call","callee":"The contract address to call after claiming","claim":"The claim parameters for the EtherSwap contract"}},"claimCall((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)":{"details":"Claims funds from the EtherSwap contract and performs a single external call, authorized via EIP-712 signature","params":{"callData":"The encoded function calldata for the call","callee":"The contract address to call after claiming","claim":"The claim parameters for the EtherSwap contract","r":"First 32 bytes of the EIP-712 signature authorizing this call","s":"Second 32 bytes of the EIP-712 signature authorizing this call","v":"Recovery identifier (27 or 28); the final byte of a packed 65-byte EIP-712 signature authorizing this call"}},"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes)":{"details":"Claims tokens from the ERC20Swap contract and performs a single external call","params":{"callData":"The encoded function calldata for the call","callee":"The contract address to call after claiming","claim":"The claim parameters for the ERC20Swap contract"}},"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)":{"details":"Claims tokens from the ERC20Swap contract and performs a single external call, authorized via EIP-712 signature","params":{"callData":"The encoded function calldata for the call","callee":"The contract address to call after claiming","claim":"The claim parameters for the ERC20Swap contract","r":"First 32 bytes of the EIP-712 signature authorizing this call","s":"Second 32 bytes of the EIP-712 signature authorizing this call","v":"Recovery identifier (27 or 28); the final byte of a packed 65-byte EIP-712 signature authorizing this call"}},"claimERC20Execute((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256)":{"details":"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then sweeps remaining funds","params":{"calls":"Array of arbitrary calls to execute after claiming","claim":"The claim parameters for the ERC20Swap contract","minAmountOut":"The minimum amount to sweep to the claimer","token":"The token address to sweep (address(0) for Ether)"}},"claimERC20Execute((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256,address,uint8,bytes32,bytes32)":{"details":"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then sweeps remaining funds to a specified destination This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim","params":{"calls":"Array of arbitrary calls to execute after claiming","claim":"The claim parameters for the ERC20Swap contract","destination":"The address where the swept funds will be sent","minAmountOut":"The minimum amount to sweep to the destination","r":"First 32 bytes of the signature","s":"Second 32 bytes of the signature","token":"The token address to sweep (address(0) for Ether)","v":"Recovery identifier (27 or 28); the final byte of a packed 65-byte signature"}},"claimERC20ExecuteCctp((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,address,(uint32,bytes32,bytes32,uint256,uint32,bytes),(uint256,uint8,bytes32,bytes32))":{"details":"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then burns the router's balance through CCTP This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim","params":{"auth":"The signed authorization for the CCTP burn, including the minimum remaining amount","calls":"Array of arbitrary calls to execute after claiming","cctpData":"The destination and settlement options for the CCTP burn","claim":"The claim parameters for the ERC20Swap contract","token":"The token whose router balance will be burned","tokenMessenger":"The CCTP Token Messenger contract that executes the burn"}},"claimERC20ExecuteOft((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,address,(uint32,bytes32,bytes,bytes,bytes),(uint256,uint256,address,uint8,bytes32,bytes32))":{"details":"Claims tokens from the ERC20Swap contract, executes arbitrary calls, then sends the router's balance through an OFT token This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim","params":{"auth":"The signed authorization for the OFT send, including `minAmountLd`, `lzTokenFee`, and the refund address. The router derives the native fee from its post-call Ether balance.","calls":"Array of arbitrary calls to execute after claiming","claim":"The claim parameters for the ERC20Swap contract","oft":"The OFT contract that executes the cross-chain send","sendData":"The destination and message options for the OFT send. The router derives both `amountLD` and `minAmountLD` from the post-call token balance.","token":"The token whose router balance will be sent"}},"claimExecute((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256)":{"details":"Claims funds from the swap contract, executes arbitrary calls, then sweeps remaining funds","params":{"calls":"Array of arbitrary calls to execute after claiming","claim":"The claim parameters for the EtherSwap contract","minAmountOut":"The minimum amount to sweep to the claimer","token":"The token address to sweep (address(0) for Ether)"}},"claimExecute((bytes32,uint256,address,uint256,uint8,bytes32,bytes32),(address,uint256,bytes)[],address,uint256,address,uint8,bytes32,bytes32)":{"details":"Claims funds from the swap contract, executes arbitrary calls, then sweeps remaining funds to a specified destination This version uses EIP-712 signature verification to allow the claimer to authorize someone else to execute the claim","params":{"calls":"Array of arbitrary calls to execute after claiming","claim":"The claim parameters for the EtherSwap contract","destination":"The address where the swept funds will be sent","minAmountOut":"The minimum amount to sweep to the destination","r":"First 32 bytes of the signature","s":"Second 32 bytes of the signature","token":"The token address to sweep (address(0) for Ether)","v":"Recovery identifier (27 or 28); the final byte of a packed 65-byte signature"}},"constructor":{"details":"Constructor sets the EtherSwap and ERC20Swap contract addresses","params":{"erc20SwapContract":"The address of the ERC20Swap contract to interact with","permit2Contract":"The address of the Permit2 contract to interact with","swapContract":"The address of the EtherSwap contract to interact with"}},"executeAndLock(bytes32,address,address,uint256,(address,uint256,bytes)[])":{"details":"Executes arbitrary calls, then locks the remaining Ether balance in the swap contract","params":{"calls":"Array of arbitrary calls to execute before locking","claimAddress":"The address that can claim the locked Ether","preimageHash":"The preimage hash for the swap","refundAddress":"The address that can refund the locked Ether","timelock":"The block height after which a refund becomes possible"}},"executeAndLockERC20(bytes32,address,address,address,uint256,(address,uint256,bytes)[])":{"details":"Executes arbitrary calls, then locks the remaining token balance in the swap contract","params":{"calls":"Array of arbitrary calls to execute before locking","claimAddress":"The address that can claim the locked tokens","preimageHash":"The preimage hash for the swap","refundAddress":"The address that can refund the locked tokens","timelock":"The block height after which a refund becomes possible","tokenAddress":"The ERC20 token address to lock"}},"executeAndLockERC20WithPermit2(bytes32,address,address,address,uint256,(address,uint256,bytes)[],((address,uint256),uint256,uint256),address,bytes)":{"details":"Executes arbitrary calls, transfers tokens via Permit2, then locks the remaining token balance","params":{"calls":"Array of arbitrary calls to execute before locking","claimAddress":"The address that can claim the locked tokens","owner":"The address of the token owner who signed the permit","permit":"Permit2 transfer permit signed by the token owner","preimageHash":"The preimage hash for the swap","refundAddress":"The address that can refund the locked tokens","signature":"Signature over the Permit2 transfer permit and witness data","timelock":"The block height after which a refund becomes possible","tokenAddress":"The ERC20 token address to lock"}},"executeCctp((address,uint256,bytes)[],address,address,(uint32,bytes32,bytes32,uint256,uint32,bytes),uint256)":{"details":"Executes arbitrary calls, then burns the router's token balance through CCTP","params":{"calls":"Array of arbitrary calls to execute before the CCTP burn","cctpData":"The destination and settlement options for the CCTP burn","minAmount":"The minimum amount that must remain for the CCTP burn after executing `calls`","token":"The token whose router balance will be burned","tokenMessenger":"The CCTP Token Messenger contract that executes the burn"}},"executeOft((address,uint256,bytes)[],address,address,(uint32,bytes32,bytes,bytes,bytes),uint256,uint256,address)":{"details":"Executes arbitrary calls, then sends the router's token balance through an OFT token","params":{"calls":"Array of arbitrary calls to execute before the OFT send","lzTokenFee":"The LayerZero token fee to use for the send","minAmountLd":"The minimum amount that must remain for the OFT send after executing `calls`","oft":"The OFT contract that executes the cross-chain send","refundAddress":"The address that receives any excess native fee refund from the OFT","sendData":"The destination and message options for the OFT send","token":"The token whose router balance will be sent"}}},"version":1},"userdoc":{"kind":"user","methods":{"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes)":{"notice":"This function does not sweep remaining funds to the claimer, so ensure that the callee consumes all tokens"},"claimERC20Call((bytes32,uint256,address,address,uint256,uint8,bytes32,bytes32),address,bytes,uint8,bytes32,bytes32)":{"notice":"This function does not sweep remaining funds to the claimer, so ensure that the callee consumes all tokens"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=solidity-lib/openzeppelin-contracts/contracts/","ds-test/=solidity-lib/forge-std/lib/ds-test/src/","erc4626-tests/=solidity-lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=solidity-lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=solidity-lib/forge-std/src/","halmos-cheatcodes/=solidity-lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=solidity-lib/openzeppelin-contracts/","permit2/=solidity-lib/permit2/src/","solmate/=solidity-lib/permit2/lib/solmate/"],"optimizer":{"enabled":true,"runs":10000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/Router.sol":"Router"},"evmVersion":"prague","libraries":{}},"sources":{"contracts/ERC20Swap.sol":{"keccak256":"0x4c89458aa8967b85f27a19b4df1954860c7a975324ba8d149eafe0f470156ae1","urls":["bzz-raw://182a66a2e5652143dea42a459b572cbc80e3ec7087a871448f3b3d59adea0dfa","dweb:/ipfs/QmQ1tviXEyynbQfiMJrUgvmtQnyE1GLadpqKb1xU6mVLD5"],"license":"MIT"},"contracts/EtherSwap.sol":{"keccak256":"0x92b9a4f446a429e9cf4b50115b8fed30c029ae1664ee1066838aa73f3c2965cd","urls":["bzz-raw://0f75cdf232aa6b98cda71845ae9c8a10afe53efa35c9e6ccff34934dbb8daa89","dweb:/ipfs/QmPJLaQVKFjLWAim45qCHCeqdVFBxokCbwZbwfpaL1isVo"],"license":"MIT"},"contracts/Router.sol":{"keccak256":"0xf0e9fc0a82872eed54e8c8fb019b52d0a7ee4571055bfad74e520f9dac50e5ff","urls":["bzz-raw://dec93d553851cb43152853764cc35b2ac54d89fa9b677155076338f1aeeaeba5","dweb:/ipfs/QmaCim2exKnoN6f2GAwHB9ZRPWBk8fvwbDJLES84Vas3K9"],"license":"MIT"},"contracts/TransferHelper.sol":{"keccak256":"0xcefbce6839aac69609f9cd24891bbe5ab3b074707208668afb69d1cc478d28b0","urls":["bzz-raw://d447f900bb1e5b98fd978d3302c59baa1a3d855a5cabf63c65cf4ef69e8e5614","dweb:/ipfs/QmdQJWux8bqSg2NXBmmEfB9pEnm1ex1mJbZ4kNtqvs199C"],"license":"GPL-3.0-or-later"},"contracts/interfaces/ITokenMessengerV2.sol":{"keccak256":"0x43b9cebdb58e9db04e9175a50f2cfd323596583f0101bb15a823c94ba2afdbb9","urls":["bzz-raw://34665dd12f17109a81acf30b2be772538efe829fa156002b3af14443f254e9a6","dweb:/ipfs/QmccTYbN3pdvWvLd9ubyCcJG7CfSW6rDfXfSxF3CDJTmcE"],"license":"MIT"},"contracts/interfaces/OFT.sol":{"keccak256":"0x40b7c630bc92b1db5f15dbca0e739d0a1afe97488c84f74a634025eda95cff31","urls":["bzz-raw://214185eaee9df0da3117825e12aa73f5f7492473d443f17e2f7a3b05fd05c892","dweb:/ipfs/QmYTEvudYPdxGSBhhDWnCvkE876JyJioKpki8RykopHN13"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x304d732678032a9781ae85c8f204c8fba3d3a5e31c02616964e75cfdc5049098","urls":["bzz-raw://299ced486011781dc98f638059678323c03079fefae1482abaa2135b22fa92d0","dweb:/ipfs/QmbZNbcPTBxNvwChavN2kkZZs7xHhYL7mv51KrxMhsMs3j"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53","urls":["bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99","dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"solidity-lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"solidity-lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"solidity-lib/permit2/src/interfaces/ISignatureTransfer.sol":{"keccak256":"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e","urls":["bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317","dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d"],"license":"MIT"}},"version":1},"id":5}