{
  "contractName": "Repo",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "_semanticVersion",
          "type": "uint16[3]"
        }
      ],
      "name": "getBySemanticVersion",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newSemanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "_contractAddress",
          "type": "address"
        },
        {
          "name": "_contentURI",
          "type": "bytes"
        }
      ],
      "name": "newVersion",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_versionId",
          "type": "uint256"
        }
      ],
      "name": "getByVersionId",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_contractAddress",
          "type": "address"
        }
      ],
      "name": "getLatestForContractAddress",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_oldVersion",
          "type": "uint16[3]"
        },
        {
          "name": "_newVersion",
          "type": "uint16[3]"
        }
      ],
      "name": "isValidBump",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATE_VERSION_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLatest",
      "outputs": [
        {
          "name": "semanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "contractAddress",
          "type": "address"
        },
        {
          "name": "contentURI",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getVersionsCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "versionId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "semanticVersion",
          "type": "uint16[3]"
        }
      ],
      "name": "NewVersion",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b6119998061001e6000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634c3ba268146100e057806360b1e057146102015780637305341014610232578063737e7d4f146102da57806380afdea8146103d85780638b3dd749146104095780639a6fe50c146104325780639b3fdf4c14610546578063a1658fad14610577578063a7bdf16e14610615578063aa61924a1461069f578063c36af460146106d0578063c6d48e0d146107c0578063d4aae0c4146107e9578063f92a79ff1461083e575b600080fd5b34156100eb57600080fd5b610124600480806060019060038060200260405190810160405280929190826003602002808284378201915050505050919050506108db565b6040518084600360200280838360005b8381101561014f578082015181840152602081019050610134565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101c45780820151818401526020810190506101a9565b50505050905090810190601f1680156101f15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561020c57600080fd5b610214610926565b60405180826000191660001916815260200191505060405180910390f35b341561023d57600080fd5b6102d86004808060600190600380602002604051908101604052809291908260036020028082843782019150505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061095f565b005b34156102e557600080fd5b6102fb6004808035906020019091905050610d3c565b6040518084600360200280838360005b8381101561032657808201518184015260208101905061030b565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561039b578082015181840152602081019050610380565b50505050905090810190601f1680156103c85780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156103e357600080fd5b6103eb610ebb565b60405180826000191660001916815260200191505060405180910390f35b341561041457600080fd5b61041c610ec1565b6040518082815260200191505060405180910390f35b341561043d57600080fd5b610469600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ecb565b6040518084600360200280838360005b83811015610494578082015181840152602081019050610479565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105095780820151818401526020810190506104ee565b50505050905090810190601f1680156105365780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561055157600080fd5b610559610f32565b60405180826000191660001916815260200191505060405180910390f35b341561058257600080fd5b6105fb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610fcd565b604051808215151515815260200191505060405180910390f35b341561062057600080fd5b6106856004808060600190600380602002604051908101604052809291908260036020028082843782019150505050509190806060019060038060200260405190810160405280929190826003602002808284378201915050505050919050506111cd565b604051808215151515815260200191505060405180910390f35b34156106aa57600080fd5b6106b26112da565b60405180826000191660001916815260200191505060405180910390f35b34156106db57600080fd5b6106e36112e1565b6040518084600360200280838360005b8381101561070e5780820151818401526020810190506106f3565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610783578082015181840152602081019050610768565b50505050905090810190601f1680156107b05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156107cb57600080fd5b6107d361130f565b6040518082815260200191505060405180910390f35b34156107f457600080fd5b6107fc611334565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561084957600080fd5b610899600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611359565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e36116a1565b60006108ed6116cd565b610919606560006108fd87611460565b6000191660001916815260200190815260200160002054610d3c565b9250925092509193909250565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60008061096a6116a1565b60006001800261099a338260006040518059106109845750595b9080825280602002602001820160405250610fcd565b15156109a557600080fd5b86945060006064805490501115610b535760646001606480549050038154811015156109cd57fe5b90600052602060002090600302019350610a4e84600001600380602002604051908101604052809291908260038015610a43576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610a0a5790505b5050505050896111cd565b1515610a5957600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff161415610aa0578360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694505b8473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b435750836000016000600381101515610b0b57fe5b601091828204019190066002029054906101000a900461ffff1661ffff16886000600381101515610b3857fe5b602002015161ffff16115b1515610b4e57600080fd5b610b82565b6001606481818054905001915081610b6b91906116e1565b50610b7683896111cd565b1515610b8157600080fd5b5b600160648054806001018281610b989190611713565b916000526020600020906003020160006060604051908101604052808d81526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018b8152509091909150600082015181600001906003610bf6929190611745565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019080519060200190610c5a9291906117e2565b5050500391508160656000610c6e8b611460565b600019166000191681526020019081526020016000208190555081606660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd82896040518083815260200182600360200280838360005b83811015610d1f578082015181840152602081019050610d04565b505050509050019250505060405180910390a15050505050505050565b610d446116a1565b6000610d4e6116cd565b60008085111515610d5e57600080fd5b606485815481101515610d6d57fe5b90600052602060002090600302019050806000018160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260020182600380602002604051908101604052809291908260038015610e0a576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610dd15790505b50505050509250808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50505050509050935093509350509193909250565b60015481565b6000600354905090565b610ed36116a1565b6000610edd6116cd565b610f25606660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3c565b9250925092509193909250565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b6000610fd76116cd565b60008084511115610ff057602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806111c257506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115857808201518184015260208101905061113d565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156111a657600080fd5b6102c65a03f115156111b757600080fd5b505050604051805190505b925050509392505050565b60008060008090505b60038110156112ce57811561121357600084826003811015156111f557fe5b602002015161ffff1614151561120e57600092506112d2565b6112c1565b848160038110151561122157fe5b602002015161ffff16848260038110151561123857fe5b602002015161ffff161415156112c057838160038110151561125657fe5b602002015161ffff16858260038110151561126d57fe5b602002015161ffff1611806112ad57506001858260038110151561128d57fe5b602002015185836003811015156112a057fe5b60200201510361ffff1614155b156112bb57600092506112d2565b600191505b5b80806001019150506111d6565b8192505b505092915050565b6001800281565b6112e96116a1565b60006112f36116cd565b611304600160648054905003610d3c565b925092509250909192565b60008060648054905090506000811161132957600061132e565b600181035b91505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611363611543565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113f35780820151818401526020810190506113d8565b50505050905090810190601f1680156114205780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b151561143e57600080fd5b6102c65a03f1151561144f57600080fd5b505050604051805190509050919050565b600081600060038110151561147157fe5b602002015182600160038110151561148557fe5b602002015183600260038110151561149957fe5b6020020151604051808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018361ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018261ffff1661ffff167e01000000000000000000000000000000000000000000000000000000000000028152600201935050505060405180910390209050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561167d57600080fd5b6102c65a03f1151561168e57600080fd5b5050506040518051905090508091505090565b6060604051908101604052806003905b600061ffff168152602001906001900390816116b15790505090565b602060405190810160405280600081525090565b81548183558181151161170e5760030281600302836000526020600020918201910161170d9190611862565b5b505050565b8154818355818115116117405760030281600302836000526020600020918201910161173f9190611862565b5b505050565b826003600f016010900481019282156117d15791602002820160005b838211156117a157835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302611761565b80156117cf5782816101000a81549061ffff02191690556002016020816001010492830192600103026117a1565b505b5090506117de91906118c8565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061182357805160ff1916838001178555611851565b82800160010185558215611851579182015b82811115611850578251825591602001919060010190611835565b5b50905061185e91906118f9565b5090565b6118c591905b808211156118c15760008082016000611881919061191e565b6001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006118b89190611925565b50600301611868565b5090565b90565b6118f691905b808211156118f257600081816101000a81549061ffff0219169055506001016118ce565b5090565b90565b61191b91905b808211156119175760008160009055506001016118ff565b5090565b90565b5060009055565b50805460018160011615610100020316600290046000825580601f1061194b575061196a565b601f01602090049060005260206000209081019061196991906118f9565b5b505600a165627a7a723058203b67dcd592278006a1c1aad8e21f1493e2c724e106cf899156e7201b5cbbf6480029",
  "deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634c3ba268146100e057806360b1e057146102015780637305341014610232578063737e7d4f146102da57806380afdea8146103d85780638b3dd749146104095780639a6fe50c146104325780639b3fdf4c14610546578063a1658fad14610577578063a7bdf16e14610615578063aa61924a1461069f578063c36af460146106d0578063c6d48e0d146107c0578063d4aae0c4146107e9578063f92a79ff1461083e575b600080fd5b34156100eb57600080fd5b610124600480806060019060038060200260405190810160405280929190826003602002808284378201915050505050919050506108db565b6040518084600360200280838360005b8381101561014f578082015181840152602081019050610134565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156101c45780820151818401526020810190506101a9565b50505050905090810190601f1680156101f15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561020c57600080fd5b610214610926565b60405180826000191660001916815260200191505060405180910390f35b341561023d57600080fd5b6102d86004808060600190600380602002604051908101604052809291908260036020028082843782019150505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061095f565b005b34156102e557600080fd5b6102fb6004808035906020019091905050610d3c565b6040518084600360200280838360005b8381101561032657808201518184015260208101905061030b565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561039b578082015181840152602081019050610380565b50505050905090810190601f1680156103c85780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156103e357600080fd5b6103eb610ebb565b60405180826000191660001916815260200191505060405180910390f35b341561041457600080fd5b61041c610ec1565b6040518082815260200191505060405180910390f35b341561043d57600080fd5b610469600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ecb565b6040518084600360200280838360005b83811015610494578082015181840152602081019050610479565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105095780820151818401526020810190506104ee565b50505050905090810190601f1680156105365780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561055157600080fd5b610559610f32565b60405180826000191660001916815260200191505060405180910390f35b341561058257600080fd5b6105fb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610fcd565b604051808215151515815260200191505060405180910390f35b341561062057600080fd5b6106856004808060600190600380602002604051908101604052809291908260036020028082843782019150505050509190806060019060038060200260405190810160405280929190826003602002808284378201915050505050919050506111cd565b604051808215151515815260200191505060405180910390f35b34156106aa57600080fd5b6106b26112da565b60405180826000191660001916815260200191505060405180910390f35b34156106db57600080fd5b6106e36112e1565b6040518084600360200280838360005b8381101561070e5780820151818401526020810190506106f3565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610783578082015181840152602081019050610768565b50505050905090810190601f1680156107b05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34156107cb57600080fd5b6107d361130f565b6040518082815260200191505060405180910390f35b34156107f457600080fd5b6107fc611334565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561084957600080fd5b610899600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611359565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108e36116a1565b60006108ed6116cd565b610919606560006108fd87611460565b6000191660001916815260200190815260200160002054610d3c565b9250925092509193909250565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60008061096a6116a1565b60006001800261099a338260006040518059106109845750595b9080825280602002602001820160405250610fcd565b15156109a557600080fd5b86945060006064805490501115610b535760646001606480549050038154811015156109cd57fe5b90600052602060002090600302019350610a4e84600001600380602002604051908101604052809291908260038015610a43576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610a0a5790505b5050505050896111cd565b1515610a5957600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff161415610aa0578360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1694505b8473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610b435750836000016000600381101515610b0b57fe5b601091828204019190066002029054906101000a900461ffff1661ffff16886000600381101515610b3857fe5b602002015161ffff16115b1515610b4e57600080fd5b610b82565b6001606481818054905001915081610b6b91906116e1565b50610b7683896111cd565b1515610b8157600080fd5b5b600160648054806001018281610b989190611713565b916000526020600020906003020160006060604051908101604052808d81526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018b8152509091909150600082015181600001906003610bf6929190611745565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019080519060200190610c5a9291906117e2565b5050500391508160656000610c6e8b611460565b600019166000191681526020019081526020016000208190555081606660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507e3aea8189d1a0aa3ebdb05219cd4c2a663166706e949e9d6e8aa63718ca43fd82896040518083815260200182600360200280838360005b83811015610d1f578082015181840152602081019050610d04565b505050509050019250505060405180910390a15050505050505050565b610d446116a1565b6000610d4e6116cd565b60008085111515610d5e57600080fd5b606485815481101515610d6d57fe5b90600052602060002090600302019050806000018160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260020182600380602002604051908101604052809291908260038015610e0a576020028201916000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610dd15790505b50505050509250808054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ea65780601f10610e7b57610100808354040283529160200191610ea6565b820191906000526020600020905b815481529060010190602001808311610e8957829003601f168201915b50505050509050935093509350509193909250565b60015481565b6000600354905090565b610ed36116a1565b6000610edd6116cd565b610f25606660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d3c565b9250925092509193909250565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b6000610fd76116cd565b60008084511115610ff057602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806111c257506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115857808201518184015260208101905061113d565b50505050905090810190601f1680156111855780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156111a657600080fd5b6102c65a03f115156111b757600080fd5b505050604051805190505b925050509392505050565b60008060008090505b60038110156112ce57811561121357600084826003811015156111f557fe5b602002015161ffff1614151561120e57600092506112d2565b6112c1565b848160038110151561122157fe5b602002015161ffff16848260038110151561123857fe5b602002015161ffff161415156112c057838160038110151561125657fe5b602002015161ffff16858260038110151561126d57fe5b602002015161ffff1611806112ad57506001858260038110151561128d57fe5b602002015185836003811015156112a057fe5b60200201510361ffff1614155b156112bb57600092506112d2565b600191505b5b80806001019150506111d6565b8192505b505092915050565b6001800281565b6112e96116a1565b60006112f36116cd565b611304600160648054905003610d3c565b925092509250909192565b60008060648054905090506000811161132957600061132e565b600181035b91505090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611363611543565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113f35780820151818401526020810190506113d8565b50505050905090810190601f1680156114205780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b151561143e57600080fd5b6102c65a03f1151561144f57600080fd5b505050604051805190509050919050565b600081600060038110151561147157fe5b602002015182600160038110151561148557fe5b602002015183600260038110151561149957fe5b6020020151604051808461ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018361ffff1661ffff167e010000000000000000000000000000000000000000000000000000000000000281526002018261ffff1661ffff167e01000000000000000000000000000000000000000000000000000000000000028152600201935050505060405180910390209050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561167d57600080fd5b6102c65a03f1151561168e57600080fd5b5050506040518051905090508091505090565b6060604051908101604052806003905b600061ffff168152602001906001900390816116b15790505090565b602060405190810160405280600081525090565b81548183558181151161170e5760030281600302836000526020600020918201910161170d9190611862565b5b505050565b8154818355818115116117405760030281600302836000526020600020918201910161173f9190611862565b5b505050565b826003600f016010900481019282156117d15791602002820160005b838211156117a157835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302611761565b80156117cf5782816101000a81549061ffff02191690556002016020816001010492830192600103026117a1565b505b5090506117de91906118c8565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061182357805160ff1916838001178555611851565b82800160010185558215611851579182015b82811115611850578251825591602001919060010190611835565b5b50905061185e91906118f9565b5090565b6118c591905b808211156118c15760008082016000611881919061191e565b6001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006118b89190611925565b50600301611868565b5090565b90565b6118f691905b808211156118f257600081816101000a81549061ffff0219169055506001016118ce565b5090565b90565b61191b91905b808211156119175760008160009055506001016118ff565b5090565b90565b5060009055565b50805460018160011615610100020316600290046000825580601f1061194b575061196a565b601f01602090049060005260206000209081019061196991906118f9565b5b505600a165627a7a723058203b67dcd592278006a1c1aad8e21f1493e2c724e106cf899156e7201b5cbbf6480029",
  "sourceMap": "60:3874:15:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "60:3874:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;68:84:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;818:1209:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:315;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:107:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2210:238:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:494:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3177:600:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;356:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2033:171;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3029:142:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;824:169:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2454:248:15;2533:25;;:::i;:::-;2560:23;2585:16;;:::i;:::-;2620:75;2635:20;:59;2656:37;2676:16;2656:19;:37::i;:::-;2635:59;;;;;;;;;;;;;;;;;;2620:14;:75::i;:::-;2613:82;;;;;;2454:248;;;;;:::o;68:84:31:-;120:32;;;;;;;;;;;;;;;;;;;68:84;:::o;818:1209:15:-;991:23;1082:27;1607:28;;:::i;:::-;1724:14;410:1;402:10;;306:47:20;317:10;329:5;350:1;336:16;;;;;;;;;;;;;;;;;;;;;;;;306:10;:47::i;:::-;298:56;;;;;;;;1017:16:15;991:42;;1065:1;1047:8;:15;;;;:19;1043:671;;;1112:8;1139:1;1121:8;:15;;;;:19;1112:29;;;;;;;;;;;;;;;;;;;;1082:59;;1163:61;1175:11;:27;;1163:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1204:19;1163:11;:61::i;:::-;1155:70;;;;;;;;1262:1;1243:15;:20;;;1239:104;;;1301:11;:27;;;;;;;;;;;;1283:45;;1239:104;1467:15;1436:46;;:11;:27;;;;;;;;;;;;:46;;;:105;;;;1511:11;:27;;1539:1;1511:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:55;;:19;1506:1;1486:22;;;;;;;;;;;;;:55;;;1436:105;1428:114;;;;;;;;1043:671;;;1592:1;1573:8;:20;;;;;;;;;;;;;;:::i;:::-;;1657:45;1669:11;1682:19;1657:11;:45::i;:::-;1649:54;;;;;;;;1043:671;1817:1;1741:8;:73;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1755:58;;;;;;;;;1763:19;1755:58;;;;1784:15;1755:58;;;;;;1801:11;1755:58;;;1741:73;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:77;1724:94;;1893:9;1828:20;:62;1849:40;1869:19;1849;:40::i;:::-;1828:62;;;;;;;;;;;;;;;;;:74;;;;1958:9;1912:26;:43;1939:15;1912:43;;;;;;;;;;;;;;;:55;;;;1978:42;1989:9;2000:19;1978:42;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;818:1209:15;;;;;;;;:::o;2708:315::-;2770:25;;:::i;:::-;2797:23;2822:16;;:::i;:::-;2883:23;2871:1;2858:10;:14;2850:23;;;;;;;;2909:8;2918:10;2909:20;;;;;;;;;;;;;;;;;;;;2883:46;;2947:7;:23;;2972:7;:23;;;;;;;;;;;;2997:7;:18;;2939:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:315;;;;;;:::o;113:20:19:-;;;;:::o;269:107:25:-;324:7;350:19;;343:26;;269:107;:::o;2210:238:15:-;2294:25;;:::i;:::-;2321:23;2346:16;;:::i;:::-;2381:60;2396:26;:44;2423:16;2396:44;;;;;;;;;;;;;;;;2381:14;:60::i;:::-;2374:67;;;;;;2210:238;;;;;:::o;158:103:31:-;217:16;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103;:::o;506:494:20:-;597:4;613:16;;:::i;:::-;722:18;705:1;689:6;:13;:17;685:212;;;759:2;743:6;:13;:18;722:39;;809:6;802:13;;862:10;857:3;850:6;784:103;932:1;921:6;;;;;;;;;;;913:20;;;:80;;;;937:6;;;;;;;;;;;:20;;;958:7;975:4;982:5;989:3;937:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:80:20;906:87;;506:494;;;;;;;:::o;3177:600:15:-;3265:4;3281:14;3305:6;3314:1;3305:10;;3325:420;3336:1;3332;:5;3325:420;;;3357:9;3353:365;;;3408:1;3390:11;3402:1;3390:14;;;;;;;;;;;;;:19;;;;3386:78;;;3440:5;3433:12;;;;3386:78;3353:365;;;3506:11;3518:1;3506:14;;;;;;;;;;;;;3488:32;;:11;3500:1;3488:14;;;;;;;;;;;;;:32;;;;3484:234;;;3561:11;3573:1;3561:14;;;;;;;;;;;;;3544:31;;:11;3556:1;3544:14;;;;;;;;;;;;;:31;;;:71;;;;3614:1;3596:11;3608:1;3596:14;;;;;;;;;;;;;3579:11;3591:1;3579:14;;;;;;;;;;;;;:31;:36;;;;3544:71;3540:130;;;3646:5;3639:12;;;;3540:130;3699:4;3687:16;;3484:234;3353:365;3731:3;;;;;;;3325:420;;;3761:9;3754:16;;3177:600;;;;;;;:::o;356:56::-;410:1;402:10;;356:56;:::o;2033:171::-;2075:25;;:::i;:::-;2102:23;2127:16;;:::i;:::-;2162:35;2195:1;2177:8;:15;;;;:19;2162:14;:35::i;:::-;2155:42;;;;;;2033:171;;;:::o;3029:142::-;3078:7;3097:11;3111:8;:15;;;;3097:29;;3149:1;3143:3;:7;:21;;3163:1;3143:21;;;3159:1;3153:3;:7;3143:21;3136:28;;3029:142;;:::o;86:21:19:-;;;;;;;;;;;;;:::o;824:169:29:-;881:18;937:21;:19;:21::i;:::-;:39;;;977:7;937:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:75:29;;824:169;;;:::o;3783:149:15:-;3854:7;3890;3898:1;3890:10;;;;;;;;;;;;;3902:7;3910:1;3902:10;;;;;;;;;;;;;3914:7;3922:1;3914:10;;;;;;;;;;;;;3880:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3873:52;;3783:149;;;:::o;1021:200:29:-;1075:18;1105:20;1128:6;;;;;;;;;;;:13;;;217:16:31;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:37:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1105:60;;1201:12;1175:39;;1021:200;;:::o;60:3874:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o",
  "source": "pragma solidity ^0.4.15;\n\nimport \"../apps/AragonApp.sol\";\n\n\ncontract Repo is AragonApp {\n    struct Version {\n        uint16[3] semanticVersion;\n        address contractAddress;\n        bytes contentURI;\n    }\n\n    Version[] versions;\n    mapping (bytes32 => uint256) versionIdForSemantic;\n    mapping (address => uint256) latestVersionIdForContract;\n\n    bytes32 constant public CREATE_VERSION_ROLE = bytes32(1);\n\n    event NewVersion(uint256 versionId, uint16[3] semanticVersion);\n\n    /**\n    * @notice Create new version for repo\n    * @param _newSemanticVersion Semantic version for new repo version\n    * @param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\n    * @param _contentURI External URI for fetching new version's content\n    */\n    function newVersion(\n        uint16[3] _newSemanticVersion,\n        address _contractAddress,\n        bytes _contentURI\n    ) auth(CREATE_VERSION_ROLE) public\n    {\n        address contractAddress = _contractAddress;\n        if (versions.length > 0) {\n            Version storage lastVersion = versions[versions.length - 1];\n            require(isValidBump(lastVersion.semanticVersion, _newSemanticVersion));\n            if (contractAddress == 0) {\n                contractAddress = lastVersion.contractAddress;\n            }\n            // Only allows smart contract change on major version bumps\n            require(lastVersion.contractAddress == contractAddress || _newSemanticVersion[0] > lastVersion.semanticVersion[0]);\n        } else {\n            versions.length += 1;\n            uint16[3] memory zeroVersion;\n            require(isValidBump(zeroVersion, _newSemanticVersion));\n        }\n\n        uint versionId = versions.push(Version(_newSemanticVersion, contractAddress, _contentURI)) - 1;\n        versionIdForSemantic[semanticVersionHash(_newSemanticVersion)] = versionId;\n        latestVersionIdForContract[contractAddress] = versionId;\n\n        NewVersion(versionId, _newSemanticVersion);\n    }\n\n    function getLatest() public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) {\n        return getByVersionId(versions.length - 1);\n    }\n\n    function getLatestForContractAddress(address _contractAddress) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) {\n        return getByVersionId(latestVersionIdForContract[_contractAddress]);\n    }\n\n    function getBySemanticVersion(uint16[3] _semanticVersion) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) {\n        return getByVersionId(versionIdForSemantic[semanticVersionHash(_semanticVersion)]);\n    }\n\n    function getByVersionId(uint _versionId) public view returns (uint16[3] semanticVersion, address contractAddress, bytes contentURI) {\n        require(_versionId > 0);\n        Version storage version = versions[_versionId];\n        return (version.semanticVersion, version.contractAddress, version.contentURI);\n    }\n\n    function getVersionsCount() public view returns (uint256) {\n        uint256 len = versions.length;\n        return len > 0 ? len - 1 : 0;\n    }\n\n    function isValidBump(uint16[3] _oldVersion, uint16[3] _newVersion) public pure returns (bool) {\n        bool hasBumped;\n        uint i = 0;\n        while (i < 3) {\n            if (hasBumped) {\n                if (_newVersion[i] != 0) {\n                    return false;\n                }\n            } else if (_newVersion[i] != _oldVersion[i]) {\n                if (_oldVersion[i] > _newVersion[i] || _newVersion[i] - _oldVersion[i] != 1) {\n                    return false;\n                }\n                hasBumped = true;\n            }\n            i++;\n        }\n        return hasBumped;\n    }\n\n    function semanticVersionHash(uint16[3] version) internal pure returns (bytes32) {\n        return keccak256(version[0], version[1], version[2]);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/apm/Repo.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
      "exportedSymbols": {
        "Repo": [
          6654
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".15"
          ]
        },
        "id": 6281,
        "name": "PragmaDirective",
        "src": "0:24:15"
      },
      {
        "attributes": {
          "SourceUnit": 6969,
          "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
          "file": "../apps/AragonApp.sol",
          "scope": 6655,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6282,
        "name": "ImportDirective",
        "src": "26:31:15"
      },
      {
        "attributes": {
          "contractDependencies": [
            5905,
            6870,
            6968,
            7261,
            7846,
            7877
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6654,
            6968,
            7846,
            7877,
            5905,
            7261,
            6870
          ],
          "name": "Repo",
          "scope": 6655
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AragonApp",
                  "referencedDeclaration": 6968,
                  "type": "contract AragonApp"
                },
                "id": 6283,
                "name": "UserDefinedTypeName",
                "src": "77:9:15"
              }
            ],
            "id": 6284,
            "name": "InheritanceSpecifier",
            "src": "77:9:15"
          },
          {
            "attributes": {
              "canonicalName": "Repo.Version",
              "name": "Version",
              "scope": 6654,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "name": "semanticVersion",
                  "scope": 6293,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint16[3] storage pointer",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "type": "uint16[3] storage pointer"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint16",
                          "type": "uint16"
                        },
                        "id": 6285,
                        "name": "ElementaryTypeName",
                        "src": "118:6:15"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "33",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 3",
                          "value": "3"
                        },
                        "id": 6286,
                        "name": "Literal",
                        "src": "125:1:15"
                      }
                    ],
                    "id": 6287,
                    "name": "ArrayTypeName",
                    "src": "118:9:15"
                  }
                ],
                "id": 6288,
                "name": "VariableDeclaration",
                "src": "118:25:15"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "contractAddress",
                  "scope": 6293,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 6289,
                    "name": "ElementaryTypeName",
                    "src": "153:7:15"
                  }
                ],
                "id": 6290,
                "name": "VariableDeclaration",
                "src": "153:23:15"
              },
              {
                "attributes": {
                  "constant": false,
                  "name": "contentURI",
                  "scope": 6293,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "bytes storage pointer",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes",
                      "type": "bytes storage pointer"
                    },
                    "id": 6291,
                    "name": "ElementaryTypeName",
                    "src": "186:5:15"
                  }
                ],
                "id": 6292,
                "name": "VariableDeclaration",
                "src": "186:16:15"
              }
            ],
            "id": 6293,
            "name": "StructDefinition",
            "src": "93:116:15"
          },
          {
            "attributes": {
              "constant": false,
              "name": "versions",
              "scope": 6654,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct Repo.Version storage ref[] storage ref",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "length": null,
                  "type": "struct Repo.Version storage ref[] storage pointer"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Version",
                      "referencedDeclaration": 6293,
                      "type": "struct Repo.Version storage pointer"
                    },
                    "id": 6294,
                    "name": "UserDefinedTypeName",
                    "src": "215:7:15"
                  }
                ],
                "id": 6295,
                "name": "ArrayTypeName",
                "src": "215:9:15"
              }
            ],
            "id": 6296,
            "name": "VariableDeclaration",
            "src": "215:18:15"
          },
          {
            "attributes": {
              "constant": false,
              "name": "versionIdForSemantic",
              "scope": 6654,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => uint256)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 6297,
                    "name": "ElementaryTypeName",
                    "src": "248:7:15"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 6298,
                    "name": "ElementaryTypeName",
                    "src": "259:7:15"
                  }
                ],
                "id": 6299,
                "name": "Mapping",
                "src": "239:28:15"
              }
            ],
            "id": 6300,
            "name": "VariableDeclaration",
            "src": "239:49:15"
          },
          {
            "attributes": {
              "constant": false,
              "name": "latestVersionIdForContract",
              "scope": 6654,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => uint256)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 6301,
                    "name": "ElementaryTypeName",
                    "src": "303:7:15"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 6302,
                    "name": "ElementaryTypeName",
                    "src": "314:7:15"
                  }
                ],
                "id": 6303,
                "name": "Mapping",
                "src": "294:28:15"
              }
            ],
            "id": 6304,
            "name": "VariableDeclaration",
            "src": "294:55:15"
          },
          {
            "attributes": {
              "constant": true,
              "name": "CREATE_VERSION_ROLE",
              "scope": 6654,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 6305,
                "name": "ElementaryTypeName",
                "src": "356:7:15"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": true
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "type": "type(bytes32)",
                      "value": "bytes32"
                    },
                    "id": 6306,
                    "name": "ElementaryTypeNameExpression",
                    "src": "402:7:15"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "31",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 1",
                      "value": "1"
                    },
                    "id": 6307,
                    "name": "Literal",
                    "src": "410:1:15"
                  }
                ],
                "id": 6308,
                "name": "FunctionCall",
                "src": "402:10:15"
              }
            ],
            "id": 6309,
            "name": "VariableDeclaration",
            "src": "356:56:15"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "NewVersion"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "versionId",
                      "scope": 6317,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6310,
                        "name": "ElementaryTypeName",
                        "src": "436:7:15"
                      }
                    ],
                    "id": 6311,
                    "name": "VariableDeclaration",
                    "src": "436:17:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "semanticVersion",
                      "scope": 6317,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6312,
                            "name": "ElementaryTypeName",
                            "src": "455:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6313,
                            "name": "Literal",
                            "src": "462:1:15"
                          }
                        ],
                        "id": 6314,
                        "name": "ArrayTypeName",
                        "src": "455:9:15"
                      }
                    ],
                    "id": 6315,
                    "name": "VariableDeclaration",
                    "src": "455:25:15"
                  }
                ],
                "id": 6316,
                "name": "ParameterList",
                "src": "435:46:15"
              }
            ],
            "id": 6317,
            "name": "EventDefinition",
            "src": "419:63:15"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newVersion",
              "payable": false,
              "scope": 6654,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newSemanticVersion",
                      "scope": 6437,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6318,
                            "name": "ElementaryTypeName",
                            "src": "847:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6319,
                            "name": "Literal",
                            "src": "854:1:15"
                          }
                        ],
                        "id": 6320,
                        "name": "ArrayTypeName",
                        "src": "847:9:15"
                      }
                    ],
                    "id": 6321,
                    "name": "VariableDeclaration",
                    "src": "847:29:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contractAddress",
                      "scope": 6437,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6322,
                        "name": "ElementaryTypeName",
                        "src": "886:7:15"
                      }
                    ],
                    "id": 6323,
                    "name": "VariableDeclaration",
                    "src": "886:24:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contentURI",
                      "scope": 6437,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6324,
                        "name": "ElementaryTypeName",
                        "src": "920:5:15"
                      }
                    ],
                    "id": 6325,
                    "name": "VariableDeclaration",
                    "src": "920:17:15"
                  }
                ],
                "id": 6326,
                "name": "ParameterList",
                "src": "837:106:15"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6330,
                "name": "ParameterList",
                "src": "981:0:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6903,
                      "type": "modifier (bytes32)",
                      "value": "auth"
                    },
                    "id": 6327,
                    "name": "Identifier",
                    "src": "944:4:15"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6309,
                      "type": "bytes32",
                      "value": "CREATE_VERSION_ROLE"
                    },
                    "id": 6328,
                    "name": "Identifier",
                    "src": "949:19:15"
                  }
                ],
                "id": 6329,
                "name": "ModifierInvocation",
                "src": "944:25:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6332
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "contractAddress",
                          "scope": 6437,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 6331,
                            "name": "ElementaryTypeName",
                            "src": "991:7:15"
                          }
                        ],
                        "id": 6332,
                        "name": "VariableDeclaration",
                        "src": "991:23:15"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6323,
                          "type": "address",
                          "value": "_contractAddress"
                        },
                        "id": 6333,
                        "name": "Identifier",
                        "src": "1017:16:15"
                      }
                    ],
                    "id": 6334,
                    "name": "VariableDeclarationStatement",
                    "src": "991:42:15"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6296,
                                  "type": "struct Repo.Version storage ref[] storage ref",
                                  "value": "versions"
                                },
                                "id": 6335,
                                "name": "Identifier",
                                "src": "1047:8:15"
                              }
                            ],
                            "id": 6336,
                            "name": "MemberAccess",
                            "src": "1047:15:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 6337,
                            "name": "Literal",
                            "src": "1065:1:15"
                          }
                        ],
                        "id": 6338,
                        "name": "BinaryOperation",
                        "src": "1047:19:15"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                6340
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "lastVersion",
                                  "scope": 6437,
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "type": "struct Repo.Version storage pointer",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "contractScope": null,
                                      "name": "Version",
                                      "referencedDeclaration": 6293,
                                      "type": "struct Repo.Version storage pointer"
                                    },
                                    "id": 6339,
                                    "name": "UserDefinedTypeName",
                                    "src": "1082:7:15"
                                  }
                                ],
                                "id": 6340,
                                "name": "VariableDeclaration",
                                "src": "1082:27:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Repo.Version storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6296,
                                      "type": "struct Repo.Version storage ref[] storage ref",
                                      "value": "versions"
                                    },
                                    "id": 6341,
                                    "name": "Identifier",
                                    "src": "1112:8:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "length",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6296,
                                              "type": "struct Repo.Version storage ref[] storage ref",
                                              "value": "versions"
                                            },
                                            "id": 6342,
                                            "name": "Identifier",
                                            "src": "1121:8:15"
                                          }
                                        ],
                                        "id": 6343,
                                        "name": "MemberAccess",
                                        "src": "1121:15:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 6344,
                                        "name": "Literal",
                                        "src": "1139:1:15"
                                      }
                                    ],
                                    "id": 6345,
                                    "name": "BinaryOperation",
                                    "src": "1121:19:15"
                                  }
                                ],
                                "id": 6346,
                                "name": "IndexAccess",
                                "src": "1112:29:15"
                              }
                            ],
                            "id": 6347,
                            "name": "VariableDeclarationStatement",
                            "src": "1082:59:15"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12593,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 6348,
                                    "name": "Identifier",
                                    "src": "1155:7:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_array$_t_uint16_$3_storage",
                                              "typeString": "uint16[3] storage ref"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                              "typeString": "uint16[3] memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6631,
                                          "type": "function (uint16[3] memory,uint16[3] memory) pure returns (bool)",
                                          "value": "isValidBump"
                                        },
                                        "id": 6349,
                                        "name": "Identifier",
                                        "src": "1163:11:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "semanticVersion",
                                          "referencedDeclaration": 6288,
                                          "type": "uint16[3] storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6340,
                                              "type": "struct Repo.Version storage pointer",
                                              "value": "lastVersion"
                                            },
                                            "id": 6350,
                                            "name": "Identifier",
                                            "src": "1175:11:15"
                                          }
                                        ],
                                        "id": 6351,
                                        "name": "MemberAccess",
                                        "src": "1175:27:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6321,
                                          "type": "uint16[3] memory",
                                          "value": "_newSemanticVersion"
                                        },
                                        "id": 6352,
                                        "name": "Identifier",
                                        "src": "1204:19:15"
                                      }
                                    ],
                                    "id": 6353,
                                    "name": "FunctionCall",
                                    "src": "1163:61:15"
                                  }
                                ],
                                "id": 6354,
                                "name": "FunctionCall",
                                "src": "1155:70:15"
                              }
                            ],
                            "id": 6355,
                            "name": "ExpressionStatement",
                            "src": "1155:70:15"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6332,
                                      "type": "address",
                                      "value": "contractAddress"
                                    },
                                    "id": 6356,
                                    "name": "Identifier",
                                    "src": "1243:15:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 6357,
                                    "name": "Literal",
                                    "src": "1262:1:15"
                                  }
                                ],
                                "id": 6358,
                                "name": "BinaryOperation",
                                "src": "1243:20:15"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6332,
                                              "type": "address",
                                              "value": "contractAddress"
                                            },
                                            "id": 6359,
                                            "name": "Identifier",
                                            "src": "1283:15:15"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "contractAddress",
                                              "referencedDeclaration": 6290,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6340,
                                                  "type": "struct Repo.Version storage pointer",
                                                  "value": "lastVersion"
                                                },
                                                "id": 6360,
                                                "name": "Identifier",
                                                "src": "1301:11:15"
                                              }
                                            ],
                                            "id": 6361,
                                            "name": "MemberAccess",
                                            "src": "1301:27:15"
                                          }
                                        ],
                                        "id": 6362,
                                        "name": "Assignment",
                                        "src": "1283:45:15"
                                      }
                                    ],
                                    "id": 6363,
                                    "name": "ExpressionStatement",
                                    "src": "1283:45:15"
                                  }
                                ],
                                "id": 6364,
                                "name": "Block",
                                "src": "1265:78:15"
                              }
                            ],
                            "id": 6365,
                            "name": "IfStatement",
                            "src": "1239:104:15"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12593,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 6366,
                                    "name": "Identifier",
                                    "src": "1428:7:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "||",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "==",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "contractAddress",
                                              "referencedDeclaration": 6290,
                                              "type": "address"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6340,
                                                  "type": "struct Repo.Version storage pointer",
                                                  "value": "lastVersion"
                                                },
                                                "id": 6367,
                                                "name": "Identifier",
                                                "src": "1436:11:15"
                                              }
                                            ],
                                            "id": 6368,
                                            "name": "MemberAccess",
                                            "src": "1436:27:15"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6332,
                                              "type": "address",
                                              "value": "contractAddress"
                                            },
                                            "id": 6369,
                                            "name": "Identifier",
                                            "src": "1467:15:15"
                                          }
                                        ],
                                        "id": 6370,
                                        "name": "BinaryOperation",
                                        "src": "1436:46:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": ">",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint16"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6321,
                                                  "type": "uint16[3] memory",
                                                  "value": "_newSemanticVersion"
                                                },
                                                "id": 6371,
                                                "name": "Identifier",
                                                "src": "1486:19:15"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 6372,
                                                "name": "Literal",
                                                "src": "1506:1:15"
                                              }
                                            ],
                                            "id": 6373,
                                            "name": "IndexAccess",
                                            "src": "1486:22:15"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint16"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "semanticVersion",
                                                  "referencedDeclaration": 6288,
                                                  "type": "uint16[3] storage ref"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 6340,
                                                      "type": "struct Repo.Version storage pointer",
                                                      "value": "lastVersion"
                                                    },
                                                    "id": 6374,
                                                    "name": "Identifier",
                                                    "src": "1511:11:15"
                                                  }
                                                ],
                                                "id": 6375,
                                                "name": "MemberAccess",
                                                "src": "1511:27:15"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 6376,
                                                "name": "Literal",
                                                "src": "1539:1:15"
                                              }
                                            ],
                                            "id": 6377,
                                            "name": "IndexAccess",
                                            "src": "1511:30:15"
                                          }
                                        ],
                                        "id": 6378,
                                        "name": "BinaryOperation",
                                        "src": "1486:55:15"
                                      }
                                    ],
                                    "id": 6379,
                                    "name": "BinaryOperation",
                                    "src": "1436:105:15"
                                  }
                                ],
                                "id": 6380,
                                "name": "FunctionCall",
                                "src": "1428:114:15"
                              }
                            ],
                            "id": 6381,
                            "name": "ExpressionStatement",
                            "src": "1428:114:15"
                          }
                        ],
                        "id": 6382,
                        "name": "Block",
                        "src": "1068:485:15"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "length",
                                      "referencedDeclaration": null,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6296,
                                          "type": "struct Repo.Version storage ref[] storage ref",
                                          "value": "versions"
                                        },
                                        "id": 6383,
                                        "name": "Identifier",
                                        "src": "1573:8:15"
                                      }
                                    ],
                                    "id": 6385,
                                    "name": "MemberAccess",
                                    "src": "1573:15:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 6386,
                                    "name": "Literal",
                                    "src": "1592:1:15"
                                  }
                                ],
                                "id": 6387,
                                "name": "Assignment",
                                "src": "1573:20:15"
                              }
                            ],
                            "id": 6388,
                            "name": "ExpressionStatement",
                            "src": "1573:20:15"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                null
                              ],
                              "initialValue": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "zeroVersion",
                                  "scope": 6437,
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "type": "uint16[3] memory",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "type": "uint16[3] storage pointer"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint16",
                                          "type": "uint16"
                                        },
                                        "id": 6391,
                                        "name": "ElementaryTypeName",
                                        "src": "1607:6:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "33",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 3",
                                          "value": "3"
                                        },
                                        "id": 6390,
                                        "name": "Literal",
                                        "src": "1614:1:15"
                                      }
                                    ],
                                    "id": 6392,
                                    "name": "ArrayTypeName",
                                    "src": "1607:9:15"
                                  }
                                ],
                                "id": 6393,
                                "name": "VariableDeclaration",
                                "src": "1607:28:15"
                              }
                            ],
                            "id": 6394,
                            "name": "VariableDeclarationStatement",
                            "src": "1607:28:15"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 12593,
                                      "type": "function (bool) pure",
                                      "value": "require"
                                    },
                                    "id": 6395,
                                    "name": "Identifier",
                                    "src": "1649:7:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                              "typeString": "uint16[3] memory"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                              "typeString": "uint16[3] memory"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6631,
                                          "type": "function (uint16[3] memory,uint16[3] memory) pure returns (bool)",
                                          "value": "isValidBump"
                                        },
                                        "id": 6396,
                                        "name": "Identifier",
                                        "src": "1657:11:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6393,
                                          "type": "uint16[3] memory",
                                          "value": "zeroVersion"
                                        },
                                        "id": 6397,
                                        "name": "Identifier",
                                        "src": "1669:11:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6321,
                                          "type": "uint16[3] memory",
                                          "value": "_newSemanticVersion"
                                        },
                                        "id": 6398,
                                        "name": "Identifier",
                                        "src": "1682:19:15"
                                      }
                                    ],
                                    "id": 6399,
                                    "name": "FunctionCall",
                                    "src": "1657:45:15"
                                  }
                                ],
                                "id": 6400,
                                "name": "FunctionCall",
                                "src": "1649:54:15"
                              }
                            ],
                            "id": 6401,
                            "name": "ExpressionStatement",
                            "src": "1649:54:15"
                          }
                        ],
                        "id": 6402,
                        "name": "Block",
                        "src": "1559:155:15"
                      }
                    ],
                    "id": 6403,
                    "name": "IfStatement",
                    "src": "1043:671:15"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6405
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "versionId",
                          "scope": 6437,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 6404,
                            "name": "ElementaryTypeName",
                            "src": "1724:4:15"
                          }
                        ],
                        "id": 6405,
                        "name": "VariableDeclaration",
                        "src": "1724:14:15"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Version_$6293_memory",
                                      "typeString": "struct Repo.Version memory"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "push",
                                  "referencedDeclaration": null,
                                  "type": "function (struct Repo.Version storage ref) returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6296,
                                      "type": "struct Repo.Version storage ref[] storage ref",
                                      "value": "versions"
                                    },
                                    "id": 6406,
                                    "name": "Identifier",
                                    "src": "1741:8:15"
                                  }
                                ],
                                "id": 6407,
                                "name": "MemberAccess",
                                "src": "1741:13:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": true,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "struct Repo.Version memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6293,
                                      "type": "type(struct Repo.Version storage pointer)",
                                      "value": "Version"
                                    },
                                    "id": 6408,
                                    "name": "Identifier",
                                    "src": "1755:7:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6321,
                                      "type": "uint16[3] memory",
                                      "value": "_newSemanticVersion"
                                    },
                                    "id": 6409,
                                    "name": "Identifier",
                                    "src": "1763:19:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6332,
                                      "type": "address",
                                      "value": "contractAddress"
                                    },
                                    "id": 6410,
                                    "name": "Identifier",
                                    "src": "1784:15:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6325,
                                      "type": "bytes memory",
                                      "value": "_contentURI"
                                    },
                                    "id": 6411,
                                    "name": "Identifier",
                                    "src": "1801:11:15"
                                  }
                                ],
                                "id": 6412,
                                "name": "FunctionCall",
                                "src": "1755:58:15"
                              }
                            ],
                            "id": 6413,
                            "name": "FunctionCall",
                            "src": "1741:73:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 6414,
                            "name": "Literal",
                            "src": "1817:1:15"
                          }
                        ],
                        "id": 6415,
                        "name": "BinaryOperation",
                        "src": "1741:77:15"
                      }
                    ],
                    "id": 6416,
                    "name": "VariableDeclarationStatement",
                    "src": "1724:94:15"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6300,
                                  "type": "mapping(bytes32 => uint256)",
                                  "value": "versionIdForSemantic"
                                },
                                "id": 6417,
                                "name": "Identifier",
                                "src": "1828:20:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6653,
                                      "type": "function (uint16[3] memory) pure returns (bytes32)",
                                      "value": "semanticVersionHash"
                                    },
                                    "id": 6418,
                                    "name": "Identifier",
                                    "src": "1849:19:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6321,
                                      "type": "uint16[3] memory",
                                      "value": "_newSemanticVersion"
                                    },
                                    "id": 6419,
                                    "name": "Identifier",
                                    "src": "1869:19:15"
                                  }
                                ],
                                "id": 6420,
                                "name": "FunctionCall",
                                "src": "1849:40:15"
                              }
                            ],
                            "id": 6421,
                            "name": "IndexAccess",
                            "src": "1828:62:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6405,
                              "type": "uint256",
                              "value": "versionId"
                            },
                            "id": 6422,
                            "name": "Identifier",
                            "src": "1893:9:15"
                          }
                        ],
                        "id": 6423,
                        "name": "Assignment",
                        "src": "1828:74:15"
                      }
                    ],
                    "id": 6424,
                    "name": "ExpressionStatement",
                    "src": "1828:74:15"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6304,
                                  "type": "mapping(address => uint256)",
                                  "value": "latestVersionIdForContract"
                                },
                                "id": 6425,
                                "name": "Identifier",
                                "src": "1912:26:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6332,
                                  "type": "address",
                                  "value": "contractAddress"
                                },
                                "id": 6426,
                                "name": "Identifier",
                                "src": "1939:15:15"
                              }
                            ],
                            "id": 6427,
                            "name": "IndexAccess",
                            "src": "1912:43:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6405,
                              "type": "uint256",
                              "value": "versionId"
                            },
                            "id": 6428,
                            "name": "Identifier",
                            "src": "1958:9:15"
                          }
                        ],
                        "id": 6429,
                        "name": "Assignment",
                        "src": "1912:55:15"
                      }
                    ],
                    "id": 6430,
                    "name": "ExpressionStatement",
                    "src": "1912:55:15"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6317,
                              "type": "function (uint256,uint16[3] memory)",
                              "value": "NewVersion"
                            },
                            "id": 6431,
                            "name": "Identifier",
                            "src": "1978:10:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6405,
                              "type": "uint256",
                              "value": "versionId"
                            },
                            "id": 6432,
                            "name": "Identifier",
                            "src": "1989:9:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6321,
                              "type": "uint16[3] memory",
                              "value": "_newSemanticVersion"
                            },
                            "id": 6433,
                            "name": "Identifier",
                            "src": "2000:19:15"
                          }
                        ],
                        "id": 6434,
                        "name": "FunctionCall",
                        "src": "1978:42:15"
                      }
                    ],
                    "id": 6435,
                    "name": "ExpressionStatement",
                    "src": "1978:42:15"
                  }
                ],
                "id": 6436,
                "name": "Block",
                "src": "981:1046:15"
              }
            ],
            "id": 6437,
            "name": "FunctionDefinition",
            "src": "818:1209:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getLatest",
              "payable": false,
              "scope": 6654,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6438,
                "name": "ParameterList",
                "src": "2051:2:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "semanticVersion",
                      "scope": 6456,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6439,
                            "name": "ElementaryTypeName",
                            "src": "2075:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6440,
                            "name": "Literal",
                            "src": "2082:1:15"
                          }
                        ],
                        "id": 6441,
                        "name": "ArrayTypeName",
                        "src": "2075:9:15"
                      }
                    ],
                    "id": 6442,
                    "name": "VariableDeclaration",
                    "src": "2075:25:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contractAddress",
                      "scope": 6456,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6443,
                        "name": "ElementaryTypeName",
                        "src": "2102:7:15"
                      }
                    ],
                    "id": 6444,
                    "name": "VariableDeclaration",
                    "src": "2102:23:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contentURI",
                      "scope": 6456,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6445,
                        "name": "ElementaryTypeName",
                        "src": "2127:5:15"
                      }
                    ],
                    "id": 6446,
                    "name": "VariableDeclaration",
                    "src": "2127:16:15"
                  }
                ],
                "id": 6447,
                "name": "ParameterList",
                "src": "2074:70:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6447
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple(uint16[3] memory,address,bytes memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6534,
                              "type": "function (uint256) view returns (uint16[3] memory,address,bytes memory)",
                              "value": "getByVersionId"
                            },
                            "id": 6448,
                            "name": "Identifier",
                            "src": "2162:14:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6296,
                                      "type": "struct Repo.Version storage ref[] storage ref",
                                      "value": "versions"
                                    },
                                    "id": 6449,
                                    "name": "Identifier",
                                    "src": "2177:8:15"
                                  }
                                ],
                                "id": 6450,
                                "name": "MemberAccess",
                                "src": "2177:15:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 6451,
                                "name": "Literal",
                                "src": "2195:1:15"
                              }
                            ],
                            "id": 6452,
                            "name": "BinaryOperation",
                            "src": "2177:19:15"
                          }
                        ],
                        "id": 6453,
                        "name": "FunctionCall",
                        "src": "2162:35:15"
                      }
                    ],
                    "id": 6454,
                    "name": "Return",
                    "src": "2155:42:15"
                  }
                ],
                "id": 6455,
                "name": "Block",
                "src": "2145:59:15"
              }
            ],
            "id": 6456,
            "name": "FunctionDefinition",
            "src": "2033:171:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getLatestForContractAddress",
              "payable": false,
              "scope": 6654,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contractAddress",
                      "scope": 6476,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6457,
                        "name": "ElementaryTypeName",
                        "src": "2247:7:15"
                      }
                    ],
                    "id": 6458,
                    "name": "VariableDeclaration",
                    "src": "2247:24:15"
                  }
                ],
                "id": 6459,
                "name": "ParameterList",
                "src": "2246:26:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "semanticVersion",
                      "scope": 6476,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6460,
                            "name": "ElementaryTypeName",
                            "src": "2294:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6461,
                            "name": "Literal",
                            "src": "2301:1:15"
                          }
                        ],
                        "id": 6462,
                        "name": "ArrayTypeName",
                        "src": "2294:9:15"
                      }
                    ],
                    "id": 6463,
                    "name": "VariableDeclaration",
                    "src": "2294:25:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contractAddress",
                      "scope": 6476,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6464,
                        "name": "ElementaryTypeName",
                        "src": "2321:7:15"
                      }
                    ],
                    "id": 6465,
                    "name": "VariableDeclaration",
                    "src": "2321:23:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contentURI",
                      "scope": 6476,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6466,
                        "name": "ElementaryTypeName",
                        "src": "2346:5:15"
                      }
                    ],
                    "id": 6467,
                    "name": "VariableDeclaration",
                    "src": "2346:16:15"
                  }
                ],
                "id": 6468,
                "name": "ParameterList",
                "src": "2293:70:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6468
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple(uint16[3] memory,address,bytes memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6534,
                              "type": "function (uint256) view returns (uint16[3] memory,address,bytes memory)",
                              "value": "getByVersionId"
                            },
                            "id": 6469,
                            "name": "Identifier",
                            "src": "2381:14:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6304,
                                  "type": "mapping(address => uint256)",
                                  "value": "latestVersionIdForContract"
                                },
                                "id": 6470,
                                "name": "Identifier",
                                "src": "2396:26:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6458,
                                  "type": "address",
                                  "value": "_contractAddress"
                                },
                                "id": 6471,
                                "name": "Identifier",
                                "src": "2423:16:15"
                              }
                            ],
                            "id": 6472,
                            "name": "IndexAccess",
                            "src": "2396:44:15"
                          }
                        ],
                        "id": 6473,
                        "name": "FunctionCall",
                        "src": "2381:60:15"
                      }
                    ],
                    "id": 6474,
                    "name": "Return",
                    "src": "2374:67:15"
                  }
                ],
                "id": 6475,
                "name": "Block",
                "src": "2364:84:15"
              }
            ],
            "id": 6476,
            "name": "FunctionDefinition",
            "src": "2210:238:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getBySemanticVersion",
              "payable": false,
              "scope": 6654,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_semanticVersion",
                      "scope": 6500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6477,
                            "name": "ElementaryTypeName",
                            "src": "2484:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6478,
                            "name": "Literal",
                            "src": "2491:1:15"
                          }
                        ],
                        "id": 6479,
                        "name": "ArrayTypeName",
                        "src": "2484:9:15"
                      }
                    ],
                    "id": 6480,
                    "name": "VariableDeclaration",
                    "src": "2484:26:15"
                  }
                ],
                "id": 6481,
                "name": "ParameterList",
                "src": "2483:28:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "semanticVersion",
                      "scope": 6500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6482,
                            "name": "ElementaryTypeName",
                            "src": "2533:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6483,
                            "name": "Literal",
                            "src": "2540:1:15"
                          }
                        ],
                        "id": 6484,
                        "name": "ArrayTypeName",
                        "src": "2533:9:15"
                      }
                    ],
                    "id": 6485,
                    "name": "VariableDeclaration",
                    "src": "2533:25:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contractAddress",
                      "scope": 6500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6486,
                        "name": "ElementaryTypeName",
                        "src": "2560:7:15"
                      }
                    ],
                    "id": 6487,
                    "name": "VariableDeclaration",
                    "src": "2560:23:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contentURI",
                      "scope": 6500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6488,
                        "name": "ElementaryTypeName",
                        "src": "2585:5:15"
                      }
                    ],
                    "id": 6489,
                    "name": "VariableDeclaration",
                    "src": "2585:16:15"
                  }
                ],
                "id": 6490,
                "name": "ParameterList",
                "src": "2532:70:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6490
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple(uint16[3] memory,address,bytes memory)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6534,
                              "type": "function (uint256) view returns (uint16[3] memory,address,bytes memory)",
                              "value": "getByVersionId"
                            },
                            "id": 6491,
                            "name": "Identifier",
                            "src": "2620:14:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6300,
                                  "type": "mapping(bytes32 => uint256)",
                                  "value": "versionIdForSemantic"
                                },
                                "id": 6492,
                                "name": "Identifier",
                                "src": "2635:20:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                          "typeString": "uint16[3] memory"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6653,
                                      "type": "function (uint16[3] memory) pure returns (bytes32)",
                                      "value": "semanticVersionHash"
                                    },
                                    "id": 6493,
                                    "name": "Identifier",
                                    "src": "2656:19:15"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6480,
                                      "type": "uint16[3] memory",
                                      "value": "_semanticVersion"
                                    },
                                    "id": 6494,
                                    "name": "Identifier",
                                    "src": "2676:16:15"
                                  }
                                ],
                                "id": 6495,
                                "name": "FunctionCall",
                                "src": "2656:37:15"
                              }
                            ],
                            "id": 6496,
                            "name": "IndexAccess",
                            "src": "2635:59:15"
                          }
                        ],
                        "id": 6497,
                        "name": "FunctionCall",
                        "src": "2620:75:15"
                      }
                    ],
                    "id": 6498,
                    "name": "Return",
                    "src": "2613:82:15"
                  }
                ],
                "id": 6499,
                "name": "Block",
                "src": "2603:99:15"
              }
            ],
            "id": 6500,
            "name": "FunctionDefinition",
            "src": "2454:248:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getByVersionId",
              "payable": false,
              "scope": 6654,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_versionId",
                      "scope": 6534,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 6501,
                        "name": "ElementaryTypeName",
                        "src": "2732:4:15"
                      }
                    ],
                    "id": 6502,
                    "name": "VariableDeclaration",
                    "src": "2732:15:15"
                  }
                ],
                "id": 6503,
                "name": "ParameterList",
                "src": "2731:17:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "semanticVersion",
                      "scope": 6534,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6504,
                            "name": "ElementaryTypeName",
                            "src": "2770:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6505,
                            "name": "Literal",
                            "src": "2777:1:15"
                          }
                        ],
                        "id": 6506,
                        "name": "ArrayTypeName",
                        "src": "2770:9:15"
                      }
                    ],
                    "id": 6507,
                    "name": "VariableDeclaration",
                    "src": "2770:25:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contractAddress",
                      "scope": 6534,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6508,
                        "name": "ElementaryTypeName",
                        "src": "2797:7:15"
                      }
                    ],
                    "id": 6509,
                    "name": "VariableDeclaration",
                    "src": "2797:23:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "contentURI",
                      "scope": 6534,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6510,
                        "name": "ElementaryTypeName",
                        "src": "2822:5:15"
                      }
                    ],
                    "id": 6511,
                    "name": "VariableDeclaration",
                    "src": "2822:16:15"
                  }
                ],
                "id": 6512,
                "name": "ParameterList",
                "src": "2769:70:15"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6513,
                            "name": "Identifier",
                            "src": "2850:7:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6502,
                                  "type": "uint256",
                                  "value": "_versionId"
                                },
                                "id": 6514,
                                "name": "Identifier",
                                "src": "2858:10:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6515,
                                "name": "Literal",
                                "src": "2871:1:15"
                              }
                            ],
                            "id": 6516,
                            "name": "BinaryOperation",
                            "src": "2858:14:15"
                          }
                        ],
                        "id": 6517,
                        "name": "FunctionCall",
                        "src": "2850:23:15"
                      }
                    ],
                    "id": 6518,
                    "name": "ExpressionStatement",
                    "src": "2850:23:15"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6520
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "version",
                          "scope": 6534,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Repo.Version storage pointer",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Version",
                              "referencedDeclaration": 6293,
                              "type": "struct Repo.Version storage pointer"
                            },
                            "id": 6519,
                            "name": "UserDefinedTypeName",
                            "src": "2883:7:15"
                          }
                        ],
                        "id": 6520,
                        "name": "VariableDeclaration",
                        "src": "2883:23:15"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Repo.Version storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6296,
                              "type": "struct Repo.Version storage ref[] storage ref",
                              "value": "versions"
                            },
                            "id": 6521,
                            "name": "Identifier",
                            "src": "2909:8:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6502,
                              "type": "uint256",
                              "value": "_versionId"
                            },
                            "id": 6522,
                            "name": "Identifier",
                            "src": "2918:10:15"
                          }
                        ],
                        "id": 6523,
                        "name": "IndexAccess",
                        "src": "2909:20:15"
                      }
                    ],
                    "id": 6524,
                    "name": "VariableDeclarationStatement",
                    "src": "2883:46:15"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6512
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "tuple(uint16[3] storage ref,address,bytes storage ref)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "semanticVersion",
                              "referencedDeclaration": 6288,
                              "type": "uint16[3] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6520,
                                  "type": "struct Repo.Version storage pointer",
                                  "value": "version"
                                },
                                "id": 6525,
                                "name": "Identifier",
                                "src": "2947:7:15"
                              }
                            ],
                            "id": 6526,
                            "name": "MemberAccess",
                            "src": "2947:23:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "contractAddress",
                              "referencedDeclaration": 6290,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6520,
                                  "type": "struct Repo.Version storage pointer",
                                  "value": "version"
                                },
                                "id": 6527,
                                "name": "Identifier",
                                "src": "2972:7:15"
                              }
                            ],
                            "id": 6528,
                            "name": "MemberAccess",
                            "src": "2972:23:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "contentURI",
                              "referencedDeclaration": 6292,
                              "type": "bytes storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6520,
                                  "type": "struct Repo.Version storage pointer",
                                  "value": "version"
                                },
                                "id": 6529,
                                "name": "Identifier",
                                "src": "2997:7:15"
                              }
                            ],
                            "id": 6530,
                            "name": "MemberAccess",
                            "src": "2997:18:15"
                          }
                        ],
                        "id": 6531,
                        "name": "TupleExpression",
                        "src": "2946:70:15"
                      }
                    ],
                    "id": 6532,
                    "name": "Return",
                    "src": "2939:77:15"
                  }
                ],
                "id": 6533,
                "name": "Block",
                "src": "2840:183:15"
              }
            ],
            "id": 6534,
            "name": "FunctionDefinition",
            "src": "2708:315:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getVersionsCount",
              "payable": false,
              "scope": 6654,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6535,
                "name": "ParameterList",
                "src": "3054:2:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6554,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6536,
                        "name": "ElementaryTypeName",
                        "src": "3078:7:15"
                      }
                    ],
                    "id": 6537,
                    "name": "VariableDeclaration",
                    "src": "3078:7:15"
                  }
                ],
                "id": 6538,
                "name": "ParameterList",
                "src": "3077:9:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6540
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "len",
                          "scope": 6554,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 6539,
                            "name": "ElementaryTypeName",
                            "src": "3097:7:15"
                          }
                        ],
                        "id": 6540,
                        "name": "VariableDeclaration",
                        "src": "3097:11:15"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6296,
                              "type": "struct Repo.Version storage ref[] storage ref",
                              "value": "versions"
                            },
                            "id": 6541,
                            "name": "Identifier",
                            "src": "3111:8:15"
                          }
                        ],
                        "id": 6542,
                        "name": "MemberAccess",
                        "src": "3111:15:15"
                      }
                    ],
                    "id": 6543,
                    "name": "VariableDeclarationStatement",
                    "src": "3097:29:15"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6538
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6540,
                                  "type": "uint256",
                                  "value": "len"
                                },
                                "id": 6544,
                                "name": "Identifier",
                                "src": "3143:3:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6545,
                                "name": "Literal",
                                "src": "3149:1:15"
                              }
                            ],
                            "id": 6546,
                            "name": "BinaryOperation",
                            "src": "3143:7:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6540,
                                  "type": "uint256",
                                  "value": "len"
                                },
                                "id": 6547,
                                "name": "Identifier",
                                "src": "3153:3:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 6548,
                                "name": "Literal",
                                "src": "3159:1:15"
                              }
                            ],
                            "id": 6549,
                            "name": "BinaryOperation",
                            "src": "3153:7:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 6550,
                            "name": "Literal",
                            "src": "3163:1:15"
                          }
                        ],
                        "id": 6551,
                        "name": "Conditional",
                        "src": "3143:21:15"
                      }
                    ],
                    "id": 6552,
                    "name": "Return",
                    "src": "3136:28:15"
                  }
                ],
                "id": 6553,
                "name": "Block",
                "src": "3087:84:15"
              }
            ],
            "id": 6554,
            "name": "FunctionDefinition",
            "src": "3029:142:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "isValidBump",
              "payable": false,
              "scope": 6654,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_oldVersion",
                      "scope": 6631,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6555,
                            "name": "ElementaryTypeName",
                            "src": "3198:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6556,
                            "name": "Literal",
                            "src": "3205:1:15"
                          }
                        ],
                        "id": 6557,
                        "name": "ArrayTypeName",
                        "src": "3198:9:15"
                      }
                    ],
                    "id": 6558,
                    "name": "VariableDeclaration",
                    "src": "3198:21:15"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_newVersion",
                      "scope": 6631,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6559,
                            "name": "ElementaryTypeName",
                            "src": "3221:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6560,
                            "name": "Literal",
                            "src": "3228:1:15"
                          }
                        ],
                        "id": 6561,
                        "name": "ArrayTypeName",
                        "src": "3221:9:15"
                      }
                    ],
                    "id": 6562,
                    "name": "VariableDeclaration",
                    "src": "3221:21:15"
                  }
                ],
                "id": 6563,
                "name": "ParameterList",
                "src": "3197:46:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6631,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 6564,
                        "name": "ElementaryTypeName",
                        "src": "3265:4:15"
                      }
                    ],
                    "id": 6565,
                    "name": "VariableDeclaration",
                    "src": "3265:4:15"
                  }
                ],
                "id": 6566,
                "name": "ParameterList",
                "src": "3264:6:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        null
                      ],
                      "initialValue": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "hasBumped",
                          "scope": 6631,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 6567,
                            "name": "ElementaryTypeName",
                            "src": "3281:4:15"
                          }
                        ],
                        "id": 6568,
                        "name": "VariableDeclaration",
                        "src": "3281:14:15"
                      }
                    ],
                    "id": 6569,
                    "name": "VariableDeclarationStatement",
                    "src": "3281:14:15"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6571
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "i",
                          "scope": 6631,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 6570,
                            "name": "ElementaryTypeName",
                            "src": "3305:4:15"
                          }
                        ],
                        "id": 6571,
                        "name": "VariableDeclaration",
                        "src": "3305:6:15"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 6572,
                        "name": "Literal",
                        "src": "3314:1:15"
                      }
                    ],
                    "id": 6573,
                    "name": "VariableDeclarationStatement",
                    "src": "3305:10:15"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6571,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 6574,
                            "name": "Identifier",
                            "src": "3332:1:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6575,
                            "name": "Literal",
                            "src": "3336:1:15"
                          }
                        ],
                        "id": 6576,
                        "name": "BinaryOperation",
                        "src": "3332:5:15"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6568,
                                  "type": "bool",
                                  "value": "hasBumped"
                                },
                                "id": 6577,
                                "name": "Identifier",
                                "src": "3357:9:15"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "falseBody": null
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "!=",
                                          "type": "bool"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint16"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6562,
                                                  "type": "uint16[3] memory",
                                                  "value": "_newVersion"
                                                },
                                                "id": 6578,
                                                "name": "Identifier",
                                                "src": "3390:11:15"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6571,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 6579,
                                                "name": "Identifier",
                                                "src": "3402:1:15"
                                              }
                                            ],
                                            "id": 6580,
                                            "name": "IndexAccess",
                                            "src": "3390:14:15"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "subdenomination": null,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 6581,
                                            "name": "Literal",
                                            "src": "3408:1:15"
                                          }
                                        ],
                                        "id": 6582,
                                        "name": "BinaryOperation",
                                        "src": "3390:19:15"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "functionReturnParameters": 6566
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "66616c7365",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "bool",
                                                  "type": "bool",
                                                  "value": "false"
                                                },
                                                "id": 6583,
                                                "name": "Literal",
                                                "src": "3440:5:15"
                                              }
                                            ],
                                            "id": 6584,
                                            "name": "Return",
                                            "src": "3433:12:15"
                                          }
                                        ],
                                        "id": 6585,
                                        "name": "Block",
                                        "src": "3411:53:15"
                                      }
                                    ],
                                    "id": 6586,
                                    "name": "IfStatement",
                                    "src": "3386:78:15"
                                  }
                                ],
                                "id": 6587,
                                "name": "Block",
                                "src": "3368:110:15"
                              },
                              {
                                "attributes": {
                                  "falseBody": null
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "!=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint16"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6562,
                                              "type": "uint16[3] memory",
                                              "value": "_newVersion"
                                            },
                                            "id": 6588,
                                            "name": "Identifier",
                                            "src": "3488:11:15"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6571,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 6589,
                                            "name": "Identifier",
                                            "src": "3500:1:15"
                                          }
                                        ],
                                        "id": 6590,
                                        "name": "IndexAccess",
                                        "src": "3488:14:15"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint16"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6558,
                                              "type": "uint16[3] memory",
                                              "value": "_oldVersion"
                                            },
                                            "id": 6591,
                                            "name": "Identifier",
                                            "src": "3506:11:15"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6571,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 6592,
                                            "name": "Identifier",
                                            "src": "3518:1:15"
                                          }
                                        ],
                                        "id": 6593,
                                        "name": "IndexAccess",
                                        "src": "3506:14:15"
                                      }
                                    ],
                                    "id": 6594,
                                    "name": "BinaryOperation",
                                    "src": "3488:32:15"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "falseBody": null
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "||",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint16",
                                                    "typeString": "uint16"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": ">",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6558,
                                                          "type": "uint16[3] memory",
                                                          "value": "_oldVersion"
                                                        },
                                                        "id": 6595,
                                                        "name": "Identifier",
                                                        "src": "3544:11:15"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6571,
                                                          "type": "uint256",
                                                          "value": "i"
                                                        },
                                                        "id": 6596,
                                                        "name": "Identifier",
                                                        "src": "3556:1:15"
                                                      }
                                                    ],
                                                    "id": 6597,
                                                    "name": "IndexAccess",
                                                    "src": "3544:14:15"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6562,
                                                          "type": "uint16[3] memory",
                                                          "value": "_newVersion"
                                                        },
                                                        "id": 6598,
                                                        "name": "Identifier",
                                                        "src": "3561:11:15"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6571,
                                                          "type": "uint256",
                                                          "value": "i"
                                                        },
                                                        "id": 6599,
                                                        "name": "Identifier",
                                                        "src": "3573:1:15"
                                                      }
                                                    ],
                                                    "id": 6600,
                                                    "name": "IndexAccess",
                                                    "src": "3561:14:15"
                                                  }
                                                ],
                                                "id": 6601,
                                                "name": "BinaryOperation",
                                                "src": "3544:31:15"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint16",
                                                    "typeString": "uint16"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "!=",
                                                  "type": "bool"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint16",
                                                        "typeString": "uint16"
                                                      },
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "operator": "-",
                                                      "type": "uint16"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint16"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 6562,
                                                              "type": "uint16[3] memory",
                                                              "value": "_newVersion"
                                                            },
                                                            "id": 6602,
                                                            "name": "Identifier",
                                                            "src": "3579:11:15"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 6571,
                                                              "type": "uint256",
                                                              "value": "i"
                                                            },
                                                            "id": 6603,
                                                            "name": "Identifier",
                                                            "src": "3591:1:15"
                                                          }
                                                        ],
                                                        "id": 6604,
                                                        "name": "IndexAccess",
                                                        "src": "3579:14:15"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "type": "uint16"
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 6558,
                                                              "type": "uint16[3] memory",
                                                              "value": "_oldVersion"
                                                            },
                                                            "id": 6605,
                                                            "name": "Identifier",
                                                            "src": "3596:11:15"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": null,
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 6571,
                                                              "type": "uint256",
                                                              "value": "i"
                                                            },
                                                            "id": 6606,
                                                            "name": "Identifier",
                                                            "src": "3608:1:15"
                                                          }
                                                        ],
                                                        "id": 6607,
                                                        "name": "IndexAccess",
                                                        "src": "3596:14:15"
                                                      }
                                                    ],
                                                    "id": 6608,
                                                    "name": "BinaryOperation",
                                                    "src": "3579:31:15"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "31",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "number",
                                                      "type": "int_const 1",
                                                      "value": "1"
                                                    },
                                                    "id": 6609,
                                                    "name": "Literal",
                                                    "src": "3614:1:15"
                                                  }
                                                ],
                                                "id": 6610,
                                                "name": "BinaryOperation",
                                                "src": "3579:36:15"
                                              }
                                            ],
                                            "id": 6611,
                                            "name": "BinaryOperation",
                                            "src": "3544:71:15"
                                          },
                                          {
                                            "children": [
                                              {
                                                "attributes": {
                                                  "functionReturnParameters": 6566
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "hexvalue": "66616c7365",
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "subdenomination": null,
                                                      "token": "bool",
                                                      "type": "bool",
                                                      "value": "false"
                                                    },
                                                    "id": 6612,
                                                    "name": "Literal",
                                                    "src": "3646:5:15"
                                                  }
                                                ],
                                                "id": 6613,
                                                "name": "Return",
                                                "src": "3639:12:15"
                                              }
                                            ],
                                            "id": 6614,
                                            "name": "Block",
                                            "src": "3617:53:15"
                                          }
                                        ],
                                        "id": 6615,
                                        "name": "IfStatement",
                                        "src": "3540:130:15"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6568,
                                                  "type": "bool",
                                                  "value": "hasBumped"
                                                },
                                                "id": 6616,
                                                "name": "Identifier",
                                                "src": "3687:9:15"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "hexvalue": "74727565",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "subdenomination": null,
                                                  "token": "bool",
                                                  "type": "bool",
                                                  "value": "true"
                                                },
                                                "id": 6617,
                                                "name": "Literal",
                                                "src": "3699:4:15"
                                              }
                                            ],
                                            "id": 6618,
                                            "name": "Assignment",
                                            "src": "3687:16:15"
                                          }
                                        ],
                                        "id": 6619,
                                        "name": "ExpressionStatement",
                                        "src": "3687:16:15"
                                      }
                                    ],
                                    "id": 6620,
                                    "name": "Block",
                                    "src": "3522:196:15"
                                  }
                                ],
                                "id": 6621,
                                "name": "IfStatement",
                                "src": "3484:234:15"
                              }
                            ],
                            "id": 6622,
                            "name": "IfStatement",
                            "src": "3353:365:15"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "++",
                                  "prefix": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6571,
                                      "type": "uint256",
                                      "value": "i"
                                    },
                                    "id": 6623,
                                    "name": "Identifier",
                                    "src": "3731:1:15"
                                  }
                                ],
                                "id": 6624,
                                "name": "UnaryOperation",
                                "src": "3731:3:15"
                              }
                            ],
                            "id": 6625,
                            "name": "ExpressionStatement",
                            "src": "3731:3:15"
                          }
                        ],
                        "id": 6626,
                        "name": "Block",
                        "src": "3339:406:15"
                      }
                    ],
                    "id": 6627,
                    "name": "WhileStatement",
                    "src": "3325:420:15"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6566
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6568,
                          "type": "bool",
                          "value": "hasBumped"
                        },
                        "id": 6628,
                        "name": "Identifier",
                        "src": "3761:9:15"
                      }
                    ],
                    "id": 6629,
                    "name": "Return",
                    "src": "3754:16:15"
                  }
                ],
                "id": 6630,
                "name": "Block",
                "src": "3271:506:15"
              }
            ],
            "id": 6631,
            "name": "FunctionDefinition",
            "src": "3177:600:15"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "semanticVersionHash",
              "payable": false,
              "scope": 6654,
              "stateMutability": "pure",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "version",
                      "scope": 6653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6632,
                            "name": "ElementaryTypeName",
                            "src": "3812:6:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6633,
                            "name": "Literal",
                            "src": "3819:1:15"
                          }
                        ],
                        "id": 6634,
                        "name": "ArrayTypeName",
                        "src": "3812:9:15"
                      }
                    ],
                    "id": 6635,
                    "name": "VariableDeclaration",
                    "src": "3812:17:15"
                  }
                ],
                "id": 6636,
                "name": "ParameterList",
                "src": "3811:19:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6637,
                        "name": "ElementaryTypeName",
                        "src": "3854:7:15"
                      }
                    ],
                    "id": 6638,
                    "name": "VariableDeclaration",
                    "src": "3854:7:15"
                  }
                ],
                "id": 6639,
                "name": "ParameterList",
                "src": "3853:9:15"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6639
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                },
                                {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12584,
                              "type": "function () pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 6640,
                            "name": "Identifier",
                            "src": "3880:9:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6635,
                                  "type": "uint16[3] memory",
                                  "value": "version"
                                },
                                "id": 6641,
                                "name": "Identifier",
                                "src": "3890:7:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6642,
                                "name": "Literal",
                                "src": "3898:1:15"
                              }
                            ],
                            "id": 6643,
                            "name": "IndexAccess",
                            "src": "3890:10:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6635,
                                  "type": "uint16[3] memory",
                                  "value": "version"
                                },
                                "id": 6644,
                                "name": "Identifier",
                                "src": "3902:7:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 6645,
                                "name": "Literal",
                                "src": "3910:1:15"
                              }
                            ],
                            "id": 6646,
                            "name": "IndexAccess",
                            "src": "3902:10:15"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint16"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6635,
                                  "type": "uint16[3] memory",
                                  "value": "version"
                                },
                                "id": 6647,
                                "name": "Identifier",
                                "src": "3914:7:15"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 6648,
                                "name": "Literal",
                                "src": "3922:1:15"
                              }
                            ],
                            "id": 6649,
                            "name": "IndexAccess",
                            "src": "3914:10:15"
                          }
                        ],
                        "id": 6650,
                        "name": "FunctionCall",
                        "src": "3880:45:15"
                      }
                    ],
                    "id": 6651,
                    "name": "Return",
                    "src": "3873:52:15"
                  }
                ],
                "id": 6652,
                "name": "Block",
                "src": "3863:69:15"
              }
            ],
            "id": 6653,
            "name": "FunctionDefinition",
            "src": "3783:149:15"
          }
        ],
        "id": 6654,
        "name": "ContractDefinition",
        "src": "60:3874:15"
      }
    ],
    "id": 6655,
    "name": "SourceUnit",
    "src": "0:3935:15"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.087Z"
}