{
  "_format": "hh-sol-artifact-1",
  "contractName": "BoltzRelayVerifier",
  "sourceName": "contracts/verifier/BoltzRelayVerifier.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "walletFactory",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destinationContract",
          "type": "address"
        }
      ],
      "name": "acceptContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "acceptToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "acceptedContracts",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "acceptedTokens",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destinationContract",
          "type": "address"
        }
      ],
      "name": "acceptsContract",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "acceptsToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "contracts",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destinationContract",
          "type": "address"
        }
      ],
      "name": "destinationContractValidation",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAcceptedContracts",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAcceptedTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "destinationContract",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "removeContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "removeToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokens",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "relayHub",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenContract",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "gas",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenGas",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "validUntilTime",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IForwarder.ForwardRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "gasPrice",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "feesReceiver",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "callForwarder",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "callVerifier",
                  "type": "address"
                }
              ],
              "internalType": "struct EnvelopingTypes.RelayData",
              "name": "relayData",
              "type": "tuple"
            }
          ],
          "internalType": "struct EnvelopingTypes.RelayRequest",
          "name": "relayRequest",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "verifyRelayedCall",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "context",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "versionVerifier",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b506040516119d83803806119d883398101604081905261002f9161008d565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b0319166080526100bb565b60006020828403121561009e578081fd5b81516001600160a01b03811681146100b4578182fd5b9392505050565b60805160601c6119006100d86000398061073352506119006000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80637d2f1c28116100b257806393a7a3c711610081578063d3f1e80811610066578063d3f1e80814610248578063e486033914610250578063f2fde38b146102635761011b565b806393a7a3c71461022257806397623158146102355761011b565b80637d2f1c28146101e1578063868399a5146101f45780638cd3f064146102075780638da5cb5b1461021a5761011b565b806336c87754116100ee57806336c877541461017b5780635256a8ef1461019b57806369dc9ff3146101ae5780637644dcd1146101ce5761011b565b806301171e3a1461012057806313baf1e6146101355780631dac0746146101485780632f75700614610166575b600080fd5b61013361012e366004611129565b610276565b005b610133610143366004611129565b6103e8565b610150610544565b60405161015d91906113f8565b60405180910390f35b61016e610564565b60405161015d9190611374565b61018e6101893660046112d4565b6105c6565b60405161015d919061133d565b6101336101a9366004611107565b6105ed565b6101c16101bc366004611107565b6106f9565b60405161015d91906113c1565b6101506101dc36600461123c565b61070e565b6101336101ef366004611107565b610a3e565b6101c1610202366004611107565b610a79565b610133610215366004611107565b610a97565b61018e610bb6565b6101c1610230366004611107565b610bc5565b61018e6102433660046112d4565b610be3565b61016e610bf0565b6101c161025e366004611107565b610c50565b610133610271366004611107565b610c65565b6000546001600160a01b031633146102a95760405162461bcd60e51b81526004016102a09061140b565b60405180910390fd5b6001600160a01b03821660009081526003602052604090205460ff166102e15760405162461bcd60e51b81526004016102a090611779565b600481815481106102ee57fe5b6000918252602090912001546001600160a01b038381169116146103245760405162461bcd60e51b81526004016102a09061151e565b6001600160a01b0382166000908152600360205260409020805460ff1916905560048054600019810190811061035657fe5b600091825260209091200154600480546001600160a01b03909216918390811061037c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060048054806103b557fe5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b6000546001600160a01b031633146104125760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b0382166104385760405162461bcd60e51b81526004016102a0906115fa565b6001600160a01b03821660009081526001602052604090205460ff166104705760405162461bcd60e51b81526004016102a0906114b0565b6002818154811061047d57fe5b6000918252602090912001546001600160a01b038381169116146104b35760405162461bcd60e51b81526004016102a0906114e7565b6001600160a01b0382166000908152600160205260409020805460ff191690556002805460001981019081106104e557fe5b600091825260209091200154600280546001600160a01b03909216918390811061050b57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806103b557fe5b60606040518060600160405280602481526020016118a760249139905090565b606060028054806020026020016040519081016040528092919081815260200182805480156105bc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161059e575b5050505050905090565b600281815481106105d357fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146106175760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b0381161580610631575061063181610d1d565b61064d5760405162461bcd60e51b81526004016102a09061169d565b6001600160a01b03811660009081526003602052604090205460ff16156106865760405162461bcd60e51b81526004016102a090611479565b6001600160a01b03166000818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60036020526000908152604090205460ff1681565b6060600061072160808601868401611107565b9050600061072e82610d29565b9050807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632046776e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078a57600080fd5b505afa15801561079e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190611173565b146107df5760405162461bcd60e51b81526004016102a090611666565b6107fd6107ec87806117fc565b6101ef906060810190604001611107565b600061080987806117fc565b60e0013511156109e857600061081f87806117fc565b610830906080810190606001611107565b6001600160a01b03161461095d576001600061084c88806117fc565b61085d906080810190606001611107565b6001600160a01b0316815260208101919091526040016000205460ff166108965760405162461bcd60e51b81526004016102a090611442565b6108a086806117fc565b6108b1906080810190606001611107565b6001600160a01b03166370a08231836040518263ffffffff1660e01b81526004016108dc919061133d565b60206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092c9190611173565b61093687806117fc565b60e0013511156109585760405162461bcd60e51b81526004016102a09061158c565b6109e8565b60006109ab61096c88806117fc565b61097b906101408101906117b0565b6109858a806117fc565b610996906060810190604001611107565b6109a660808c0160608d01611107565b610d2d565b90506001600160a01b0383163181016109c488806117fc565b60e0013511156109e65760405162461bcd60e51b81526004016102a0906115c3565b505b816109f387806117fc565b60e00135610a0188806117fc565b610a12906080810190606001611107565b604051602001610a2493929190611351565b604051602081830303815290604052925050509392505050565b6001600160a01b03811660009081526003602052604090205460ff16610a765760405162461bcd60e51b81526004016102a090611631565b50565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b03163314610ac15760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b038116610ae75760405162461bcd60e51b81526004016102a0906115fa565b610af081610d1d565b610b0c5760405162461bcd60e51b81526004016102a09061169d565b6001600160a01b03811660009081526001602052604090205460ff1615610b455760405162461bcd60e51b81526004016102a0906116d4565b6001600160a01b031660008181526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6000546001600160a01b031690565b6001600160a01b031660009081526003602052604090205460ff1690565b600481815481106105d357fe5b606060048054806020026020016040519081016040528092919081815260200182805480156105bc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161059e575050505050905090565b60016020526000908152604090205460ff1681565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b038116610cb55760405162461bcd60e51b81526004016102a090611555565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3b63ffffffff16151590565b3f90565b600080610d6f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061108d915050565b9050610d7961109b565b7fffffffff0000000000000000000000000000000000000000000000000000000082167fc3c37fbc000000000000000000000000000000000000000000000000000000001415610e3857610dcb6110c9565b610dd8876004818b611839565b810190610de5919061118b565b90506040518060a001604052808260000151815260200182602001518152602001866001600160a01b0316815260200182604001516001600160a01b031681526020018260600151815250915050610ebb565b7fffffffff0000000000000000000000000000000000000000000000000000000082167fcd413efa000000000000000000000000000000000000000000000000000000001415610ea357610e8f866004818a611839565b810190610e9c91906111da565b9050610ebb565b60405162461bcd60e51b81526004016102a09061170b565b80516040518691600091600291610ed491602001611318565b60408051601f1981840301815290829052610eee91611321565b602060405180830381855afa158015610f0b573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f2e9190611173565b90506000826001600160a01b0316638b2f8f828386602001518760400151886060015189608001516040518663ffffffff1660e01b8152600401610f769594939291906113cc565b60206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190611173565b6040517feb84e7f20000000000000000000000000000000000000000000000000000000081529091506001600160a01b0384169063eb84e7f29061100e908490600401611318565b602060405180830381600087803b15801561102857600080fd5b505af115801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190611153565b61107c5760405162461bcd60e51b81526004016102a090611742565b505050602001519695505050505050565b818101602001515b92915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b80356001600160a01b038116811461109557600080fd5b600060208284031215611118578081fd5b61112283836110f0565b9392505050565b6000806040838503121561113b578081fd5b61114584846110f0565b946020939093013593505050565b600060208284031215611164578081fd5b81518015158114611122578182fd5b600060208284031215611184578081fd5b5051919050565b60006080828403121561119c578081fd5b6111a66080611812565b82358152602083013560208201526111c184604085016110f0565b6040820152606083013560608201528091505092915050565b600060a082840312156111eb578081fd5b6111f560a0611812565b8235815260208301356020820152604083013561121181611891565b6040820152606083013561122481611891565b60608201526080928301359281019290925250919050565b600080600060408486031215611250578081fd5b833567ffffffffffffffff80821115611267578283fd5b9085019060a0828803121561127a578283fd5b9093506020850135908082111561128f578283fd5b818601915086601f8301126112a2578283fd5b8135818111156112b0578384fd5b8760208285010111156112c1578384fd5b6020830194508093505050509250925092565b6000602082840312156112e5578081fd5b5035919050565b60008151808452611304816020860160208601611861565b601f01601f19169290920160200192915050565b90815260200190565b60008251611333818460208701611861565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6020808252825182820181905260009190848201906040850190845b818110156113b55783516001600160a01b031683529284019291840191600101611390565b50909695505050505050565b901515815260200190565b94855260208501939093526001600160a01b039182166040850152166060830152608082015260a00190565b60006020825261112260208301846112ec565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252601a908201527f546f6b656e20636f6e7472616374206e6f7420616c6c6f776564000000000000604082015260600190565b6020808252601c908201527f436f6e747261637420697320616c726561647920616363657074656400000000604082015260600190565b60208082526015908201527f546f6b656e206973206e6f742061636365707465640000000000000000000000604082015260600190565b60208082526011908201527f57726f6e6720746f6b656e20696e646578000000000000000000000000000000604082015260600190565b60208082526014908201527f57726f6e6720636f6e747261637420696e646578000000000000000000000000604082015260600190565b60208082526019908201527f4f776e657220697320746865207a65726f206164647265737300000000000000604082015260600190565b60208082526015908201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604082015260600190565b60208082526016908201527f4e61746976652062616c616e636520746f6f206c6f7700000000000000000000604082015260600190565b6020808252601c908201527f546f6b656e2063616e6e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252818101527f44657374696e6174696f6e20636f6e7472616374206e6f7420616c6c6f776564604082015260600190565b60208082526018908201527f535720646966666572656e7420746f2074656d706c6174650000000000000000604082015260600190565b60208082526019908201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604082015260600190565b60208082526019908201527f546f6b656e20697320616c726561647920616363657074656400000000000000604082015260600190565b60208082526012908201527f4d6574686f64206e6f7420616c6c6f7765640000000000000000000000000000604082015260600190565b6020808252601a908201527f56657269666965723a207377617020686173206e6f2052425443000000000000604082015260600190565b60208082526018908201527f436f6e7472616374206973206e6f742061636365707465640000000000000000604082015260600190565b6000808335601e198436030181126117c6578283fd5b83018035915067ffffffffffffffff8211156117e0578283fd5b6020019150368190038213156117f557600080fd5b9250929050565b6000823561015e19833603018112611333578182fd5b60405181810167ffffffffffffffff8111828210171561183157600080fd5b604052919050565b60008085851115611848578182fd5b83861115611854578182fd5b5050820193919092039150565b60005b8381101561187c578181015183820152602001611864565b8381111561188b576000848401525b50505050565b6001600160a01b0381168114610a7657600080fdfe7269662e656e76656c6f70696e672e746f6b656e2e69766572696669657240322e302e31a2646970667358221220f7028895f380b44321862715032aff52a92074ae88038db2c48332066144d74a64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80637d2f1c28116100b257806393a7a3c711610081578063d3f1e80811610066578063d3f1e80814610248578063e486033914610250578063f2fde38b146102635761011b565b806393a7a3c71461022257806397623158146102355761011b565b80637d2f1c28146101e1578063868399a5146101f45780638cd3f064146102075780638da5cb5b1461021a5761011b565b806336c87754116100ee57806336c877541461017b5780635256a8ef1461019b57806369dc9ff3146101ae5780637644dcd1146101ce5761011b565b806301171e3a1461012057806313baf1e6146101355780631dac0746146101485780632f75700614610166575b600080fd5b61013361012e366004611129565b610276565b005b610133610143366004611129565b6103e8565b610150610544565b60405161015d91906113f8565b60405180910390f35b61016e610564565b60405161015d9190611374565b61018e6101893660046112d4565b6105c6565b60405161015d919061133d565b6101336101a9366004611107565b6105ed565b6101c16101bc366004611107565b6106f9565b60405161015d91906113c1565b6101506101dc36600461123c565b61070e565b6101336101ef366004611107565b610a3e565b6101c1610202366004611107565b610a79565b610133610215366004611107565b610a97565b61018e610bb6565b6101c1610230366004611107565b610bc5565b61018e6102433660046112d4565b610be3565b61016e610bf0565b6101c161025e366004611107565b610c50565b610133610271366004611107565b610c65565b6000546001600160a01b031633146102a95760405162461bcd60e51b81526004016102a09061140b565b60405180910390fd5b6001600160a01b03821660009081526003602052604090205460ff166102e15760405162461bcd60e51b81526004016102a090611779565b600481815481106102ee57fe5b6000918252602090912001546001600160a01b038381169116146103245760405162461bcd60e51b81526004016102a09061151e565b6001600160a01b0382166000908152600360205260409020805460ff1916905560048054600019810190811061035657fe5b600091825260209091200154600480546001600160a01b03909216918390811061037c57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060048054806103b557fe5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b6000546001600160a01b031633146104125760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b0382166104385760405162461bcd60e51b81526004016102a0906115fa565b6001600160a01b03821660009081526001602052604090205460ff166104705760405162461bcd60e51b81526004016102a0906114b0565b6002818154811061047d57fe5b6000918252602090912001546001600160a01b038381169116146104b35760405162461bcd60e51b81526004016102a0906114e7565b6001600160a01b0382166000908152600160205260409020805460ff191690556002805460001981019081106104e557fe5b600091825260209091200154600280546001600160a01b03909216918390811061050b57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060028054806103b557fe5b60606040518060600160405280602481526020016118a760249139905090565b606060028054806020026020016040519081016040528092919081815260200182805480156105bc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161059e575b5050505050905090565b600281815481106105d357fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146106175760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b0381161580610631575061063181610d1d565b61064d5760405162461bcd60e51b81526004016102a09061169d565b6001600160a01b03811660009081526003602052604090205460ff16156106865760405162461bcd60e51b81526004016102a090611479565b6001600160a01b03166000818152600360205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b60036020526000908152604090205460ff1681565b6060600061072160808601868401611107565b9050600061072e82610d29565b9050807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632046776e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561078a57600080fd5b505afa15801561079e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190611173565b146107df5760405162461bcd60e51b81526004016102a090611666565b6107fd6107ec87806117fc565b6101ef906060810190604001611107565b600061080987806117fc565b60e0013511156109e857600061081f87806117fc565b610830906080810190606001611107565b6001600160a01b03161461095d576001600061084c88806117fc565b61085d906080810190606001611107565b6001600160a01b0316815260208101919091526040016000205460ff166108965760405162461bcd60e51b81526004016102a090611442565b6108a086806117fc565b6108b1906080810190606001611107565b6001600160a01b03166370a08231836040518263ffffffff1660e01b81526004016108dc919061133d565b60206040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092c9190611173565b61093687806117fc565b60e0013511156109585760405162461bcd60e51b81526004016102a09061158c565b6109e8565b60006109ab61096c88806117fc565b61097b906101408101906117b0565b6109858a806117fc565b610996906060810190604001611107565b6109a660808c0160608d01611107565b610d2d565b90506001600160a01b0383163181016109c488806117fc565b60e0013511156109e65760405162461bcd60e51b81526004016102a0906115c3565b505b816109f387806117fc565b60e00135610a0188806117fc565b610a12906080810190606001611107565b604051602001610a2493929190611351565b604051602081830303815290604052925050509392505050565b6001600160a01b03811660009081526003602052604090205460ff16610a765760405162461bcd60e51b81526004016102a090611631565b50565b6001600160a01b031660009081526001602052604090205460ff1690565b6000546001600160a01b03163314610ac15760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b038116610ae75760405162461bcd60e51b81526004016102a0906115fa565b610af081610d1d565b610b0c5760405162461bcd60e51b81526004016102a09061169d565b6001600160a01b03811660009081526001602052604090205460ff1615610b455760405162461bcd60e51b81526004016102a0906116d4565b6001600160a01b031660008181526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6000546001600160a01b031690565b6001600160a01b031660009081526003602052604090205460ff1690565b600481815481106105d357fe5b606060048054806020026020016040519081016040528092919081815260200182805480156105bc576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161059e575050505050905090565b60016020526000908152604090205460ff1681565b6000546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016102a09061140b565b6001600160a01b038116610cb55760405162461bcd60e51b81526004016102a090611555565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3b63ffffffff16151590565b3f90565b600080610d6f86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061108d915050565b9050610d7961109b565b7fffffffff0000000000000000000000000000000000000000000000000000000082167fc3c37fbc000000000000000000000000000000000000000000000000000000001415610e3857610dcb6110c9565b610dd8876004818b611839565b810190610de5919061118b565b90506040518060a001604052808260000151815260200182602001518152602001866001600160a01b0316815260200182604001516001600160a01b031681526020018260600151815250915050610ebb565b7fffffffff0000000000000000000000000000000000000000000000000000000082167fcd413efa000000000000000000000000000000000000000000000000000000001415610ea357610e8f866004818a611839565b810190610e9c91906111da565b9050610ebb565b60405162461bcd60e51b81526004016102a09061170b565b80516040518691600091600291610ed491602001611318565b60408051601f1981840301815290829052610eee91611321565b602060405180830381855afa158015610f0b573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f2e9190611173565b90506000826001600160a01b0316638b2f8f828386602001518760400151886060015189608001516040518663ffffffff1660e01b8152600401610f769594939291906113cc565b60206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190611173565b6040517feb84e7f20000000000000000000000000000000000000000000000000000000081529091506001600160a01b0384169063eb84e7f29061100e908490600401611318565b602060405180830381600087803b15801561102857600080fd5b505af115801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190611153565b61107c5760405162461bcd60e51b81526004016102a090611742565b505050602001519695505050505050565b818101602001515b92915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b80356001600160a01b038116811461109557600080fd5b600060208284031215611118578081fd5b61112283836110f0565b9392505050565b6000806040838503121561113b578081fd5b61114584846110f0565b946020939093013593505050565b600060208284031215611164578081fd5b81518015158114611122578182fd5b600060208284031215611184578081fd5b5051919050565b60006080828403121561119c578081fd5b6111a66080611812565b82358152602083013560208201526111c184604085016110f0565b6040820152606083013560608201528091505092915050565b600060a082840312156111eb578081fd5b6111f560a0611812565b8235815260208301356020820152604083013561121181611891565b6040820152606083013561122481611891565b60608201526080928301359281019290925250919050565b600080600060408486031215611250578081fd5b833567ffffffffffffffff80821115611267578283fd5b9085019060a0828803121561127a578283fd5b9093506020850135908082111561128f578283fd5b818601915086601f8301126112a2578283fd5b8135818111156112b0578384fd5b8760208285010111156112c1578384fd5b6020830194508093505050509250925092565b6000602082840312156112e5578081fd5b5035919050565b60008151808452611304816020860160208601611861565b601f01601f19169290920160200192915050565b90815260200190565b60008251611333818460208701611861565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6020808252825182820181905260009190848201906040850190845b818110156113b55783516001600160a01b031683529284019291840191600101611390565b50909695505050505050565b901515815260200190565b94855260208501939093526001600160a01b039182166040850152166060830152608082015260a00190565b60006020825261112260208301846112ec565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b6020808252601a908201527f546f6b656e20636f6e7472616374206e6f7420616c6c6f776564000000000000604082015260600190565b6020808252601c908201527f436f6e747261637420697320616c726561647920616363657074656400000000604082015260600190565b60208082526015908201527f546f6b656e206973206e6f742061636365707465640000000000000000000000604082015260600190565b60208082526011908201527f57726f6e6720746f6b656e20696e646578000000000000000000000000000000604082015260600190565b60208082526014908201527f57726f6e6720636f6e747261637420696e646578000000000000000000000000604082015260600190565b60208082526019908201527f4f776e657220697320746865207a65726f206164647265737300000000000000604082015260600190565b60208082526015908201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604082015260600190565b60208082526016908201527f4e61746976652062616c616e636520746f6f206c6f7700000000000000000000604082015260600190565b6020808252601c908201527f546f6b656e2063616e6e6f74206265207a65726f206164647265737300000000604082015260600190565b6020808252818101527f44657374696e6174696f6e20636f6e7472616374206e6f7420616c6c6f776564604082015260600190565b60208082526018908201527f535720646966666572656e7420746f2074656d706c6174650000000000000000604082015260600190565b60208082526019908201527f41646472657373206973206e6f74206120636f6e747261637400000000000000604082015260600190565b60208082526019908201527f546f6b656e20697320616c726561647920616363657074656400000000000000604082015260600190565b60208082526012908201527f4d6574686f64206e6f7420616c6c6f7765640000000000000000000000000000604082015260600190565b6020808252601a908201527f56657269666965723a207377617020686173206e6f2052425443000000000000604082015260600190565b60208082526018908201527f436f6e7472616374206973206e6f742061636365707465640000000000000000604082015260600190565b6000808335601e198436030181126117c6578283fd5b83018035915067ffffffffffffffff8211156117e0578283fd5b6020019150368190038213156117f557600080fd5b9250929050565b6000823561015e19833603018112611333578182fd5b60405181810167ffffffffffffffff8111828210171561183157600080fd5b604052919050565b60008085851115611848578182fd5b83861115611854578182fd5b5050820193919092039150565b60005b8381101561187c578181015183820152602001611864565b8381111561188b576000848401525b50505050565b6001600160a01b0381168114610a7657600080fdfe7269662e656e76656c6f70696e672e746f6b656e2e69766572696669657240322e302e31a2646970667358221220f7028895f380b44321862715032aff52a92074ae88038db2c48332066144d74a64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
