{
    "address": "0xed911640fd86f92fD1337526010adda8F3Eb8344",
    "abi": [
        {
            "inputs": [],
            "name": "EncodedCancel",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "Name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "ResolverEncoding",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "StateEncoding",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "encodedBalance",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "encodedState",
                    "type": "bytes"
                }
            ],
            "name": "create",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRegistryInformation",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "internalType": "address",
                            "name": "definition",
                            "type": "address"
                        },
                        {
                            "internalType": "string",
                            "name": "stateEncoding",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "resolverEncoding",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "encodedCancel",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct RegisteredTransfer",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "encodedBalance",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "encodedState",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "encodedResolver",
                    "type": "bytes"
                }
            ],
            "name": "resolve",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256[2]",
                            "name": "amount",
                            "type": "uint256[2]"
                        },
                        {
                            "internalType": "address payable[2]",
                            "name": "to",
                            "type": "address[2]"
                        }
                    ],
                    "internalType": "struct Balance",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        }
    ],
    "transactionHash": "0x147227adc5f576d8416c2ef43e1694ccf9a74bdc2361e0fd0bc03b4cdeed74f9",
    "receipt": {
        "to": null,
        "from": "0xd4b33434Cb36df9286Ef5132FCFb8062c96aC56E",
        "contractAddress": "0xed911640fd86f92fD1337526010adda8F3Eb8344",
        "transactionIndex": 0,
        "gasUsed": "1069621",
        "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "blockHash": "0x00000e6800001582ad25b46c606460d43167b241121465db1b6d41dfc7424c16",
        "transactionHash": "0x147227adc5f576d8416c2ef43e1694ccf9a74bdc2361e0fd0bc03b4cdeed74f9",
        "logs": [],
        "blockNumber": 2675643,
        "cumulativeGasUsed": "1069621",
        "status": 1,
        "byzantium": true
    },
    "args": [],
    "solcInputHash": "89c55d5a88f10637860a9ea31a1daad3",
    "metadata": "{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EncodedCancel\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ResolverEncoding\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"StateEncoding\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedBalance\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedState\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegistryInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"definition\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"stateEncoding\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"resolverEncoding\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"encodedCancel\",\"type\":\"bytes\"}],\"internalType\":\"struct RegisteredTransfer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedBalance\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedState\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedResolver\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"amount\",\"type\":\"uint256[2]\"},{\"internalType\":\"address payable[2]\",\"name\":\"to\",\"type\":\"address[2]\"}],\"internalType\":\"struct Balance\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Connext <support@connext.network>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Withdraw\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This contract burns the initiator's funds if a mutually signed         withdraw commitment can be generated\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src.sol/transferDefinitions/Withdraw.sol\":\"Withdraw\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.7.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        // Check the signature length\\n        if (signature.length != 65) {\\n            revert(\\\"ECDSA: invalid signature length\\\");\\n        }\\n\\n        // Divide the signature in r, s and v variables\\n        bytes32 r;\\n        bytes32 s;\\n        uint8 v;\\n\\n        // ecrecover takes the signature parameters, and the only way to get them\\n        // currently is to use assembly.\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly {\\n            r := mload(add(signature, 0x20))\\n            s := mload(add(signature, 0x40))\\n            v := byte(0, mload(add(signature, 0x60)))\\n        }\\n\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            revert(\\\"ECDSA: invalid signature 's' value\\\");\\n        }\\n\\n        if (v != 27 && v != 28) {\\n            revert(\\\"ECDSA: invalid signature 'v' value\\\");\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        require(signer != address(0), \\\"ECDSA: invalid signature\\\");\\n\\n        return signer;\\n    }\\n\\n    /**\\n     * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n     * replicates the behavior of the\\n     * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\\n     * JSON-RPC method.\\n     *\\n     * See {recover}.\\n     */\\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n    }\\n}\\n\",\"keccak256\":\"0xf25c49d2be2d28918ae6de7e9724238367dabe50631ec8fd23d1cdae2cb70262\",\"license\":\"MIT\"},\"src.sol/interfaces/ITransferDefinition.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"./ITransferRegistry.sol\\\";\\nimport \\\"./Types.sol\\\";\\n\\ninterface ITransferDefinition {\\n    // Validates the initial state of the transfer.\\n    // Called by validator.ts during `create` updates.\\n    function create(bytes calldata encodedBalance, bytes calldata)\\n        external\\n        view\\n        returns (bool);\\n\\n    // Performs a state transition to resolve a transfer and returns final balances.\\n    // Called by validator.ts during `resolve` updates.\\n    function resolve(\\n        bytes calldata encodedBalance,\\n        bytes calldata,\\n        bytes calldata\\n    ) external view returns (Balance memory);\\n\\n    // Should also have the following properties:\\n    // string public constant override Name = \\\"...\\\";\\n    // string public constant override StateEncoding = \\\"...\\\";\\n    // string public constant override ResolverEncoding = \\\"...\\\";\\n    // These properties are included on the transfer specifically\\n    // to make it easier for implementers to add new transfers by\\n    // only include a `.sol` file\\n    function Name() external view returns (string memory);\\n\\n    function StateEncoding() external view returns (string memory);\\n\\n    function ResolverEncoding() external view returns (string memory);\\n\\n    function EncodedCancel() external view returns (bytes memory);\\n\\n    function getRegistryInformation()\\n        external\\n        view\\n        returns (RegisteredTransfer memory);\\n}\\n\",\"keccak256\":\"0xd8eef575aa791b187397c9096e6cf40431b590d3999f0a80e38f3e59f4cf4764\",\"license\":\"UNLICENSED\"},\"src.sol/interfaces/ITransferRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental \\\"ABIEncoderV2\\\";\\n\\nstruct RegisteredTransfer {\\n    string name;\\n    address definition;\\n    string stateEncoding;\\n    string resolverEncoding;\\n    bytes encodedCancel;\\n}\\n\\ninterface ITransferRegistry {\\n    event TransferAdded(RegisteredTransfer transfer);\\n\\n    event TransferRemoved(RegisteredTransfer transfer);\\n\\n    // Should add a transfer definition to the registry\\n    // onlyOwner\\n    function addTransferDefinition(RegisteredTransfer memory transfer) external;\\n\\n    // Should remove a transfer definition to the registry\\n    // onlyOwner\\n    function removeTransferDefinition(string memory name) external;\\n\\n    // Should return all transfer defintions in registry\\n    function getTransferDefinitions()\\n        external\\n        view\\n        returns (RegisteredTransfer[] memory);\\n}\\n\",\"keccak256\":\"0xd13be6d976c64e381a0d9df10c621cd964454b6916f25df4ea6c1b4cd873a58a\",\"license\":\"UNLICENSED\"},\"src.sol/interfaces/Types.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nstruct Balance {\\n    uint256[2] amount; // [alice, bob] in channel, [initiator, responder] in transfer\\n    address payable[2] to; // [alice, bob] in channel, [initiator, responder] in transfer\\n}\\n\",\"keccak256\":\"0xf8c71b155b630cde965f5d1db5f0d2751a9763f5a797f15d946613e9224f1046\",\"license\":\"UNLICENSED\"},\"src.sol/lib/LibChannelCrypto.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"@openzeppelin/contracts/cryptography/ECDSA.sol\\\";\\n\\t\\t\\n/// @author Connext <support@connext.network>\\t\\t\\n/// @notice This library contains helpers for recovering signatures from a\\t\\t\\n///         Vector commitments. Channels do not allow for arbitrary signing of\\t\\t\\n///         messages to prevent misuse of private keys by injected providers,\\t\\t\\n///         and instead only sign messages with a Vector channel prefix.\\nlibrary LibChannelCrypto {\\n    function checkSignature(\\n        bytes32 hash,\\n        bytes memory signature,\\n        address allegedSigner\\n    ) internal pure returns (bool) {\\n        return recoverChannelMessageSigner(hash, signature) == allegedSigner;\\n    }\\n\\n    function recoverChannelMessageSigner(bytes32 hash, bytes memory signature)\\n        internal\\n        pure\\n        returns (address)\\n    {\\n        bytes32 digest = toChannelSignedMessage(hash);\\n        return ECDSA.recover(digest, signature);\\n    }\\n\\n    function toChannelSignedMessage(bytes32 hash)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return\\n            keccak256(abi.encodePacked(\\\"\\\\x16Vector Signed Message:\\\\n32\\\", hash));\\n    }\\n\\n    function checkUtilitySignature(\\n        bytes32 hash,\\n        bytes memory signature,\\n        address allegedSigner\\n    ) internal pure returns (bool) {\\n        return recoverChannelMessageSigner(hash, signature) == allegedSigner;\\n    }\\n\\n    function recoverUtilityMessageSigner(bytes32 hash, bytes memory signature)\\n        internal\\n        pure\\n        returns (address)\\n    {\\n        bytes32 digest = toUtilitySignedMessage(hash);\\n        return ECDSA.recover(digest, signature);\\n    }\\n\\n    function toUtilitySignedMessage(bytes32 hash)\\n        internal\\n        pure\\n        returns (bytes32)\\n    {\\n        // 32 is the length in bytes of hash,\\n        // enforced by the type signature above\\n        return\\n            keccak256(abi.encodePacked(\\\"\\\\x17Utility Signed Message:\\\\n32\\\", hash));\\n    }\\n}\\n\",\"keccak256\":\"0xb8aa3679b75f2a1a5785f614f5dff9a76a689c18caa56a8df1f4e3c3167d6ece\",\"license\":\"UNLICENSED\"},\"src.sol/transferDefinitions/TransferDefinition.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"../interfaces/ITransferDefinition.sol\\\";\\nimport \\\"../interfaces/ITransferRegistry.sol\\\";\\n\\n/// @title TransferDefinition\\n/// @author Connext <support@connext.network>\\n/// @notice This contract helps reduce boilerplate needed when creating\\n///         new transfer definitions by providing an implementation of\\n///         the required getter\\n\\nabstract contract TransferDefinition is ITransferDefinition {\\n    function getRegistryInformation()\\n        external\\n        view\\n        override\\n        returns (RegisteredTransfer memory)\\n    {\\n        return\\n            RegisteredTransfer({\\n                name: this.Name(),\\n                stateEncoding: this.StateEncoding(),\\n                resolverEncoding: this.ResolverEncoding(),\\n                definition: address(this),\\n                encodedCancel: this.EncodedCancel()\\n            });\\n    }\\n}\\n\",\"keccak256\":\"0xdb8bcb3fadd5c514bc6585b0a48d66952570bbb1a62f18b9dc9a4f693dc11c5e\",\"license\":\"UNLICENSED\"},\"src.sol/transferDefinitions/Withdraw.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"./TransferDefinition.sol\\\";\\nimport \\\"../lib/LibChannelCrypto.sol\\\";\\n\\n/// @title Withdraw\\n/// @author Connext <support@connext.network>\\n/// @notice This contract burns the initiator's funds if a mutually signed\\n///         withdraw commitment can be generated\\n\\ncontract Withdraw is TransferDefinition {\\n    using LibChannelCrypto for bytes32;\\n\\n    struct TransferState {\\n        bytes initiatorSignature;\\n        address initiator;\\n        address responder;\\n        bytes32 data;\\n        uint256 nonce; // included so that each withdraw commitment has a unique hash\\n        uint256 fee;\\n        address callTo;\\n        bytes callData;\\n    }\\n\\n    struct TransferResolver {\\n        bytes responderSignature;\\n    }\\n\\n    // Provide registry information\\n    string public constant override Name = \\\"Withdraw\\\";\\n    string public constant override StateEncoding =\\n        \\\"tuple(bytes initiatorSignature, address initiator, address responder, bytes32 data, uint256 nonce, uint256 fee, address callTo, bytes callData)\\\";\\n    string public constant override ResolverEncoding =\\n        \\\"tuple(bytes responderSignature)\\\";\\n\\n    function EncodedCancel() external pure override returns(bytes memory) {\\n      TransferResolver memory resolver;\\n      resolver.responderSignature = new bytes(65);\\n      return abi.encode(resolver);\\n    }\\n\\n    function create(bytes calldata encodedBalance, bytes calldata encodedState)\\n        external\\n        pure\\n        override\\n        returns (bool)\\n    {\\n        // Get unencoded information\\n        TransferState memory state = abi.decode(encodedState, (TransferState));\\n        Balance memory balance = abi.decode(encodedBalance, (Balance));\\n\\n        require(balance.amount[1] == 0, \\\"Withdraw: NONZERO_RECIPIENT_BALANCE\\\");\\n        require(\\n            state.initiator != address(0) && state.responder != address(0),\\n            \\\"Withdraw: EMPTY_SIGNERS\\\"\\n        );\\n        require(state.data != bytes32(0), \\\"Withdraw: EMPTY_DATA\\\");\\n        require(state.nonce != uint256(0), \\\"Withdraw: EMPTY_NONCE\\\");\\n        require(\\n            state.fee <= balance.amount[0],\\n            \\\"Withdraw: INSUFFICIENT_BALANCE\\\"\\n        );\\n        require(\\n            state.data.checkSignature(\\n                state.initiatorSignature,\\n                state.initiator\\n            ),\\n            \\\"Withdraw: INVALID_INITIATOR_SIG\\\"\\n        );\\n        \\n        // Valid initial transfer state\\n        return true;\\n    }\\n\\n    function resolve(\\n        bytes calldata encodedBalance,\\n        bytes calldata encodedState,\\n        bytes calldata encodedResolver\\n    ) external pure override returns (Balance memory) {\\n        TransferState memory state = abi.decode(encodedState, (TransferState));\\n        TransferResolver memory resolver =\\n            abi.decode(encodedResolver, (TransferResolver));\\n        Balance memory balance = abi.decode(encodedBalance, (Balance));\\n\\n        // Allow for a withdrawal to be canceled if an empty signature is \\n        // passed in. Should have *specific* cancellation action, not just\\n        // any invalid sig\\n        bytes memory b = new bytes(65);\\n        if (keccak256(resolver.responderSignature) == keccak256(b)) {\\n            // Withdraw should be cancelled, no state manipulation needed\\n        } else {\\n            require(\\n                state.data.checkSignature(\\n                    resolver.responderSignature,\\n                    state.responder\\n                ),\\n                \\\"Withdraw: INVALID_RESPONDER_SIG\\\"\\n            );\\n            // Reduce withdraw amount by optional fee\\n            // It's up to the offchain validators to ensure that the withdraw commitment takes this fee into account\\n            balance.amount[1] = state.fee;\\n            balance.amount[0] = 0;\\n        }\\n\\n        return balance;\\n    }\\n}\\n\",\"keccak256\":\"0x012e5deb93a2d67452884dff9179274801a30abf2455833eb4c59a42a87c50b0\",\"license\":\"UNLICENSED\"}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b50611263806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638052474d1161005b5780638052474d146100bd5780638de8b77e146100c55780638ef98a7e146100cd57806394184ba9146100ed5761007d565b80630528aa1c14610082578063206162be146100a05780633722aff9146100b5575b600080fd5b61008a61010d565b6040516100979190610d6e565b60405180910390f35b6100a861015c565b6040516100979190611060565b61008a610368565b61008a6103a1565b61008a6103c5565b6100e06100db3660046109fc565b6103e1565b6040516100979190610ff6565b6101006100fb366004610993565b6104ca565b6040516100979190610d45565b60606101176107b0565b604080516041808252608082019092529060208201818036833750505081526040516101479082906020016110f0565b60405160208183030381529060405291505090565b6101646107c3565b6040518060a00160405280306001600160a01b0316638052474d6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101a857600080fd5b505afa1580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101e49190810190610a92565b8152602001306001600160a01b03168152602001306001600160a01b0316638de8b77e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023157600080fd5b505afa158015610245573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261026d9190810190610a92565b8152602001306001600160a01b0316633722aff96040518163ffffffff1660e01b815260040160006040518083038186803b1580156102ab57600080fd5b505afa1580156102bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102e79190810190610a92565b8152602001306001600160a01b0316630528aa1c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103619190810190610a92565b9052905090565b6040518060400160405280601f81526020017f7475706c6528627974657320726573706f6e6465725369676e6174757265290081525081565b60405180604001604052806008815260200167576974686472617760c01b81525081565b6040518060c00160405280608f815260200161119f608f913981565b6103e96107fb565b6103f1610820565b6103fd85870187610c02565b90506104076107b0565b61041384860186610b97565b905061041d6107fb565b610429898b018b610ac5565b60408051604180825260808201909252919250606091906020820181803683370190505090508080519060200120836000015180519060200120141561046e576104bc565b825160408501516060860151610485929091610608565b6104aa5760405162461bcd60e51b81526004016104a190610fbf565b60405180910390fd5b60a08401518251602001528151600090525b509998505050505050505050565b60006104d4610820565b6104e083850185610c02565b90506104ea6107fb565b6104f686880188610ac5565b8051602001519091501561051c5760405162461bcd60e51b81526004016104a190610f1f565b60208201516001600160a01b031615801590610544575060408201516001600160a01b031615155b6105605760405162461bcd60e51b81526004016104a190610df6565b60608201516105815760405162461bcd60e51b81526004016104a190610f62565b60808201516105a25760405162461bcd60e51b81526004016104a190610f90565b80515160a083015111156105c85760405162461bcd60e51b81526004016104a190610ea6565b8151602083015160608401516105df929091610608565b6105fb5760405162461bcd60e51b81526004016104a190610e6f565b5060019695505050505050565b6000816001600160a01b031661061e8585610630565b6001600160a01b031614949350505050565b60008061063c84610652565b90506106488184610682565b9150505b92915050565b6000816040516020016106659190610d14565b604051602081830303815290604052805190602001209050919050565b600081516041146106a55760405162461bcd60e51b81526004016104a190610dbf565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156106f75760405162461bcd60e51b81526004016104a190610e2d565b8060ff16601b1415801561070f57508060ff16601c14155b1561072c5760405162461bcd60e51b81526004016104a190610edd565b6000600187838686604051600081526020016040526040516107519493929190610d50565b6020604051602081039080840390855afa158015610773573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166107a65760405162461bcd60e51b81526004016104a190610d88565b9695505050505050565b6040518060200160405280606081525090565b6040518060a001604052806060815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b604051806040016040528061080e610883565b815260200161081b610883565b905290565b6040518061010001604052806060815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b60405180604001604052806002906020820280368337509192915050565b803561064c81611186565b60008083601f8401126108bd578182fd5b50813567ffffffffffffffff8111156108d4578182fd5b6020830191508360208285010111156108ec57600080fd5b9250929050565b600082601f830112610903578081fd5b813561091661091182611132565b61110b565b915080825283602082850101111561092d57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112610956578081fd5b815161096461091182611132565b915080825283602082850101111561097b57600080fd5b61098c816020840160208601611156565b5092915050565b600080600080604085870312156109a8578384fd5b843567ffffffffffffffff808211156109bf578586fd5b6109cb888389016108ac565b909650945060208701359150808211156109e3578384fd5b506109f0878288016108ac565b95989497509550505050565b60008060008060008060608789031215610a14578182fd5b863567ffffffffffffffff80821115610a2b578384fd5b610a378a838b016108ac565b90985096506020890135915080821115610a4f578384fd5b610a5b8a838b016108ac565b90965094506040890135915080821115610a73578384fd5b50610a8089828a016108ac565b979a9699509497509295939492505050565b600060208284031215610aa3578081fd5b815167ffffffffffffffff811115610ab9578182fd5b61064884828501610946565b600060808284031215610ad6578081fd5b610ae0604061110b565b83601f840112610aee578182fd5b610af8604061110b565b80846040860187811115610b0a578586fd5b855b6002811015610b2b578235855260209485019490920191600101610b0c565b5082855287605f880112610b3d578586fd5b610b47604061110b565b9350839250905060808601871015610b5d578485fd5b845b6002811015610b88578135610b7381611186565b84526020938401939190910190600101610b5f565b50506020830152509392505050565b600060208284031215610ba8578081fd5b813567ffffffffffffffff80821115610bbf578283fd5b9083019060208286031215610bd2578283fd5b610bdc602061110b565b823582811115610bea578485fd5b610bf6878286016108f3565b82525095945050505050565b600060208284031215610c13578081fd5b813567ffffffffffffffff80821115610c2a578283fd5b8184019150610100808387031215610c40578384fd5b610c498161110b565b9050823582811115610c59578485fd5b610c65878286016108f3565b825250610c7586602085016108a1565b6020820152610c8786604085016108a1565b6040820152606083013560608201526080830135608082015260a083013560a0820152610cb78660c085016108a1565b60c082015260e083013582811115610ccd578485fd5b610cd9878286016108f3565b60e08301525095945050505050565b60008151808452610d00816020860160208601611156565b601f01601f19169290920160200192915050565b7f16566563746f72205369676e6564204d6573736167653a0a33320000000000008152601a810191909152603a0190565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252610d816020830184610ce8565b9392505050565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526017908201527f57697468647261773a20454d5054595f5349474e455253000000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252601f908201527f57697468647261773a20494e56414c49445f494e49544941544f525f53494700604082015260600190565b6020808252601e908201527f57697468647261773a20494e53554646494349454e545f42414c414e43450000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526023908201527f57697468647261773a204e4f4e5a45524f5f524543495049454e545f42414c416040820152624e434560e81b606082015260800190565b60208082526014908201527357697468647261773a20454d5054595f4441544160601b604082015260600190565b60208082526015908201527457697468647261773a20454d5054595f4e4f4e434560581b604082015260600190565b6020808252601f908201527f57697468647261773a20494e56414c49445f524553504f4e4445525f53494700604082015260600190565b815160808201908260005b6002811015611020578251825260209283019290910190600101611001565b5050506020808401516040840160005b60028110156110565782516001600160a01b031682529183019190830190600101611030565b5050505092915050565b600060208252825160a0602084015261107c60c0840182610ce8565b905060018060a01b0360208501511660408401526040840151601f19808584030160608601526110ac8383610ce8565b925060608601519150808584030160808601526110c98383610ce8565b925060808601519150808584030160a0860152506110e78282610ce8565b95945050505050565b60006020825282516020808401526106486040840182610ce8565b60405181810167ffffffffffffffff8111828210171561112a57600080fd5b604052919050565b600067ffffffffffffffff821115611148578081fd5b50601f01601f191660200190565b60005b83811015611171578181015183820152602001611159565b83811115611180576000848401525b50505050565b6001600160a01b038116811461119b57600080fd5b5056fe7475706c6528627974657320696e69746961746f725369676e61747572652c206164647265737320696e69746961746f722c206164647265737320726573706f6e6465722c206279746573333220646174612c2075696e74323536206e6f6e63652c2075696e74323536206665652c20616464726573732063616c6c546f2c2062797465732063616c6c4461746129a2646970667358221220e6c29ec66c4575ed5816330cc0372206a95865e0e0b591d5a21001f4a374293764736f6c63430007010033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638052474d1161005b5780638052474d146100bd5780638de8b77e146100c55780638ef98a7e146100cd57806394184ba9146100ed5761007d565b80630528aa1c14610082578063206162be146100a05780633722aff9146100b5575b600080fd5b61008a61010d565b6040516100979190610d6e565b60405180910390f35b6100a861015c565b6040516100979190611060565b61008a610368565b61008a6103a1565b61008a6103c5565b6100e06100db3660046109fc565b6103e1565b6040516100979190610ff6565b6101006100fb366004610993565b6104ca565b6040516100979190610d45565b60606101176107b0565b604080516041808252608082019092529060208201818036833750505081526040516101479082906020016110f0565b60405160208183030381529060405291505090565b6101646107c3565b6040518060a00160405280306001600160a01b0316638052474d6040518163ffffffff1660e01b815260040160006040518083038186803b1580156101a857600080fd5b505afa1580156101bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101e49190810190610a92565b8152602001306001600160a01b03168152602001306001600160a01b0316638de8b77e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561023157600080fd5b505afa158015610245573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261026d9190810190610a92565b8152602001306001600160a01b0316633722aff96040518163ffffffff1660e01b815260040160006040518083038186803b1580156102ab57600080fd5b505afa1580156102bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102e79190810190610a92565b8152602001306001600160a01b0316630528aa1c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561032557600080fd5b505afa158015610339573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103619190810190610a92565b9052905090565b6040518060400160405280601f81526020017f7475706c6528627974657320726573706f6e6465725369676e6174757265290081525081565b60405180604001604052806008815260200167576974686472617760c01b81525081565b6040518060c00160405280608f815260200161119f608f913981565b6103e96107fb565b6103f1610820565b6103fd85870187610c02565b90506104076107b0565b61041384860186610b97565b905061041d6107fb565b610429898b018b610ac5565b60408051604180825260808201909252919250606091906020820181803683370190505090508080519060200120836000015180519060200120141561046e576104bc565b825160408501516060860151610485929091610608565b6104aa5760405162461bcd60e51b81526004016104a190610fbf565b60405180910390fd5b60a08401518251602001528151600090525b509998505050505050505050565b60006104d4610820565b6104e083850185610c02565b90506104ea6107fb565b6104f686880188610ac5565b8051602001519091501561051c5760405162461bcd60e51b81526004016104a190610f1f565b60208201516001600160a01b031615801590610544575060408201516001600160a01b031615155b6105605760405162461bcd60e51b81526004016104a190610df6565b60608201516105815760405162461bcd60e51b81526004016104a190610f62565b60808201516105a25760405162461bcd60e51b81526004016104a190610f90565b80515160a083015111156105c85760405162461bcd60e51b81526004016104a190610ea6565b8151602083015160608401516105df929091610608565b6105fb5760405162461bcd60e51b81526004016104a190610e6f565b5060019695505050505050565b6000816001600160a01b031661061e8585610630565b6001600160a01b031614949350505050565b60008061063c84610652565b90506106488184610682565b9150505b92915050565b6000816040516020016106659190610d14565b604051602081830303815290604052805190602001209050919050565b600081516041146106a55760405162461bcd60e51b81526004016104a190610dbf565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156106f75760405162461bcd60e51b81526004016104a190610e2d565b8060ff16601b1415801561070f57508060ff16601c14155b1561072c5760405162461bcd60e51b81526004016104a190610edd565b6000600187838686604051600081526020016040526040516107519493929190610d50565b6020604051602081039080840390855afa158015610773573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166107a65760405162461bcd60e51b81526004016104a190610d88565b9695505050505050565b6040518060200160405280606081525090565b6040518060a001604052806060815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b604051806040016040528061080e610883565b815260200161081b610883565b905290565b6040518061010001604052806060815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008019168152602001600081526020016000815260200160006001600160a01b03168152602001606081525090565b60405180604001604052806002906020820280368337509192915050565b803561064c81611186565b60008083601f8401126108bd578182fd5b50813567ffffffffffffffff8111156108d4578182fd5b6020830191508360208285010111156108ec57600080fd5b9250929050565b600082601f830112610903578081fd5b813561091661091182611132565b61110b565b915080825283602082850101111561092d57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112610956578081fd5b815161096461091182611132565b915080825283602082850101111561097b57600080fd5b61098c816020840160208601611156565b5092915050565b600080600080604085870312156109a8578384fd5b843567ffffffffffffffff808211156109bf578586fd5b6109cb888389016108ac565b909650945060208701359150808211156109e3578384fd5b506109f0878288016108ac565b95989497509550505050565b60008060008060008060608789031215610a14578182fd5b863567ffffffffffffffff80821115610a2b578384fd5b610a378a838b016108ac565b90985096506020890135915080821115610a4f578384fd5b610a5b8a838b016108ac565b90965094506040890135915080821115610a73578384fd5b50610a8089828a016108ac565b979a9699509497509295939492505050565b600060208284031215610aa3578081fd5b815167ffffffffffffffff811115610ab9578182fd5b61064884828501610946565b600060808284031215610ad6578081fd5b610ae0604061110b565b83601f840112610aee578182fd5b610af8604061110b565b80846040860187811115610b0a578586fd5b855b6002811015610b2b578235855260209485019490920191600101610b0c565b5082855287605f880112610b3d578586fd5b610b47604061110b565b9350839250905060808601871015610b5d578485fd5b845b6002811015610b88578135610b7381611186565b84526020938401939190910190600101610b5f565b50506020830152509392505050565b600060208284031215610ba8578081fd5b813567ffffffffffffffff80821115610bbf578283fd5b9083019060208286031215610bd2578283fd5b610bdc602061110b565b823582811115610bea578485fd5b610bf6878286016108f3565b82525095945050505050565b600060208284031215610c13578081fd5b813567ffffffffffffffff80821115610c2a578283fd5b8184019150610100808387031215610c40578384fd5b610c498161110b565b9050823582811115610c59578485fd5b610c65878286016108f3565b825250610c7586602085016108a1565b6020820152610c8786604085016108a1565b6040820152606083013560608201526080830135608082015260a083013560a0820152610cb78660c085016108a1565b60c082015260e083013582811115610ccd578485fd5b610cd9878286016108f3565b60e08301525095945050505050565b60008151808452610d00816020860160208601611156565b601f01601f19169290920160200192915050565b7f16566563746f72205369676e6564204d6573736167653a0a33320000000000008152601a810191909152603a0190565b901515815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252610d816020830184610ce8565b9392505050565b60208082526018908201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604082015260600190565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b60208082526017908201527f57697468647261773a20454d5054595f5349474e455253000000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b6020808252601f908201527f57697468647261773a20494e56414c49445f494e49544941544f525f53494700604082015260600190565b6020808252601e908201527f57697468647261773a20494e53554646494349454e545f42414c414e43450000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526023908201527f57697468647261773a204e4f4e5a45524f5f524543495049454e545f42414c416040820152624e434560e81b606082015260800190565b60208082526014908201527357697468647261773a20454d5054595f4441544160601b604082015260600190565b60208082526015908201527457697468647261773a20454d5054595f4e4f4e434560581b604082015260600190565b6020808252601f908201527f57697468647261773a20494e56414c49445f524553504f4e4445525f53494700604082015260600190565b815160808201908260005b6002811015611020578251825260209283019290910190600101611001565b5050506020808401516040840160005b60028110156110565782516001600160a01b031682529183019190830190600101611030565b5050505092915050565b600060208252825160a0602084015261107c60c0840182610ce8565b905060018060a01b0360208501511660408401526040840151601f19808584030160608601526110ac8383610ce8565b925060608601519150808584030160808601526110c98383610ce8565b925060808601519150808584030160a0860152506110e78282610ce8565b95945050505050565b60006020825282516020808401526106486040840182610ce8565b60405181810167ffffffffffffffff8111828210171561112a57600080fd5b604052919050565b600067ffffffffffffffff821115611148578081fd5b50601f01601f191660200190565b60005b83811015611171578181015183820152602001611159565b83811115611180576000848401525b50505050565b6001600160a01b038116811461119b57600080fd5b5056fe7475706c6528627974657320696e69746961746f725369676e61747572652c206164647265737320696e69746961746f722c206164647265737320726573706f6e6465722c206279746573333220646174612c2075696e74323536206e6f6e63652c2075696e74323536206665652c20616464726573732063616c6c546f2c2062797465732063616c6c4461746129a2646970667358221220e6c29ec66c4575ed5816330cc0372206a95865e0e0b591d5a21001f4a374293764736f6c63430007010033",
    "devdoc": {
        "author": "Connext <support@connext.network>",
        "kind": "dev",
        "methods": {},
        "title": "Withdraw",
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "notice": "This contract burns the initiator's funds if a mutually signed         withdraw commitment can be generated",
        "version": 1
    },
    "storageLayout": {
        "storage": [],
        "types": null
    }
}
