{
  "_format": "hh-sol-artifact-1",
  "contractName": "SortedListTest",
  "sourceName": "contracts/soma/utils/math/test/SortedListTest.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        }
      ],
      "name": "Removed",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "add",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "at",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "get",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "key",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "nextId",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "head",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "length",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "remove",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tail",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610d44806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ffa4bce1161005b5780635ffa4bce146100d65780638f7dcfa3146100e95780639507d39a146100fa578063e0886f901461012257600080fd5b806313d8c840146100825780631f7b6d32146100a95780634cc82215146100c1575b600080fd5b600054600160401b90046001600160401b03165b6040519081526020015b60405180910390f35b600054600160c01b90046001600160401b0316610096565b6100d46100cf366004610c83565b610135565b005b6100d46100e4366004610c9c565b610175565b6000546001600160401b0316610096565b61010d610108366004610c83565b610185565b604080519283526020830191909152016100a0565b61010d610130366004610c83565b61019b565b7fc258b116f380657d67061f79c25e784314e0e1ed9b52630fac916654db6349986101616000836101a8565b60405190815260200160405180910390a150565b610181600083836101bb565b5050565b60008061019281846107b2565b91509150915091565b6000806101928184610849565b60006101b4838361094a565b9392505050565b604080516080808201835285546001600160401b038082168452600160401b82048116602080860191909152600160801b83048216858701819052600160c01b909304821660608087019190915260019384018084166000908152948b01835293879020875195860188525460ff811615801587526101008204851693870193909352600160481b8104841697860197909752600160881b90960490911694830194909452919261027b5761027986836001600160401b031661094a565b505b6040805160c0810182526000918101828152606082018390526080820183905260a08201839052815260208101919091526040805160c0810182526000918101828152606082018390526080820183905260a082018390528152602081019190915284515b6001600160401b03811615610378576001600160401b0380821660009081526001808c016020908152604092839020835160c081018552815460ff81161515958201958652610100810487166060830152600160481b810487166080830152600160881b900490951660a0860152928452910154908201819052881015610368579250610378565b80516040015190925090506102e0565b604051806080016040528087600001516001600160401b03168560000151602001516001600160401b0316146103af5787516103b1565b865b6001600160401b0316815260200187602001516001600160401b03168460000151602001516001600160401b0316146103ee5787602001516103f0565b865b6001600160401b03168152602001866001600160401b031681526020018760600151600161041e9190610cd4565b6001600160401b03168152508960000160008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555090505087896002016000876001600160401b031681526020019081526020016000208190555060405180604001604052806040518060800160405280600115158152602001886001600160401b031681526020018660000151602001516001600160401b031681526020018560000151602001516001600160401b0316815250815260200188815250896001016000876001600160401b0316815260200190815260200160002060008201518160000160008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160096101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160116101000a8154816001600160401b0302191690836001600160401b03160217905550505060208201518160010155905050816000015160000151156106f95781516001600160401b038681166040928301528351602080820180518416600090815260018f01909252908490208251815492519584015160609094015168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009585169590950294909417600160481b600160c81b031916600160481b9284169290920267ffffffffffffffff60881b191691909117600160881b91909216021790555b825151156107a75782516001600160401b038087166060928301528451602080820180518416600090815260018f019092526040918290208351815492519385015194909601518516600160881b0267ffffffffffffffff60881b19948616600160481b0294909416600160481b600160c81b0319939095166101000268ffffffffffffffff00199615159690961668ffffffffffffffffff19909216919091179490941716919091171790555b505050505050505050565b6000818152600183016020526040812054819060ff166108125760405162461bcd60e51b815260206004820152601660248201527514dbdc9d1959131a5cdd0e881253959053125117d25160521b60448201526064015b60405180910390fd5b5050600090815260028201602090815260408083205460019094019091529020549091600160481b9091046001600160401b031690565b6040805160808101825283546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201819052600091829184106108e45760405162461bcd60e51b815260206004820152601960248201527f536f727465644c6973743a204f55545f4f465f424f554e4453000000000000006044820152606401610809565b80516001600160401b0316915060005b8481101561092f57600092835260018601602052604090922054600160481b90046001600160401b03169161092881610cfb565b90506108f4565b50506000818152600290940160205260409093205493915050565b604080516080808201835284546001600160401b038082168452600160401b82048116602080860191909152600160801b8304821685870152600160c01b90920481166060808601918252600088815260018a018552878120885196870189525460ff8116151587526101008104851695870195909552600160481b8504841697860197909752600160881b909304821692840192909252905116610a2a5760405162461bcd60e51b8152602060048201526016602482015275536f727465644c6973743a204c4953545f454d50545960501b6044820152606401610809565b8051610a715760405162461bcd60e51b815260206004820152601660248201527514dbdc9d1959131a5cdd0e881253959053125117d25160521b6044820152606401610809565b600084815260028601602052604090205460608301519093506001600160401b0316600103610aa35760008555610c4a565b81600001516001600160401b0316846001600160401b031603610ad15760408101516001600160401b031682525b81602001516001600160401b0316846001600160401b031603610b025760608101516001600160401b031660208301525b60608101516001600160401b031615610b625760408181015160608301516001600160401b0390811660009081526001890160205292909220805470ffffffffffffffff0000000000000000001916600160481b93909216929092021790555b60408101516001600160401b031615610bbb5760608101516040808301516001600160401b0390811660009081526001890160205291909120805491909216600160881b0267ffffffffffffffff60881b199091161790555b816060018051610bca90610d14565b6001600160401b03908116909152825186546020850151604086015160608701519385166fffffffffffffffffffffffffffffffff1990931692909217600160401b91851691909102176fffffffffffffffffffffffffffffffff16600160801b918416919091026001600160c01b031617600160c01b91909216021785555b5050600091825260018084016020908152604080852080546001600160c81b031916815590920184905560029094019093529181205590565b600060208284031215610c9557600080fd5b5035919050565b60008060408385031215610caf57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115610cf457610cf4610cbe565b5092915050565b600060018201610d0d57610d0d610cbe565b5060010190565b60006001600160401b03821680610d2d57610d2d610cbe565b600019019291505056fea164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80635ffa4bce1161005b5780635ffa4bce146100d65780638f7dcfa3146100e95780639507d39a146100fa578063e0886f901461012257600080fd5b806313d8c840146100825780631f7b6d32146100a95780634cc82215146100c1575b600080fd5b600054600160401b90046001600160401b03165b6040519081526020015b60405180910390f35b600054600160c01b90046001600160401b0316610096565b6100d46100cf366004610c83565b610135565b005b6100d46100e4366004610c9c565b610175565b6000546001600160401b0316610096565b61010d610108366004610c83565b610185565b604080519283526020830191909152016100a0565b61010d610130366004610c83565b61019b565b7fc258b116f380657d67061f79c25e784314e0e1ed9b52630fac916654db6349986101616000836101a8565b60405190815260200160405180910390a150565b610181600083836101bb565b5050565b60008061019281846107b2565b91509150915091565b6000806101928184610849565b60006101b4838361094a565b9392505050565b604080516080808201835285546001600160401b038082168452600160401b82048116602080860191909152600160801b83048216858701819052600160c01b909304821660608087019190915260019384018084166000908152948b01835293879020875195860188525460ff811615801587526101008204851693870193909352600160481b8104841697860197909752600160881b90960490911694830194909452919261027b5761027986836001600160401b031661094a565b505b6040805160c0810182526000918101828152606082018390526080820183905260a08201839052815260208101919091526040805160c0810182526000918101828152606082018390526080820183905260a082018390528152602081019190915284515b6001600160401b03811615610378576001600160401b0380821660009081526001808c016020908152604092839020835160c081018552815460ff81161515958201958652610100810487166060830152600160481b810487166080830152600160881b900490951660a0860152928452910154908201819052881015610368579250610378565b80516040015190925090506102e0565b604051806080016040528087600001516001600160401b03168560000151602001516001600160401b0316146103af5787516103b1565b865b6001600160401b0316815260200187602001516001600160401b03168460000151602001516001600160401b0316146103ee5787602001516103f0565b865b6001600160401b03168152602001866001600160401b031681526020018760600151600161041e9190610cd4565b6001600160401b03168152508960000160008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a8154816001600160401b0302191690836001600160401b0316021790555090505087896002016000876001600160401b031681526020019081526020016000208190555060405180604001604052806040518060800160405280600115158152602001886001600160401b031681526020018660000151602001516001600160401b031681526020018560000151602001516001600160401b0316815250815260200188815250896001016000876001600160401b0316815260200190815260200160002060008201518160000160008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160096101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160116101000a8154816001600160401b0302191690836001600160401b03160217905550505060208201518160010155905050816000015160000151156106f95781516001600160401b038681166040928301528351602080820180518416600090815260018f01909252908490208251815492519584015160609094015168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009585169590950294909417600160481b600160c81b031916600160481b9284169290920267ffffffffffffffff60881b191691909117600160881b91909216021790555b825151156107a75782516001600160401b038087166060928301528451602080820180518416600090815260018f019092526040918290208351815492519385015194909601518516600160881b0267ffffffffffffffff60881b19948616600160481b0294909416600160481b600160c81b0319939095166101000268ffffffffffffffff00199615159690961668ffffffffffffffffff19909216919091179490941716919091171790555b505050505050505050565b6000818152600183016020526040812054819060ff166108125760405162461bcd60e51b815260206004820152601660248201527514dbdc9d1959131a5cdd0e881253959053125117d25160521b60448201526064015b60405180910390fd5b5050600090815260028201602090815260408083205460019094019091529020549091600160481b9091046001600160401b031690565b6040805160808101825283546001600160401b038082168352600160401b820481166020840152600160801b8204811693830193909352600160c01b900490911660608201819052600091829184106108e45760405162461bcd60e51b815260206004820152601960248201527f536f727465644c6973743a204f55545f4f465f424f554e4453000000000000006044820152606401610809565b80516001600160401b0316915060005b8481101561092f57600092835260018601602052604090922054600160481b90046001600160401b03169161092881610cfb565b90506108f4565b50506000818152600290940160205260409093205493915050565b604080516080808201835284546001600160401b038082168452600160401b82048116602080860191909152600160801b8304821685870152600160c01b90920481166060808601918252600088815260018a018552878120885196870189525460ff8116151587526101008104851695870195909552600160481b8504841697860197909752600160881b909304821692840192909252905116610a2a5760405162461bcd60e51b8152602060048201526016602482015275536f727465644c6973743a204c4953545f454d50545960501b6044820152606401610809565b8051610a715760405162461bcd60e51b815260206004820152601660248201527514dbdc9d1959131a5cdd0e881253959053125117d25160521b6044820152606401610809565b600084815260028601602052604090205460608301519093506001600160401b0316600103610aa35760008555610c4a565b81600001516001600160401b0316846001600160401b031603610ad15760408101516001600160401b031682525b81602001516001600160401b0316846001600160401b031603610b025760608101516001600160401b031660208301525b60608101516001600160401b031615610b625760408181015160608301516001600160401b0390811660009081526001890160205292909220805470ffffffffffffffff0000000000000000001916600160481b93909216929092021790555b60408101516001600160401b031615610bbb5760608101516040808301516001600160401b0390811660009081526001890160205291909120805491909216600160881b0267ffffffffffffffff60881b199091161790555b816060018051610bca90610d14565b6001600160401b03908116909152825186546020850151604086015160608701519385166fffffffffffffffffffffffffffffffff1990931692909217600160401b91851691909102176fffffffffffffffffffffffffffffffff16600160801b918416919091026001600160c01b031617600160c01b91909216021785555b5050600091825260018084016020908152604080852080546001600160c81b031916815590920184905560029094019093529181205590565b600060208284031215610c9557600080fd5b5035919050565b60008060408385031215610caf57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115610cf457610cf4610cbe565b5092915050565b600060018201610d0d57610d0d610cbe565b5060010190565b60006001600160401b03821680610d2d57610d2d610cbe565b600019019291505056fea164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
