{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockAmm",
  "sourceName": "contracts/mocks/MockAmm.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "inputToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outputToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "inputAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "outputAmount",
          "type": "uint256"
        }
      ],
      "name": "estimateSwap",
      "outputs": [
        {
          "internalType": "uint256[2]",
          "name": "amounts",
          "type": "uint256[2]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "inputToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outputToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "inputAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "outputAmount",
          "type": "uint256"
        }
      ],
      "name": "forceSwap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getReserves",
      "outputs": [
        {
          "internalType": "uint112",
          "name": "reserveBase",
          "type": "uint112"
        },
        {
          "internalType": "uint112",
          "name": "reserveQuote",
          "type": "uint112"
        },
        {
          "internalType": "uint32",
          "name": "blockTimestamp",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "baseAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "quoteAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quoteToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_price",
          "type": "uint256"
        }
      ],
      "name": "setPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint112",
          "name": "reserveBase",
          "type": "uint112"
        },
        {
          "internalType": "uint112",
          "name": "reserveQuote",
          "type": "uint112"
        }
      ],
      "name": "setReserves",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "inputToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outputToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "inputAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "outputAmount",
          "type": "uint256"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256[2]",
          "name": "amounts",
          "type": "uint256[2]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260016008553480156200001657600080fd5b50604051620011b4380380620011b48339810160408190526200003991620001cc565b8151829082906200005290600390602085019062000073565b5080516200006890600490602084019062000073565b505050505062000286565b828054620000819062000233565b90600052602060002090601f016020900481019282620000a55760008555620000f0565b82601f10620000c057805160ff1916838001178555620000f0565b82800160010185558215620000f0579182015b82811115620000f0578251825591602001919060010190620000d3565b50620000fe92915062000102565b5090565b5b80821115620000fe576000815560010162000103565b600082601f8301126200012a578081fd5b81516001600160401b038082111562000147576200014762000270565b604051601f8301601f19908116603f0116810190828211818310171562000172576200017262000270565b816040528381526020925086838588010111156200018e578485fd5b8491505b83821015620001b1578582018301518183018401529082019062000192565b83821115620001c257848385830101525b9695505050505050565b60008060408385031215620001df578182fd5b82516001600160401b0380821115620001f6578384fd5b620002048683870162000119565b935060208501519150808211156200021a578283fd5b50620002298582860162000119565b9150509250929050565b6002810460018216806200024857607f821691505b602082108114156200026a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b610f1e80620002966000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806375ea5f2e116100b8578063a457c2d71161007c578063a457c2d714610344578063a9059cbb14610357578063bc9365761461036a578063c55dae631461038a578063dd62ed3e1461039d578063e343fe12146103d657610142565b806375ea5f2e146102b457806391b7f5ed1461030b57806395d89b411461031e578063988370a314610326578063a035b1fe1461033b57610142565b806323b872dd1161010a57806323b872dd14610200578063313ce567146102135780633950935114610222578063485cc955146102355780636a6278421461027357806370a08231146102a157610142565b806306fdde03146101475780630902f1ac14610165578063095ea7b3146101a057806318160ddd146101c3578063217a4b70146101d5575b600080fd5b61014f6103e9565b60405161015c9190610ded565b60405180910390f35b600754604080516001600160701b038084168252600160701b8404166020820152600160e01b90920463ffffffff169082015260600161015c565b6101b36101ae366004610d52565b61047b565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6006546101e8906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b6101b361020e366004610cd6565b610491565b6040516012815260200161015c565b6101b3610230366004610d52565b610540565b610271610243366004610c50565b600580546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b005b610286610281366004610c2f565b61057c565b6040805193845260208401929092529082015260600161015c565b6101c76102af366004610c2f565b610592565b6102716102c2366004610d7b565b600780546001600160701b03928316600160701b026dffffffffffffffffffffffffffff60701b19949093166dffffffffffffffffffffffffffff199091161792909216179055565b610271610319366004610da4565b600855565b61014f6105b1565b610271610334366004610c82565b5050505050565b6101c760085481565b6101b3610352366004610d52565b6105c0565b6101b3610365366004610d52565b610659565b61037d610378366004610d11565b610666565b60405161015c9190610dbc565b6005546101e8906001600160a01b031681565b6101c76103ab366004610c50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61037d6103e4366004610c82565b61073b565b6060600380546103f890610e97565b80601f016020809104026020016040519081016040528092919081815260200182805461042490610e97565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b6000610488338484610811565b50600192915050565b600061049e848484610935565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105285760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105358533858403610811565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610488918590610577908690610e40565b610811565b6103e8808061058b8482610b04565b9193909250565b6001600160a01b0381166000908152602081905260409020545b919050565b6060600480546103f890610e97565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156106425760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161051f565b61064f3385858403610811565b5060019392505050565b6000610488338484610935565b61066e610be3565b6005546001600160a01b03868116911614156106de5782156106b357604051806040016040528060008152602001600854856106aa9190610e78565b905290506106d9565b6040518060400160405280600854846106cc9190610e58565b8152602001600081525090505b610733565b821561070d57604051806040016040528060008152602001600854856107049190610e58565b90529050610733565b6040518060400160405280600854846107269190610e78565b8152602001600081525090505b949350505050565b610743610be3565b6005546001600160a01b03868116911614156107b3578215610788576040518060400160405280600081526020016008548561077f9190610e78565b905290506107ae565b6040518060400160405280600854846107a19190610e58565b8152602001600081525090505b610808565b82156107e257604051806040016040528060008152602001600854856107d99190610e58565b90529050610808565b6040518060400160405280600854846107fb9190610e78565b8152602001600081525090505b95945050505050565b6001600160a01b0383166108735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051f565b6001600160a01b0382166108d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051f565b6001600160a01b0382166109fb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051f565b6001600160a01b03831660009081526020819052604090205481811015610a735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161051f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610aaa908490610e40565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610af691815260200190565b60405180910390a350505050565b6001600160a01b038216610b5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161051f565b8060026000828254610b6c9190610e40565b90915550506001600160a01b03821660009081526020819052604081208054839290610b99908490610e40565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146105ac57600080fd5b80356001600160701b03811681146105ac57600080fd5b600060208284031215610c40578081fd5b610c4982610c01565b9392505050565b60008060408385031215610c62578081fd5b610c6b83610c01565b9150610c7960208401610c01565b90509250929050565b600080600080600060a08688031215610c99578081fd5b610ca286610c01565b9450610cb060208701610c01565b9350610cbe60408701610c01565b94979396509394606081013594506080013592915050565b600080600060608486031215610cea578283fd5b610cf384610c01565b9250610d0160208501610c01565b9150604084013590509250925092565b60008060008060808587031215610d26578384fd5b610d2f85610c01565b9350610d3d60208601610c01565b93969395505050506040820135916060013590565b60008060408385031215610d64578182fd5b610d6d83610c01565b946020939093013593505050565b60008060408385031215610d8d578182fd5b610d9683610c18565b9150610c7960208401610c18565b600060208284031215610db5578081fd5b5035919050565b60408101818360005b6002811015610de4578151835260209283019290910190600101610dc5565b50505092915050565b6000602080835283518082850152825b81811015610e1957858101830151858201604001528201610dfd565b81811115610e2a5783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610e5357610e53610ed2565b500190565b600082610e7357634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610e9257610e92610ed2565b500290565b600281046001821680610eab57607f821691505b60208210811415610ecc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212205c1659eb6d9d64bf000cffa1433cfcbb23c89d260b0da572c40d3688d1adc2dd64736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c806375ea5f2e116100b8578063a457c2d71161007c578063a457c2d714610344578063a9059cbb14610357578063bc9365761461036a578063c55dae631461038a578063dd62ed3e1461039d578063e343fe12146103d657610142565b806375ea5f2e146102b457806391b7f5ed1461030b57806395d89b411461031e578063988370a314610326578063a035b1fe1461033b57610142565b806323b872dd1161010a57806323b872dd14610200578063313ce567146102135780633950935114610222578063485cc955146102355780636a6278421461027357806370a08231146102a157610142565b806306fdde03146101475780630902f1ac14610165578063095ea7b3146101a057806318160ddd146101c3578063217a4b70146101d5575b600080fd5b61014f6103e9565b60405161015c9190610ded565b60405180910390f35b600754604080516001600160701b038084168252600160701b8404166020820152600160e01b90920463ffffffff169082015260600161015c565b6101b36101ae366004610d52565b61047b565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6006546101e8906001600160a01b031681565b6040516001600160a01b03909116815260200161015c565b6101b361020e366004610cd6565b610491565b6040516012815260200161015c565b6101b3610230366004610d52565b610540565b610271610243366004610c50565b600580546001600160a01b039384166001600160a01b03199182161790915560068054929093169116179055565b005b610286610281366004610c2f565b61057c565b6040805193845260208401929092529082015260600161015c565b6101c76102af366004610c2f565b610592565b6102716102c2366004610d7b565b600780546001600160701b03928316600160701b026dffffffffffffffffffffffffffff60701b19949093166dffffffffffffffffffffffffffff199091161792909216179055565b610271610319366004610da4565b600855565b61014f6105b1565b610271610334366004610c82565b5050505050565b6101c760085481565b6101b3610352366004610d52565b6105c0565b6101b3610365366004610d52565b610659565b61037d610378366004610d11565b610666565b60405161015c9190610dbc565b6005546101e8906001600160a01b031681565b6101c76103ab366004610c50565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61037d6103e4366004610c82565b61073b565b6060600380546103f890610e97565b80601f016020809104026020016040519081016040528092919081815260200182805461042490610e97565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b6000610488338484610811565b50600192915050565b600061049e848484610935565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105285760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105358533858403610811565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610488918590610577908690610e40565b610811565b6103e8808061058b8482610b04565b9193909250565b6001600160a01b0381166000908152602081905260409020545b919050565b6060600480546103f890610e97565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156106425760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161051f565b61064f3385858403610811565b5060019392505050565b6000610488338484610935565b61066e610be3565b6005546001600160a01b03868116911614156106de5782156106b357604051806040016040528060008152602001600854856106aa9190610e78565b905290506106d9565b6040518060400160405280600854846106cc9190610e58565b8152602001600081525090505b610733565b821561070d57604051806040016040528060008152602001600854856107049190610e58565b90529050610733565b6040518060400160405280600854846107269190610e78565b8152602001600081525090505b949350505050565b610743610be3565b6005546001600160a01b03868116911614156107b3578215610788576040518060400160405280600081526020016008548561077f9190610e78565b905290506107ae565b6040518060400160405280600854846107a19190610e58565b8152602001600081525090505b610808565b82156107e257604051806040016040528060008152602001600854856107d99190610e58565b90529050610808565b6040518060400160405280600854846107fb9190610e78565b8152602001600081525090505b95945050505050565b6001600160a01b0383166108735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051f565b6001600160a01b0382166108d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166109995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051f565b6001600160a01b0382166109fb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051f565b6001600160a01b03831660009081526020819052604090205481811015610a735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161051f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610aaa908490610e40565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610af691815260200190565b60405180910390a350505050565b6001600160a01b038216610b5a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161051f565b8060026000828254610b6c9190610e40565b90915550506001600160a01b03821660009081526020819052604081208054839290610b99908490610e40565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b03811681146105ac57600080fd5b80356001600160701b03811681146105ac57600080fd5b600060208284031215610c40578081fd5b610c4982610c01565b9392505050565b60008060408385031215610c62578081fd5b610c6b83610c01565b9150610c7960208401610c01565b90509250929050565b600080600080600060a08688031215610c99578081fd5b610ca286610c01565b9450610cb060208701610c01565b9350610cbe60408701610c01565b94979396509394606081013594506080013592915050565b600080600060608486031215610cea578283fd5b610cf384610c01565b9250610d0160208501610c01565b9150604084013590509250925092565b60008060008060808587031215610d26578384fd5b610d2f85610c01565b9350610d3d60208601610c01565b93969395505050506040820135916060013590565b60008060408385031215610d64578182fd5b610d6d83610c01565b946020939093013593505050565b60008060408385031215610d8d578182fd5b610d9683610c18565b9150610c7960208401610c18565b600060208284031215610db5578081fd5b5035919050565b60408101818360005b6002811015610de4578151835260209283019290910190600101610dc5565b50505092915050565b6000602080835283518082850152825b81811015610e1957858101830151858201604001528201610dfd565b81811115610e2a5783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610e5357610e53610ed2565b500190565b600082610e7357634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610e9257610e92610ed2565b500290565b600281046001821680610eab57607f821691505b60208210811415610ecc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212205c1659eb6d9d64bf000cffa1433cfcbb23c89d260b0da572c40d3688d1adc2dd64736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
