{
  "contractName": "ANNSTF",
  "abi": [
    {
      "inputs": [],
      "name": "MAX_CYCLE_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_EVENT_SCHEDULE_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ONE_POINT_ZERO",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EndOfMonthConvention",
          "name": "eomc",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "cycle",
          "type": "tuple"
        }
      ],
      "name": "adjustEndOfMonthConvention",
      "outputs": [
        {
          "internalType": "enum EndOfMonthConvention",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "bdc",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "computeEventTimeForEvent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_CYCLE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_EVENT_SCHEDULE_SIZE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ONE_POINT_ZERO\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PRECISION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"eomc\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycle\",\"type\":\"tuple\"}],\"name\":\"adjustEndOfMonthConvention\",\"outputs\":[{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"bdc\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"computeEventTimeForEvent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))\":{\"details\":\"The following is considered to dertermine if schedule dates are shifted to the end of month: - The convention SD (same day) means not adjusting, EM (end of month) means adjusting - Dates are only shifted if the schedule start date is an end-of-month date - Dates are only shifted if the schedule cycle is based on an \\\"M\\\" period unit or multiple thereof\",\"params\":{\"cycle\":\"the cycle struct\",\"eomc\":\"the end of month convention to adjust\",\"startTime\":\"timestamp of the cycle start\"},\"returns\":{\"_0\":\"the adjusted end of month convention\"}},\"computeEventTimeForEvent(bytes32,uint8,uint8,uint256)\":{\"details\":\"For optimization reasons not located in EventUtil by applying the BDC specified in the terms\"}},\"title\":\"STF\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))\":{\"notice\":\"This function makes an adjustment on the end of month convention.\"},\"computeEventTimeForEvent(bytes32,uint8,uint8,uint256)\":{\"notice\":\"Returns the event time for a given schedule time\"},\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"Contains all state transition functions (STFs) currently used by all Engines\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol\":\"ANNSTF\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/ContractRoleConventions.sol\":{\"keccak256\":\"0x0e86e103607557626fc092ae2c9e2ea643115640a0b212ec34ef074edb3cc048\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://91386c9f6d3f83f6712eb0cb6378cfb7de4ef9745280e4ac7e12bad1dd97c4b3\",\"dweb:/ipfs/QmSJ9EoPorkSrhKSNhM9WBYMTtYuLqjHCpPThf8KHWRp7r\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/DayCountConventions.sol\":{\"keccak256\":\"0x7147f1662bbd8abd04dffe454db3743828bae4476621ff158c94dd967b8573e1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d3be9ed484ad75d87b485d7c779d72b980c711735ed7e2ebc9622949a51857a0\",\"dweb:/ipfs/QmVdyMD4PW8wMdhbxoQBqAVNNN7fRwvpTVpCWKBLbLoqmh\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/EndOfMonthConventions.sol\":{\"keccak256\":\"0xe004912bd32ef22ac6ee91f35a3855b06492d8a89f585f1a508c1c26349fd880\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e70d558bee746b797cdcadf84d5c9cd1b77fc6e99a089524ecaeb91201c71dcd\",\"dweb:/ipfs/QmcxpSKn5ZG4DPrSkm1Pxd21So6NKcHdiX5zfpExD5eLpv\"]},\"@atpar/actus-solidity/contracts/Core/Core.sol\":{\"keccak256\":\"0x0863cccef5f0e90e295c9b913a7d18b7e029cbd33179d4d23b2e5c8479b2077b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d7a9fb13a29e64eaad1e97129952d23c6be6e2c5224dfdd0b62766330b05efd1\",\"dweb:/ipfs/QmUyTmuSfv3kDw4wGrP7ZemJJcxWRNRPYvwNc3WEC1YWoR\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@atpar/actus-solidity/contracts/Core/Utils/CycleUtils.sol\":{\"keccak256\":\"0x230700c45141dbc7973f813d1eae8ea2fe3a804489b7f29f46d44ac5d5f12048\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a2bebe3ddd62e9c2ede6a298ef956b8315198da601223a3900d07490dab3b7f1\",\"dweb:/ipfs/QmWyQxUsCjGMRKmxseE61qaipeqHVcZ6tLhVXvLfKnFkxo\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\":{\"keccak256\":\"0xb549e34dc631989f8aae1b8a397bf77598b8c018860645a627d2929229543a79\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a0ef5e2ad69ef87b9fc2beeed66336b3857c576efb9833b40a1be2ee35786fc\",\"dweb:/ipfs/QmT33MWqdjecGoPj8Js6a5fgESTcGW5vbQqYamKRDJZnhS\"]},\"@atpar/actus-solidity/contracts/Core/Utils/Utils.sol\":{\"keccak256\":\"0xeb3b016061350187b61618b1f0fed88e3dcc6feb8098a873ac55ae861a61a280\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://eff5591bd3ea0d66b85c0d0ed9d92388946f6ee67e8079656a828cc7a94d6bf1\",\"dweb:/ipfs/QmZPfJpENC62LEZWqWDnu8LmTrrv6CDtJkbTdQtdNpuDds\"]},\"@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol\":{\"keccak256\":\"0xa6fa7d9a4c8592f75882b524935574fd588883f0edac6b031862d31021562e6a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://02386a4467a8467a236011278233ee73cbe6de19f0d71b468fe6452115d9119f\",\"dweb:/ipfs/Qmabu5NUufPypeGtAPTbYTaTosNkEfpSZWMZfYHkjKQvox\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xaa0e11a791bc975d581a4f5b7a8d9c16a880a354c89312318ae072ae3e740409\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://982d8b344f76193834260436d74c81e5a8f9e89106bb4cd72bbaabda4f3f59c2\",\"dweb:/ipfs/QmSrvP5TkQRhKDVCTpsV3uaKLBhkt7PjUY89vdtM9o5ybK\"]},\"openzeppelin-solidity/contracts/math/SignedSafeMath.sol\":{\"keccak256\":\"0xb2db870ccd849f107e3196d346fc4983eb9a041d117b9ff3a53950df606658b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0add6dbdceb130d5cd140b8106e7884606dce98e817b3547e0967b76921bd473\",\"dweb:/ipfs/QmRUhmQKxoVFhHaQKHPNUYeSty1rw9TDcDPB5PdDUkqvbg\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610990806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aaf5eb6811610071578063aaf5eb6814610133578063c40c5a981461013b578063e05a66e014610143578063e726d68014610156578063edc0465f1461013b578063f5586e0514610169576100a9565b8063179331f3146100ae5780631a2e165d146100d75780636f37e55b146100f757806372540003146100ff578063811322fb14610120575b600080fd5b6100c16100bc36600461077d565b61017c565b6040516100ce919061088b565b60405180910390f35b6100ea6100e5366004610733565b61024c565b6040516100ce9190610882565b6100ea610273565b61011261010d36600461071b565b61027f565b6040516100ce92919061089f565b6100ea61012e366004610826565b6102a8565b6100ea6102bc565b6100ea6102c1565b6100ea610151366004610842565b6102c6565b6100ea61016436600461086d565b6102e4565b6100ea61017736600461086d565b610437565b6000600184600181111561018c57fe5b14156102085761019b836104ab565b6101a4846104cd565b1480156101f357506002826020015160058111156101be57fe5b14806101d957506003826020015160058111156101d757fe5b145b806101f357506004826020015160058111156101f157fe5b145b1561020057506001610245565b506000610245565b600084600181111561021657fe5b141561022457506000610245565b60405162461bcd60e51b815260040161023c906108b7565b60405180910390fd5b9392505050565b6000806102588661027f565b915050610267818686866102e4565b9150505b949350505050565b670de0b6b3a764000081565b6000808060f884901c601c81111561029357fe5b92505067ffffffffffffffff83169050915091565b600081601c8111156102b657fe5b92915050565b601281565b607881565b60008160f884601c8111156102d757fe5b60ff16901b179392505050565b6000818514156102f557508361026b565b600184600881111561030357fe5b148061031a5750600384600881111561031857fe5b145b156103305761032985846104dc565b905061026b565b600284600881111561033e57fe5b14806103555750600484600881111561035357fe5b145b1561039957600061036686856104dc565b905061037186610538565b61037a82610538565b141561038757905061026b565b610391868561054f565b91505061026b565b60058460088111156103a757fe5b14806103be575060078460088111156103bc57fe5b145b156103cd57610329858461054f565b60068460088111156103db57fe5b14806103f2575060088460088111156103f057fe5b145b1561042e576000610403868561054f565b905061040e86610538565b61041782610538565b141561042457905061026b565b61039186856104dc565b50929392505050565b6000600384600881111561044757fe5b148061045e5750600484600881111561045c57fe5b145b806104745750600784600881111561047257fe5b145b8061048a5750600884600881111561048857fe5b145b1561049657508361026b565b6104a2858585856102e4565b95945050505050565b600080806104be62015180855b0461059d565b509150915061026b8282610633565b600061026b62015180836104b8565b600060018260018111156104ec57fe5b1415610531576104fb836106b9565b600614156105155761050e8360026106cc565b90506102b6565b61051e836106b9565b600714156105315761050e8360016106cc565b5090919050565b600061054762015180836104b8565b509392505050565b6000600182600181111561055f57fe5b14156105315761056e836106b9565b600614156105815761050e8360016106e1565b61058a836106b9565b600714156105315761050e8360026106e1565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816105f457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806106445750816003145b8061064f5750816005145b8061065a5750816007145b806106655750816008145b80610670575081600a145b8061067b575081600c145b156106885750601f6102b6565b816002146106985750601e6102b6565b6106a1836106f6565b6106ac57601c6106af565b601d5b60ff169392505050565b6007620151809091046003010660010190565b6201518081028201828110156102b657600080fd5b6201518081028203828111156102b657600080fd5b60006004820615801561070b57506064820615155b806102b657505061019090061590565b60006020828403121561072c578081fd5b5035919050565b60008060008060808587031215610748578283fd5b8435935060208501356009811061075d578384fd5b9250604085013561076d81610933565b9396929550929360600135925050565b600080600083850360c0811215610792578384fd5b843561079d81610933565b9350602085013592506080603f19820112156107b7578182fd5b506040516080810181811067ffffffffffffffff821117156107d7578283fd5b6040908152850135815260608501356107ef8161094d565b6020820152608085013561080281610933565b604082015260a085013561081581610922565b606082015292959194509192509050565b600060208284031215610837578081fd5b813561024581610940565b60008060408385031215610854578182fd5b823561085f81610940565b946020939093013593505050565b60008060008060808587031215610748578384fd5b90815260200190565b602081016002831061089957fe5b91905290565b60408101601d84106108ad57fe5b9281526020015290565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b801515811461093057600080fd5b50565b6002811061093057600080fd5b601d811061093057600080fd5b6006811061093057600080fdfea2646970667358221220ec6f0de1ce4ba785c13d41b30f386f78b32ed36d077d8cc22b95fe4bf915c6e864736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aaf5eb6811610071578063aaf5eb6814610133578063c40c5a981461013b578063e05a66e014610143578063e726d68014610156578063edc0465f1461013b578063f5586e0514610169576100a9565b8063179331f3146100ae5780631a2e165d146100d75780636f37e55b146100f757806372540003146100ff578063811322fb14610120575b600080fd5b6100c16100bc36600461077d565b61017c565b6040516100ce919061088b565b60405180910390f35b6100ea6100e5366004610733565b61024c565b6040516100ce9190610882565b6100ea610273565b61011261010d36600461071b565b61027f565b6040516100ce92919061089f565b6100ea61012e366004610826565b6102a8565b6100ea6102bc565b6100ea6102c1565b6100ea610151366004610842565b6102c6565b6100ea61016436600461086d565b6102e4565b6100ea61017736600461086d565b610437565b6000600184600181111561018c57fe5b14156102085761019b836104ab565b6101a4846104cd565b1480156101f357506002826020015160058111156101be57fe5b14806101d957506003826020015160058111156101d757fe5b145b806101f357506004826020015160058111156101f157fe5b145b1561020057506001610245565b506000610245565b600084600181111561021657fe5b141561022457506000610245565b60405162461bcd60e51b815260040161023c906108b7565b60405180910390fd5b9392505050565b6000806102588661027f565b915050610267818686866102e4565b9150505b949350505050565b670de0b6b3a764000081565b6000808060f884901c601c81111561029357fe5b92505067ffffffffffffffff83169050915091565b600081601c8111156102b657fe5b92915050565b601281565b607881565b60008160f884601c8111156102d757fe5b60ff16901b179392505050565b6000818514156102f557508361026b565b600184600881111561030357fe5b148061031a5750600384600881111561031857fe5b145b156103305761032985846104dc565b905061026b565b600284600881111561033e57fe5b14806103555750600484600881111561035357fe5b145b1561039957600061036686856104dc565b905061037186610538565b61037a82610538565b141561038757905061026b565b610391868561054f565b91505061026b565b60058460088111156103a757fe5b14806103be575060078460088111156103bc57fe5b145b156103cd57610329858461054f565b60068460088111156103db57fe5b14806103f2575060088460088111156103f057fe5b145b1561042e576000610403868561054f565b905061040e86610538565b61041782610538565b141561042457905061026b565b61039186856104dc565b50929392505050565b6000600384600881111561044757fe5b148061045e5750600484600881111561045c57fe5b145b806104745750600784600881111561047257fe5b145b8061048a5750600884600881111561048857fe5b145b1561049657508361026b565b6104a2858585856102e4565b95945050505050565b600080806104be62015180855b0461059d565b509150915061026b8282610633565b600061026b62015180836104b8565b600060018260018111156104ec57fe5b1415610531576104fb836106b9565b600614156105155761050e8360026106cc565b90506102b6565b61051e836106b9565b600714156105315761050e8360016106cc565b5090919050565b600061054762015180836104b8565b509392505050565b6000600182600181111561055f57fe5b14156105315761056e836106b9565b600614156105815761050e8360016106e1565b61058a836106b9565b600714156105315761050e8360026106e1565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816105f457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806106445750816003145b8061064f5750816005145b8061065a5750816007145b806106655750816008145b80610670575081600a145b8061067b575081600c145b156106885750601f6102b6565b816002146106985750601e6102b6565b6106a1836106f6565b6106ac57601c6106af565b601d5b60ff169392505050565b6007620151809091046003010660010190565b6201518081028201828110156102b657600080fd5b6201518081028203828111156102b657600080fd5b60006004820615801561070b57506064820615155b806102b657505061019090061590565b60006020828403121561072c578081fd5b5035919050565b60008060008060808587031215610748578283fd5b8435935060208501356009811061075d578384fd5b9250604085013561076d81610933565b9396929550929360600135925050565b600080600083850360c0811215610792578384fd5b843561079d81610933565b9350602085013592506080603f19820112156107b7578182fd5b506040516080810181811067ffffffffffffffff821117156107d7578283fd5b6040908152850135815260608501356107ef8161094d565b6020820152608085013561080281610933565b604082015260a085013561081581610922565b606082015292959194509192509050565b600060208284031215610837578081fd5b813561024581610940565b60008060408385031215610854578182fd5b823561085f81610940565b946020939093013593505050565b60008060008060808587031215610748578384fd5b90815260200190565b602081016002831061089957fe5b91905290565b60408101601d84106108ad57fe5b9281526020015290565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b801515811461093057600080fd5b50565b6002811061093057600080fd5b601d811061093057600080fd5b6006811061093057600080fdfea2646970667358221220ec6f0de1ce4ba785c13d41b30f386f78b32ed36d077d8cc22b95fe4bf915c6e864736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "243:17684:87:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "243:17684:87:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1010:924:78;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;631:346:84;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;298:52:73:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;956:145::-;;;;;;:::i;:::-;;:::i;254:38:73:-;;;:::i;356:44::-;;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;648:583::-;;;;;;:::i;:::-;;:::i;1010:924:78:-;1185:20;1233:24;1225:4;:32;;;;;;;;;1221:618;;;1483:53;1526:9;1483:42;:53::i;:::-;1434:45;1469:9;1434:34;:45::i;:::-;:102;:174;;;;-1:-1:-1;1568:3:78;1557:5;:7;;;:14;;;;;;;;;:32;;;-1:-1:-1;1586:3:78;1575:5;:7;;;:14;;;;;;;;;1557:32;:50;;;-1:-1:-1;1604:3:78;1593:5;:7;;;:14;;;;;;;;;1557:50;1413:274;;;-1:-1:-1;1648:24:78;1641:31;;1413:274;-1:-1:-1;1707:23:78;1700:30;;1221:618;1759:23;1751:4;:31;;;;;;;;;1747:92;;;-1:-1:-1;1805:23:78;1798:30;;1747:92;1848:79;;-1:-1:-1;;;1848:79:78;;;;;;;:::i;:::-;;;;;;;;1010:924;;;;;;:::o;631:346:84:-;794:7;820:20;844:19;856:6;844:11;:19::i;:::-;817:46;;;913:57;928:12;942:3;947:8;957:12;913:14;:57::i;:::-;906:64;;;631:346;;;;;;;:::o;298:52:73:-;338:12;298:52;:::o;487:293:82:-;569:9;;;659:3;649:13;;;625:40;;;;;;;;603:62;-1:-1:-1;;698:32:82;;;;-1:-1:-1;487:293:82;;;:::o;956:145::-;1046:7;1084:9;1076:18;;;;;;;;1069:25;956:145;-1:-1:-1;;956:145:82:o;254:38:73:-;290:2;254:38;:::o;356:44::-;397:3;356:44;:::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-1:-1:-1;;;234:247:82:o;1599:2214:75:-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;;1599:2214;-1:-1:-1;;;1599:2214:75:o;648:583::-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;:::-;1156:68;648:583;-1:-1:-1;;;;;648:583:75:o;6258:217:106:-;6321:16;;;6376:40;1020:12;6388:9;:27;;6376:11;:40::i;:::-;6349:67;;;;;6440:28;6456:4;6462:5;6440:15;:28::i;7362:132::-;7417:8;7447:40;1020:12;7459:9;:27;;3980:550:75;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;;3980:550;-1:-1:-1;3980:550:75:o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;;7310:40;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;3309:605:106:-;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;6480:383::-;6551:16;6583:5;6592:1;6583:10;:24;;;;6597:5;6606:1;6597:10;6583:24;:38;;;;6611:5;6620:1;6611:10;6583:38;:52;;;;6625:5;6634:1;6625:10;6583:52;:66;;;;6639:5;6648:1;6639:10;6583:66;:81;;;;6653:5;6662:2;6653:11;6583:81;:96;;;;6668:5;6677:2;6668:11;6583:96;6579:278;;;-1:-1:-1;6709:2:106;6579:278;;;6732:5;6741:1;6732:10;6728:129;;-1:-1:-1;6772:2:106;6728:129;;;6819:17;6831:4;6819:11;:17::i;:::-;:27;;6844:2;6819:27;;;6839:2;6819:27;6805:41;;;6480:383;-1:-1:-1;;;6480:383:106:o;6898:175::-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;9033:198::-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;10938:198;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;;5820:157;5875:13;5920:1;5913:4;:8;:13;5912:36;;;;-1:-1:-1;5939:3:106;5932:4;:10;:15;;5912:36;5911:59;;;-1:-1:-1;;5961:3:106;5954:10;;:15;;5820:157::o;2203:241:-1:-;;2307:2;2295:9;2286:7;2282:23;2278:32;2275:2;;;-1:-1;;2313:12;2275:2;-1:-1;203:20;;2269:175;-1:-1;2269:175::o;2451:699::-;;;;;2647:3;2635:9;2626:7;2622:23;2618:33;2615:2;;;-1:-1;;2654:12;2615:2;216:6;203:20;2706:63;;2806:2;2876:9;2872:22;367:20;9992:1;9985:5;9982:12;9972:2;;-1:-1;;9998:12;9972:2;2814:90;-1:-1;2941:2;2994:22;;545:20;570:47;545:20;570:47;:::i;:::-;2609:541;;;;-1:-1;2949:77;;3063:2;3102:22;2133:20;;-1:-1;;2609:541::o;3157:588::-;;;;3331:9;3322:7;3318:23;3343:3;3318:23;3314:33;3311:2;;;-1:-1;;3350:12;3311:2;558:6;545:20;570:47;611:5;570:47;:::i;:::-;3402:89;-1:-1;3528:2;3567:22;;2133:20;;-1:-1;1415:4;-1:-1;;1394:19;;1390:30;1387:2;;;-1:-1;;1423:12;1387:2;;3636;8093:9;1415:4;8129:6;8125:17;8236:6;8224:10;8221:22;8200:18;8188:10;8185:34;8182:62;8179:2;;;-1:-1;;8247:12;8179:2;3636;8266:22;;;3697;;2133:20;1525:75;;1719:22;;;1059:20;1084:40;1059:20;1084:40;:::i;:::-;3528:2;1673:16;;1666:82;1415:4;1867:22;;545:20;570:47;545:20;570:47;:::i;:::-;3636:2;1821:16;;1814:82;2009:22;;;69:20;94:30;69:20;94:30;:::i;:::-;1719:22;1973:16;;1966:72;3305:440;;;;-1:-1;1977:5;;-1:-1;3305:440;-1:-1;3305:440::o;3752:271::-;;3871:2;3859:9;3850:7;3846:23;3842:32;3839:2;;;-1:-1;;3877:12;3839:2;913:6;900:20;925:48;967:5;925:48;:::i;4030:396::-;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;-1:-1;;4172:12;4134:2;913:6;900:20;925:48;967:5;925:48;:::i;:::-;4224:78;4339:2;4378:22;;;;2133:20;;-1:-1;;;4128:298::o;4433:699::-;;;;;4629:3;4617:9;4608:7;4604:23;4600:33;4597:2;;;-1:-1;;4636:12;6288:222;5210:37;;;6415:2;6400:18;;6386:124::o;6517:270::-;6668:2;6653:18;;9511:1;9501:12;;9491:2;;9517:9;9491:2;5354:74;;;6639:148;:::o;6794:359::-;6962:2;6947:18;;9624:2;9614:13;;9604:2;;9631:9;9604:2;5524:63;;;7139:2;7124:18;5210:37;6933:220;:::o;7385:416::-;7585:2;7599:47;;;5941:2;7570:18;;;8404:19;5977:34;8444:14;;;5957:55;6046:34;6032:12;;;6025:56;-1:-1;;;6101:12;;;6094:29;6142:12;;;7556:245::o;9654:111::-;9735:5;8538:13;8531:21;9713:5;9710:32;9700:2;;9756:1;;9746:12;9700:2;9694:71;:::o;10024:108::-;10107:1;10100:5;10097:12;10087:2;;10123:1;;10113:12;10266:110;10350:2;10343:5;10340:13;10330:2;;10367:1;;10357:12;10383:101;10459:1;10452:5;10449:12;10439:2;;10475:1;;10465:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"../../Core/Core.sol\";\n\n\n/**\n * @title STF\n * @notice Contains all state transition functions (STFs) currently used by all Engines\n */\ncontract ANNSTF is Core {\n\n    /**\n     * State transition for PAM analysis events\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_NE (\n        ANNTerms memory /* terms */,\n        State memory state,\n        uint256 /* scheduleTime */,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        return state;\n    }\n\n    /**\n     * State transition for PAM analysis events\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_AD (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    /**\n     * State transition for PAM fee payment events\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_FP (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = 0;\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    /**\n     * State transition for PAM principal prepayment\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_PP (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        // state.notionalPrincipal -= 0; // riskFactor not supported\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    /**\n     * State transition for PAM penalty payments\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_PY (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    /**\n     * State transition for PAM fixed rate resets\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_RRF (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.nominalInterestRate = terms.nextResetRate;\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    /**\n     * State transition for PAM termination events\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_TD (\n        ANNTerms memory /* terms */,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        state.notionalPrincipal = 0;\n        state.nominalInterestRate = 0;\n        state.accruedInterest = 0;\n        state.feeAccrued = 0;\n        state.contractPerformance = ContractPerformance.TD;\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    /**\n     * State transition for PAM credit events\n     * @param state the old state\n     * @return the new state\n     */\n    function STF_ANN_CE (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 externalData\n    )\n        internal\n        pure\n        returns(State memory)\n    {\n        // handle maturity date\n        uint256 nonPerformingDate = (state.nonPerformingDate == 0)\n            ? shiftEventTime(\n                scheduleTime,\n                terms.businessDayConvention,\n                terms.calendar,\n                terms.maturityDate\n            ) : state.nonPerformingDate;\n\n        uint256 currentTimestamp = uint256(externalData);\n\n        bool isInGracePeriod = false;\n        if (terms.gracePeriod.isSet) {\n            uint256 graceDate = getTimestampPlusPeriod(terms.gracePeriod, nonPerformingDate);\n            if (currentTimestamp <= graceDate) {\n                state.contractPerformance = ContractPerformance.DL;\n                isInGracePeriod = true;\n            }\n        }\n\n        if (terms.delinquencyPeriod.isSet && !isInGracePeriod) {\n            uint256 delinquencyDate = getTimestampPlusPeriod(terms.delinquencyPeriod, nonPerformingDate);\n            if (currentTimestamp <= delinquencyDate) {\n                state.contractPerformance = ContractPerformance.DQ;\n            } else {\n                state.contractPerformance = ContractPerformance.DF;\n            }\n        }\n\n        if (state.nonPerformingDate == 0) {\n            // handle maturity date\n            state.nonPerformingDate = shiftEventTime(\n                scheduleTime,\n                terms.businessDayConvention,\n                terms.calendar,\n                terms.maturityDate\n            );\n        }\n\n        return state;\n    }\n\n    function STF_ANN_IED (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        state.notionalPrincipal = roleSign(terms.contractRole) * terms.notionalPrincipal;\n        state.nominalInterestRate = terms.nominalInterestRate;\n        state.statusDate = scheduleTime;\n        state.accruedInterest = terms.accruedInterest;\n\n        return state;\n    }\n\n    function STF_ANN_IPCI (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.accruedInterest\n            .add(\n                state.nominalInterestRate\n                .floatMult(state.notionalPrincipal)\n                .floatMult(timeFromLastEvent)\n            )\n        );\n        state.accruedInterest = 0;\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    function STF_ANN_IP (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = 0;\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    function STF_ANN_PR (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.notionalPrincipal = state.notionalPrincipal\n        .sub(\n            roleSign(terms.contractRole)\n            * (\n                roleSign(terms.contractRole)\n                * state.notionalPrincipal\n            )\n            .min(\n                roleSign(terms.contractRole)\n                * (\n                    state.nextPrincipalRedemptionPayment\n                    .sub(state.accruedInterest)\n                )\n            )\n        );\n\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    function STF_ANN_MD (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.notionalPrincipal = 0.0;\n        state.contractPerformance = ContractPerformance.MD;\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    function STF_ANN_RR (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 externalData\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        // riskFactor not supported\n        int256 rate = int256(externalData) * terms.rateMultiplier + terms.rateSpread;\n        int256 deltaRate = rate.sub(state.nominalInterestRate);\n\n        // apply period cap/floor\n        if ((terms.lifeCap < deltaRate) && (terms.lifeCap < ((-1) * terms.periodFloor))) {\n            deltaRate = terms.lifeCap;\n        } else if (deltaRate < ((-1) * terms.periodFloor)) {\n            deltaRate = ((-1) * terms.periodFloor);\n        }\n        rate = state.nominalInterestRate.add(deltaRate);\n\n        // apply life cap/floor\n        if (terms.lifeCap < rate && terms.lifeCap < terms.lifeFloor) {\n            rate = terms.lifeCap;\n        } else if (rate < terms.lifeFloor) {\n            rate = terms.lifeFloor;\n        }\n\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.nominalInterestRate = rate;\n        state.nextPrincipalRedemptionPayment = 0; // annuity calculator not supported\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n\n    function STF_ANN_SC (\n        ANNTerms memory terms,\n        State memory state,\n        uint256 scheduleTime,\n        bytes32 /* externalData */\n    )\n        internal\n        pure\n        returns (State memory)\n    {\n        int256 timeFromLastEvent;\n        {\n            timeFromLastEvent = yearFraction(\n                shiftCalcTime(state.statusDate, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate),\n                terms.dayCountConvention,\n                terms.maturityDate\n            );\n        }\n        state.accruedInterest = state.accruedInterest\n        .add(\n            state.nominalInterestRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n        state.feeAccrued = state.feeAccrued\n        .add(\n            terms.feeRate\n            .floatMult(state.notionalPrincipal)\n            .floatMult(timeFromLastEvent)\n        );\n\n        if ((terms.scalingEffect == ScalingEffect.I00) || (terms.scalingEffect == ScalingEffect.IN0)) {\n            state.interestScalingMultiplier = 0; // riskFactor not supported\n        }\n        if ((terms.scalingEffect == ScalingEffect._0N0) || (terms.scalingEffect == ScalingEffect.IN0)) {\n            state.notionalScalingMultiplier = 0; // riskFactor not supported\n        }\n\n        state.statusDate = scheduleTime;\n\n        return state;\n    }\n}\n",
  "sourcePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol",
  "ast": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol",
    "exportedSymbols": {
      "ANNSTF": [
        28167
      ]
    },
    "id": 28168,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 26734,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:87"
      },
      {
        "id": 26735,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:87"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 26736,
        "nodeType": "ImportDirective",
        "scope": 28168,
        "sourceUnit": 24036,
        "src": "101:29:87",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 26738,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "262:4:87",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 26739,
            "nodeType": "InheritanceSpecifier",
            "src": "262:4:87"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 26737,
          "nodeType": "StructuredDocumentation",
          "src": "133:109:87",
          "text": " @title STF\n @notice Contains all state transition functions (STFs) currently used by all Engines"
        },
        "fullyImplemented": true,
        "id": 28167,
        "linearizedBaseContracts": [
          28167,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "ANNSTF",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 26755,
              "nodeType": "Block",
              "src": "630:29:87",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26753,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26744,
                    "src": "647:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26752,
                  "id": 26754,
                  "nodeType": "Return",
                  "src": "640:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26740,
              "nodeType": "StructuredDocumentation",
              "src": "274:122:87",
              "text": " State transition for PAM analysis events\n @param state the old state\n @return the new state"
            },
            "id": 26756,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_NE",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26742,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "431:15:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26741,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "431:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26744,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "468:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26743,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "468:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26746,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "496:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26745,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "496:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26748,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "532:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26747,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "532:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "421:143:87"
            },
            "returnParameters": {
              "id": 26752,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26751,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "612:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26750,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "612:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "611:14:87"
            },
            "scope": 28167,
            "src": "401:258:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26846,
              "nodeType": "Block",
              "src": "1009:879:87",
              "statements": [
                {
                  "assignments": [
                    26771
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26771,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26846,
                      "src": "1019:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 26770,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1019:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26772,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1019:24:87"
                },
                {
                  "id": 26801,
                  "nodeType": "Block",
                  "src": "1053:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 26799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 26773,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26771,
                          "src": "1067:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26776,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1131:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26777,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "1131:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26778,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1149:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26779,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "1149:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26780,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1178:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26781,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "1178:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26782,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1194:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26783,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "1194:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26775,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "1117:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1117:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26786,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26763,
                                  "src": "1245:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26787,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1259:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26788,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "1259:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26789,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1288:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26790,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "1288:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26791,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1304:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26792,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "1304:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26785,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "1231:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1231:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26794,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26759,
                                "src": "1341:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26795,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "1341:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26796,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26759,
                                "src": "1383:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26797,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "1383:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26774,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "1087:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 26798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1087:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "1067:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 26800,
                      "nodeType": "ExpressionStatement",
                      "src": "1067:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26802,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26761,
                        "src": "1435:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26804,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "1435:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26815,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26771,
                              "src": "1604:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26811,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1556:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26812,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "1556:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26808,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1507:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26809,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "1507:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "1507:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1507:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "1507:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1507:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26805,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26761,
                            "src": "1459:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26806,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "1459:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "1459:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1459:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1435:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26819,
                  "nodeType": "ExpressionStatement",
                  "src": "1435:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26820,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26761,
                        "src": "1642:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26822,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "1642:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26833,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26771,
                              "src": "1789:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26829,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1741:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26830,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "1741:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26826,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1704:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26827,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "1704:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "1704:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1704:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "1704:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1704:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26823,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26761,
                            "src": "1661:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26824,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "1661:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "1661:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1661:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1642:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26837,
                  "nodeType": "ExpressionStatement",
                  "src": "1642:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26838,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26761,
                        "src": "1827:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26840,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "1827:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 26841,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26763,
                      "src": "1846:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1827:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 26843,
                  "nodeType": "ExpressionStatement",
                  "src": "1827:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26844,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26761,
                    "src": "1876:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26769,
                  "id": 26845,
                  "nodeType": "Return",
                  "src": "1869:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26757,
              "nodeType": "StructuredDocumentation",
              "src": "665:122:87",
              "text": " State transition for PAM analysis events\n @param state the old state\n @return the new state"
            },
            "id": 26847,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_AD",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26759,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "822:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26758,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "822:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26761,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "853:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26760,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "853:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26763,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "881:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "881:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26765,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "911:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26764,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "911:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "812:131:87"
            },
            "returnParameters": {
              "id": 26769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26768,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "991:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26767,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "991:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "990:14:87"
            },
            "scope": 28167,
            "src": "792:1096:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26925,
              "nodeType": "Block",
              "src": "2241:724:87",
              "statements": [
                {
                  "assignments": [
                    26862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26862,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26925,
                      "src": "2251:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 26861,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2251:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26863,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2251:24:87"
                },
                {
                  "id": 26892,
                  "nodeType": "Block",
                  "src": "2285:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 26890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 26864,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26862,
                          "src": "2299:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26867,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26852,
                                    "src": "2363:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26868,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "2363:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26869,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2381:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26870,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "2381:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26871,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2410:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26872,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "2410:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26873,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2426:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26874,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "2426:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26866,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "2349:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2349:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26877,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26854,
                                  "src": "2477:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26878,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2491:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26879,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "2491:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26880,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2520:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26881,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "2520:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26882,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2536:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26883,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "2536:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26876,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "2463:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2463:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26885,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26850,
                                "src": "2573:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26886,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "2573:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26887,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26850,
                                "src": "2615:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "2615:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26865,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "2319:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 26889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2319:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "2299:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 26891,
                      "nodeType": "ExpressionStatement",
                      "src": "2299:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26893,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26852,
                        "src": "2667:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26895,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "2667:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26906,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26862,
                              "src": "2836:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26902,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26852,
                                    "src": "2788:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26903,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "2788:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26899,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26852,
                                    "src": "2739:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26900,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "2739:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "2739:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2739:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2739:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2739:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26896,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26852,
                            "src": "2691:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26897,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "2691:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "2691:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2691:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2667:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26910,
                  "nodeType": "ExpressionStatement",
                  "src": "2667:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26911,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26852,
                        "src": "2874:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26913,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "2874:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2893:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2874:20:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26916,
                  "nodeType": "ExpressionStatement",
                  "src": "2874:20:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26917,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26852,
                        "src": "2904:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26919,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "2904:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 26920,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26854,
                      "src": "2923:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2904:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 26922,
                  "nodeType": "ExpressionStatement",
                  "src": "2904:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26923,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26852,
                    "src": "2953:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26860,
                  "id": 26924,
                  "nodeType": "Return",
                  "src": "2946:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26848,
              "nodeType": "StructuredDocumentation",
              "src": "1894:125:87",
              "text": " State transition for PAM fee payment events\n @param state the old state\n @return the new state"
            },
            "id": 26926,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_FP",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26850,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2054:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26849,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "2054:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26852,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2085:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26851,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2085:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26854,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2113:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2113:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26856,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2143:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26855,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2143:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2044:131:87"
            },
            "returnParameters": {
              "id": 26860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26859,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2223:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26858,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2223:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2222:14:87"
            },
            "scope": 28167,
            "src": "2024:941:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27016,
              "nodeType": "Block",
              "src": "3320:948:87",
              "statements": [
                {
                  "assignments": [
                    26941
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26941,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27016,
                      "src": "3330:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 26940,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3330:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26942,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3330:24:87"
                },
                {
                  "id": 26971,
                  "nodeType": "Block",
                  "src": "3364:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 26969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 26943,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26941,
                          "src": "3378:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26946,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "3442:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26947,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "3442:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26948,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3460:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26949,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "3460:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26950,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3489:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26951,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "3489:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26952,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3505:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26953,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "3505:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26945,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3428:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3428:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26956,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26933,
                                  "src": "3556:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26957,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3570:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26958,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "3570:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26959,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3599:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26960,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "3599:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26961,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3615:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26962,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "3615:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26955,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3542:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3542:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26964,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26929,
                                "src": "3652:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26965,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "3652:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26966,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26929,
                                "src": "3694:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26967,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "3694:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26944,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "3398:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 26968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3398:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "3378:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 26970,
                      "nodeType": "ExpressionStatement",
                      "src": "3378:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26972,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26931,
                        "src": "3746:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26974,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "3746:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26985,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26941,
                              "src": "3915:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26981,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "3867:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26982,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "3867:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26978,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "3818:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26979,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "3818:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "3818:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3818:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "3818:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3818:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26975,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26931,
                            "src": "3770:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26976,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "3770:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "3770:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3770:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3746:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26989,
                  "nodeType": "ExpressionStatement",
                  "src": "3746:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26990,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26931,
                        "src": "3953:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26992,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "3953:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27003,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26941,
                              "src": "4100:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26999,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "4052:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27000,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "4052:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26996,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "4015:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26997,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "4015:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "4015:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4015:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "4015:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4015:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26993,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26931,
                            "src": "3972:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26994,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "3972:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "3972:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3972:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3953:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27007,
                  "nodeType": "ExpressionStatement",
                  "src": "3953:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27008,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26931,
                        "src": "4207:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27010,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "4207:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27011,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26933,
                      "src": "4226:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4207:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27013,
                  "nodeType": "ExpressionStatement",
                  "src": "4207:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27014,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26931,
                    "src": "4256:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26939,
                  "id": 27015,
                  "nodeType": "Return",
                  "src": "4249:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26927,
              "nodeType": "StructuredDocumentation",
              "src": "2971:127:87",
              "text": " State transition for PAM principal prepayment\n @param state the old state\n @return the new state"
            },
            "id": 27017,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_PP",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26929,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3133:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26928,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "3133:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26931,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3164:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26930,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "3164:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26933,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3192:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3192:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26935,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3222:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26934,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3123:131:87"
            },
            "returnParameters": {
              "id": 26939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26938,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3302:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26937,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "3302:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3301:14:87"
            },
            "scope": 28167,
            "src": "3103:1165:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27107,
              "nodeType": "Block",
              "src": "4619:879:87",
              "statements": [
                {
                  "assignments": [
                    27032
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27032,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27107,
                      "src": "4629:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27031,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4629:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27033,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4629:24:87"
                },
                {
                  "id": 27062,
                  "nodeType": "Block",
                  "src": "4663:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27034,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27032,
                          "src": "4677:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27037,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "4741:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27038,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "4741:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27039,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4759:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27040,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "4759:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27041,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4788:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27042,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "4788:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27043,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4804:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27044,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "4804:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27036,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "4727:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4727:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27047,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27024,
                                  "src": "4855:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27048,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4869:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27049,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "4869:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27050,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4898:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27051,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "4898:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27052,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4914:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27053,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "4914:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27046,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "4841:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4841:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27055,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27020,
                                "src": "4951:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27056,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "4951:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27057,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27020,
                                "src": "4993:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27058,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "4993:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27035,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "4697:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4697:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "4677:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27061,
                      "nodeType": "ExpressionStatement",
                      "src": "4677:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27063,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "5045:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27065,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "5045:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27076,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27032,
                              "src": "5214:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27072,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "5166:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27073,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "5166:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27069,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "5117:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27070,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "5117:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "5117:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5117:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "5117:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5117:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27066,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "5069:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27067,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "5069:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "5069:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5069:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "5045:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27080,
                  "nodeType": "ExpressionStatement",
                  "src": "5045:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27081,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "5252:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27083,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "5252:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27094,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27032,
                              "src": "5399:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27090,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "5351:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27091,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "5351:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27087,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "5314:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27088,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "5314:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "5314:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5314:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "5314:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5314:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27084,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "5271:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27085,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "5271:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "5271:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5271:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "5252:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27098,
                  "nodeType": "ExpressionStatement",
                  "src": "5252:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27099,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "5437:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27101,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "5437:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27102,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27024,
                      "src": "5456:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5437:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27104,
                  "nodeType": "ExpressionStatement",
                  "src": "5437:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27105,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27022,
                    "src": "5486:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27030,
                  "id": 27106,
                  "nodeType": "Return",
                  "src": "5479:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27018,
              "nodeType": "StructuredDocumentation",
              "src": "4274:123:87",
              "text": " State transition for PAM penalty payments\n @param state the old state\n @return the new state"
            },
            "id": 27108,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_PY",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27020,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4432:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27019,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "4432:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27022,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4463:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27021,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4463:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27024,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4491:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27023,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27026,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4521:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4521:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4422:131:87"
            },
            "returnParameters": {
              "id": 27030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27029,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4601:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27028,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4601:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4600:14:87"
            },
            "scope": 28167,
            "src": "4402:1096:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27205,
              "nodeType": "Block",
              "src": "5851:936:87",
              "statements": [
                {
                  "assignments": [
                    27123
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27123,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27205,
                      "src": "5861:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27122,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5861:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27124,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5861:24:87"
                },
                {
                  "id": 27153,
                  "nodeType": "Block",
                  "src": "5895:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27125,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27123,
                          "src": "5909:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27128,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "5973:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27129,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "5973:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27130,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "5991:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27131,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "5991:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27132,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6020:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27133,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "6020:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27134,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6036:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27135,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "6036:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27127,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "5959:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5959:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27138,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27115,
                                  "src": "6087:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27139,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6101:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27140,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "6101:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27141,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6130:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27142,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "6130:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27143,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6146:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27144,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "6146:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27137,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "6073:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6073:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27146,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27111,
                                "src": "6183:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27147,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "6183:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27148,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27111,
                                "src": "6225:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27149,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "6225:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27126,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "5929:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5929:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "5909:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27152,
                      "nodeType": "ExpressionStatement",
                      "src": "5909:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27154,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6277:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27156,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "6277:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27167,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27123,
                              "src": "6446:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27163,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "6398:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27164,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "6398:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27160,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "6349:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27161,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "6349:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "6349:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6349:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "6349:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6349:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27157,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27113,
                            "src": "6301:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27158,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "6301:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "6301:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6301:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6277:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27171,
                  "nodeType": "ExpressionStatement",
                  "src": "6277:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27172,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6484:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27174,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "6484:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27185,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27123,
                              "src": "6631:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27181,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "6583:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27182,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "6583:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27178,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6546:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27179,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "6546:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "6546:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6546:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "6546:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6546:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27175,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27113,
                            "src": "6503:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27176,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "6503:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "6503:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6503:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6484:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27189,
                  "nodeType": "ExpressionStatement",
                  "src": "6484:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27190,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6669:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27192,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "6669:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27193,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27111,
                        "src": "6697:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27194,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextResetRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22731,
                      "src": "6697:19:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6669:47:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27196,
                  "nodeType": "ExpressionStatement",
                  "src": "6669:47:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27197,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6726:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "6726:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27200,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27115,
                      "src": "6745:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6726:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27202,
                  "nodeType": "ExpressionStatement",
                  "src": "6726:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27203,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27113,
                    "src": "6775:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27121,
                  "id": 27204,
                  "nodeType": "Return",
                  "src": "6768:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27109,
              "nodeType": "StructuredDocumentation",
              "src": "5504:124:87",
              "text": " State transition for PAM fixed rate resets\n @param state the old state\n @return the new state"
            },
            "id": 27206,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_RRF",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27111,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5664:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27110,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "5664:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27113,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5695:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27112,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "5695:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27115,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5723:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5723:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27117,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5753:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5753:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5654:131:87"
            },
            "returnParameters": {
              "id": 27121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27120,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5833:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27119,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "5833:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5832:14:87"
            },
            "scope": 28167,
            "src": "5633:1154:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27259,
              "nodeType": "Block",
              "src": "7146:272:87",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27220,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7156:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27222,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "7156:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7182:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7156:27:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27225,
                  "nodeType": "ExpressionStatement",
                  "src": "7156:27:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27226,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7193:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27228,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "7193:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7221:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7193:29:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27231,
                  "nodeType": "ExpressionStatement",
                  "src": "7193:29:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27232,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7232:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "7232:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7256:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7232:25:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27237,
                  "nodeType": "ExpressionStatement",
                  "src": "7232:25:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27238,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7267:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27240,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "7267:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7286:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7267:20:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27243,
                  "nodeType": "ExpressionStatement",
                  "src": "7267:20:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27244,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7297:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "7297:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27247,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "7325:19:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 27248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7325:22:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "7297:50:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 27250,
                  "nodeType": "ExpressionStatement",
                  "src": "7297:50:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27251,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7357:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27253,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "7357:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27254,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27213,
                      "src": "7376:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7357:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27256,
                  "nodeType": "ExpressionStatement",
                  "src": "7357:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27257,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27211,
                    "src": "7406:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27219,
                  "id": 27258,
                  "nodeType": "Return",
                  "src": "7399:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27207,
              "nodeType": "StructuredDocumentation",
              "src": "6793:125:87",
              "text": " State transition for PAM termination events\n @param state the old state\n @return the new state"
            },
            "id": 27260,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_TD",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27209,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "6953:15:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27208,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "6953:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27211,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "6990:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27210,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "6990:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27213,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "7018:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27212,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7018:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27215,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "7048:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27214,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7048:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6943:137:87"
            },
            "returnParameters": {
              "id": 27219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27218,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "7128:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27217,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "7128:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7127:14:87"
            },
            "scope": 28167,
            "src": "6923:495:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27392,
              "nodeType": "Block",
              "src": "7759:1464:87",
              "statements": [
                {
                  "assignments": [
                    27275
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27275,
                      "mutability": "mutable",
                      "name": "nonPerformingDate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27392,
                      "src": "7801:25:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27274,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7801:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27293,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27276,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27265,
                              "src": "7830:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 27277,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nonPerformingDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22638,
                            "src": "7830:23:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7857:1:87",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7830:28:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 27280,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7829:30:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27290,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27265,
                        "src": "8048:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27291,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nonPerformingDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22638,
                      "src": "8048:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 27292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "7829:242:87",
                    "trueExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 27282,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27267,
                          "src": "7906:12:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27283,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27263,
                            "src": "7936:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                              "typeString": "struct ANNTerms memory"
                            }
                          },
                          "id": 27284,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "businessDayConvention",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22683,
                          "src": "7936:27:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27285,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27263,
                            "src": "7981:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                              "typeString": "struct ANNTerms memory"
                            }
                          },
                          "id": 27286,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "calendar",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22677,
                          "src": "7981:14:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Calendar_$22506",
                            "typeString": "enum Calendar"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27287,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27263,
                            "src": "8013:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                              "typeString": "struct ANNTerms memory"
                            }
                          },
                          "id": 27288,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maturityDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22705,
                          "src": "8013:18:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          {
                            "typeIdentifier": "t_enum$_Calendar_$22506",
                            "typeString": "enum Calendar"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27281,
                        "name": "shiftEventTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23182,
                        "src": "7874:14:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7874:171:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7801:270:87"
                },
                {
                  "assignments": [
                    27295
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27295,
                      "mutability": "mutable",
                      "name": "currentTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27392,
                      "src": "8082:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27294,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8082:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27300,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 27298,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27269,
                        "src": "8117:12:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 27297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8109:7:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 27296,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8109:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 27299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8109:21:87",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8082:48:87"
                },
                {
                  "assignments": [
                    27302
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27302,
                      "mutability": "mutable",
                      "name": "isInGracePeriod",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27392,
                      "src": "8141:20:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 27301,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8141:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27304,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 27303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8164:5:87",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8141:28:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27305,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27263,
                        "src": "8183:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "gracePeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22755,
                      "src": "8183:17:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                        "typeString": "struct IP memory"
                      }
                    },
                    "id": 27307,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 22492,
                    "src": "8183:23:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 27333,
                  "nodeType": "IfStatement",
                  "src": "8179:305:87",
                  "trueBody": {
                    "id": 27332,
                    "nodeType": "Block",
                    "src": "8208:276:87",
                    "statements": [
                      {
                        "assignments": [
                          27309
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27309,
                            "mutability": "mutable",
                            "name": "graceDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 27332,
                            "src": "8222:17:87",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27308,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8222:7:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27315,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27311,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27263,
                                "src": "8265:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27312,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gracePeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22755,
                              "src": "8265:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27313,
                              "name": "nonPerformingDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27275,
                              "src": "8284:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27310,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "8242:22:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8242:60:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8222:80:87"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27316,
                            "name": "currentTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27295,
                            "src": "8320:16:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27317,
                            "name": "graceDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27309,
                            "src": "8340:9:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8320:29:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27331,
                        "nodeType": "IfStatement",
                        "src": "8316:158:87",
                        "trueBody": {
                          "id": 27330,
                          "nodeType": "Block",
                          "src": "8351:123:87",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27319,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27265,
                                    "src": "8369:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27321,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "contractPerformance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22634,
                                  "src": "8369:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27322,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "8397:19:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 27323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8397:22:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "8369:50:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                }
                              },
                              "id": 27325,
                              "nodeType": "ExpressionStatement",
                              "src": "8369:50:87"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27326,
                                  "name": "isInGracePeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27302,
                                  "src": "8437:15:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 27327,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8455:4:87",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "8437:22:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 27329,
                              "nodeType": "ExpressionStatement",
                              "src": "8437:22:87"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 27339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27334,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27263,
                          "src": "8498:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27335,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "delinquencyPeriod",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22757,
                        "src": "8498:23:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                          "typeString": "struct IP memory"
                        }
                      },
                      "id": 27336,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22492,
                      "src": "8498:29:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 27338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "8531:16:87",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 27337,
                        "name": "isInGracePeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27302,
                        "src": "8532:15:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8498:49:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 27369,
                  "nodeType": "IfStatement",
                  "src": "8494:398:87",
                  "trueBody": {
                    "id": 27368,
                    "nodeType": "Block",
                    "src": "8549:343:87",
                    "statements": [
                      {
                        "assignments": [
                          27341
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27341,
                            "mutability": "mutable",
                            "name": "delinquencyDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 27368,
                            "src": "8563:23:87",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27340,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8563:7:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27347,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27343,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27263,
                                "src": "8612:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27344,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "delinquencyPeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22757,
                              "src": "8612:23:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27345,
                              "name": "nonPerformingDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27275,
                              "src": "8637:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27342,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "8589:22:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8589:66:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8563:92:87"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27348,
                            "name": "currentTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27295,
                            "src": "8673:16:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27349,
                            "name": "delinquencyDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27341,
                            "src": "8693:15:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8673:35:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 27366,
                          "nodeType": "Block",
                          "src": "8799:83:87",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27359,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27265,
                                    "src": "8817:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27361,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "contractPerformance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22634,
                                  "src": "8817:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27362,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "8845:19:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 27363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DF",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8845:22:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "8817:50:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                }
                              },
                              "id": 27365,
                              "nodeType": "ExpressionStatement",
                              "src": "8817:50:87"
                            }
                          ]
                        },
                        "id": 27367,
                        "nodeType": "IfStatement",
                        "src": "8669:213:87",
                        "trueBody": {
                          "id": 27358,
                          "nodeType": "Block",
                          "src": "8710:83:87",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27351,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27265,
                                    "src": "8728:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27353,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "contractPerformance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22634,
                                  "src": "8728:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27354,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "8756:19:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 27355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DQ",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8756:22:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "8728:50:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                }
                              },
                              "id": 27357,
                              "nodeType": "ExpressionStatement",
                              "src": "8728:50:87"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 27373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27370,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27265,
                        "src": "8906:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27371,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nonPerformingDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22638,
                      "src": "8906:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8933:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8906:28:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 27389,
                  "nodeType": "IfStatement",
                  "src": "8902:292:87",
                  "trueBody": {
                    "id": 27388,
                    "nodeType": "Block",
                    "src": "8936:258:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27374,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27265,
                              "src": "8986:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 27376,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nonPerformingDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22638,
                            "src": "8986:23:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 27378,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27267,
                                "src": "9044:12:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27379,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "9074:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27380,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22683,
                                "src": "9074:27:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27381,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "9119:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27382,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22677,
                                "src": "9119:14:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27383,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "9151:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27384,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22705,
                                "src": "9151:18:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 27377,
                              "name": "shiftEventTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23182,
                              "src": "9012:14:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9012:171:87",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8986:197:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27387,
                        "nodeType": "ExpressionStatement",
                        "src": "8986:197:87"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27390,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27265,
                    "src": "9211:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27273,
                  "id": 27391,
                  "nodeType": "Return",
                  "src": "9204:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27261,
              "nodeType": "StructuredDocumentation",
              "src": "7424:120:87",
              "text": " State transition for PAM credit events\n @param state the old state\n @return the new state"
            },
            "id": 27393,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_CE",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27263,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7579:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27262,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "7579:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27265,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7610:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27264,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "7610:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27267,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7638:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7638:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27269,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7668:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27268,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7668:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7569:125:87"
            },
            "returnParameters": {
              "id": 27273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27272,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7741:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27271,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "7741:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7740:14:87"
            },
            "scope": 28167,
            "src": "7549:1674:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27440,
              "nodeType": "Block",
              "src": "9447:279:87",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27406,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9457:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "9457:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27410,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27395,
                              "src": "9492:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27411,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "9492:18:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 27409,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "9483:8:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 27412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9483:28:87",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27413,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27395,
                          "src": "9514:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27414,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "notionalPrincipal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22721,
                        "src": "9514:23:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "9483:54:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "9457:80:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27417,
                  "nodeType": "ExpressionStatement",
                  "src": "9457:80:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27418,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9547:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "9547:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27421,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27395,
                        "src": "9575:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27422,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22723,
                      "src": "9575:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "9547:53:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27424,
                  "nodeType": "ExpressionStatement",
                  "src": "9547:53:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27425,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9610:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27427,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "9610:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27428,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27399,
                      "src": "9629:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9610:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27430,
                  "nodeType": "ExpressionStatement",
                  "src": "9610:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27431,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9651:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27433,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "9651:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27434,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27395,
                        "src": "9675:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27435,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22725,
                      "src": "9675:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "9651:45:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27437,
                  "nodeType": "ExpressionStatement",
                  "src": "9651:45:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27438,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27397,
                    "src": "9714:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27405,
                  "id": 27439,
                  "nodeType": "Return",
                  "src": "9707:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27441,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_IED",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27395,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9260:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27394,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "9260:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27397,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9291:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27396,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9291:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27399,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9319:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9319:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27401,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9349:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27400,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9349:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9250:131:87"
            },
            "returnParameters": {
              "id": 27405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27404,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9429:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27403,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9429:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9428:14:87"
            },
            "scope": 28167,
            "src": "9229:497:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27540,
              "nodeType": "Block",
              "src": "9951:992:87",
              "statements": [
                {
                  "assignments": [
                    27455
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27455,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27540,
                      "src": "9961:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27454,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9961:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27456,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9961:24:87"
                },
                {
                  "id": 27485,
                  "nodeType": "Block",
                  "src": "9995:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27457,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27455,
                          "src": "10009:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27460,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27445,
                                    "src": "10073:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27461,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "10073:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27462,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10091:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27463,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "10091:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27464,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10120:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27465,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "10120:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27466,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10136:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27467,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "10136:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27459,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "10059:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10059:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27470,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27447,
                                  "src": "10187:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27471,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10201:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27472,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "10201:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27473,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10230:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27474,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "10230:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27475,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10246:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27476,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "10246:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27469,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "10173:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10173:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27478,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27443,
                                "src": "10283:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27479,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "10283:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27480,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27443,
                                "src": "10325:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27481,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "10325:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27458,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "10029:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10029:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "10009:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27484,
                      "nodeType": "ExpressionStatement",
                      "src": "10009:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27486,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10377:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27488,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "10377:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27502,
                                  "name": "timeFromLastEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27455,
                                  "src": "10610:17:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27498,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27445,
                                        "src": "10558:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                          "typeString": "struct State memory"
                                        }
                                      },
                                      "id": 27499,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "notionalPrincipal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22648,
                                      "src": "10558:23:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27495,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27445,
                                        "src": "10505:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                          "typeString": "struct State memory"
                                        }
                                      },
                                      "id": 27496,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nominalInterestRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22654,
                                      "src": "10505:25:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 27497,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "floatMult",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24120,
                                    "src": "10505:52:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                      "typeString": "function (int256,int256) pure returns (int256)"
                                    }
                                  },
                                  "id": 27500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10505:77:87",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "10505:104:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10505:123:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27492,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27445,
                                "src": "10449:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              "id": 27493,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "accruedInterest",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22650,
                              "src": "10449:21:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 38859,
                            "src": "10449:38:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10449:193:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27489,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27445,
                            "src": "10401:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27490,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "10401:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "10401:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10401:251:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "10377:275:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27507,
                  "nodeType": "ExpressionStatement",
                  "src": "10377:275:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27508,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10662:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27510,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "10662:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10686:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10662:25:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27513,
                  "nodeType": "ExpressionStatement",
                  "src": "10662:25:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27514,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10697:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27516,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "10697:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27527,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27455,
                              "src": "10844:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27523,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27445,
                                    "src": "10796:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27524,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "10796:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27520,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10759:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27521,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "10759:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "10759:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10759:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "10759:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10759:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27517,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27445,
                            "src": "10716:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27518,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "10716:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "10716:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10716:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "10697:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27531,
                  "nodeType": "ExpressionStatement",
                  "src": "10697:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27532,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10882:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27534,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "10882:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27535,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27447,
                      "src": "10901:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10882:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27537,
                  "nodeType": "ExpressionStatement",
                  "src": "10882:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27538,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27445,
                    "src": "10931:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27453,
                  "id": 27539,
                  "nodeType": "Return",
                  "src": "10924:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_IPCI",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27443,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9764:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27442,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "9764:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27445,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9795:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27444,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9795:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27447,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9823:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27446,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9823:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27449,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9853:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27448,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9853:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9754:131:87"
            },
            "returnParameters": {
              "id": 27453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27452,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9933:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27451,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9933:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9932:14:87"
            },
            "scope": 28167,
            "src": "9732:1211:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27618,
              "nodeType": "Block",
              "src": "11166:707:87",
              "statements": [
                {
                  "assignments": [
                    27555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27555,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27618,
                      "src": "11176:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27554,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11176:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27556,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11176:24:87"
                },
                {
                  "id": 27585,
                  "nodeType": "Block",
                  "src": "11210:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27557,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27555,
                          "src": "11224:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27560,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27545,
                                    "src": "11288:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27561,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "11288:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27562,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11306:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27563,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "11306:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27564,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11335:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27565,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "11335:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27566,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11351:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27567,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "11351:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27559,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "11274:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11274:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27570,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27547,
                                  "src": "11402:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27571,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11416:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27572,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "11416:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27573,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11445:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27574,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "11445:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27575,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11461:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27576,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "11461:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27569,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "11388:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11388:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27578,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27543,
                                "src": "11498:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27579,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "11498:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27580,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27543,
                                "src": "11540:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27581,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "11540:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27558,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "11244:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11244:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "11224:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27584,
                      "nodeType": "ExpressionStatement",
                      "src": "11224:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27586,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27545,
                        "src": "11592:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "11592:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11616:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11592:25:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27591,
                  "nodeType": "ExpressionStatement",
                  "src": "11592:25:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27592,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27545,
                        "src": "11627:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27594,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "11627:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27605,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27555,
                              "src": "11774:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27601,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27545,
                                    "src": "11726:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27602,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "11726:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27598,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11689:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27599,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "11689:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "11689:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11689:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "11689:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11689:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27595,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27545,
                            "src": "11646:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27596,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "11646:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "11646:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11646:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "11627:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27609,
                  "nodeType": "ExpressionStatement",
                  "src": "11627:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27610,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27545,
                        "src": "11812:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27612,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "11812:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27613,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27547,
                      "src": "11831:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11812:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27615,
                  "nodeType": "ExpressionStatement",
                  "src": "11812:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27616,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27545,
                    "src": "11861:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27553,
                  "id": 27617,
                  "nodeType": "Return",
                  "src": "11854:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27619,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_IP",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27543,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "10979:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27542,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "10979:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27545,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11010:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27544,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11010:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27547,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11038:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27546,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11038:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27549,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11068:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27548,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11068:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10969:131:87"
            },
            "returnParameters": {
              "id": 27553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27552,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11148:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27551,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11148:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11147:14:87"
            },
            "scope": 28167,
            "src": "10949:924:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27744,
              "nodeType": "Block",
              "src": "12096:1341:87",
              "statements": [
                {
                  "assignments": [
                    27633
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27633,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27744,
                      "src": "12106:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27632,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12106:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27634,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12106:24:87"
                },
                {
                  "id": 27663,
                  "nodeType": "Block",
                  "src": "12140:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27635,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27633,
                          "src": "12154:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27638,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12218:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27639,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "12218:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27640,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12236:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27641,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "12236:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27642,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12265:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27643,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "12265:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27644,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12281:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27645,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "12281:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27637,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "12204:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12204:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27648,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27625,
                                  "src": "12332:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27649,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12346:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27650,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "12346:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27651,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12375:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27652,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "12375:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27653,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12391:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27654,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "12391:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27647,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "12318:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12318:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27656,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27621,
                                "src": "12428:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27657,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "12428:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27658,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27621,
                                "src": "12470:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27659,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "12470:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27636,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "12174:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12174:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "12154:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27662,
                      "nodeType": "ExpressionStatement",
                      "src": "12154:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27664,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "12522:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "12522:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27677,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27633,
                              "src": "12691:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27673,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12643:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27674,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "12643:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27670,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12594:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27671,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "12594:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "12594:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12594:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "12594:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12594:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27667,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27623,
                            "src": "12546:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27668,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "12546:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "12546:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12546:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "12522:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27681,
                  "nodeType": "ExpressionStatement",
                  "src": "12522:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27682,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "12729:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27684,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "12729:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27695,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27633,
                              "src": "12876:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27691,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12828:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27692,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "12828:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27688,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12791:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27689,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "12791:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "12791:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12791:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "12791:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12791:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27685,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27623,
                            "src": "12748:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27686,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "12748:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "12748:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27697,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12748:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "12729:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27699,
                  "nodeType": "ExpressionStatement",
                  "src": "12729:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27700,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "12914:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27702,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "12914:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 27732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27707,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27621,
                                  "src": "12999:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27708,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "contractRole",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22679,
                                "src": "12999:18:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              ],
                              "id": 27706,
                              "name": "roleSign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23339,
                              "src": "12990:8:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                                "typeString": "function (enum ContractRole) pure returns (int8)"
                              }
                            },
                            "id": 27709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12990:28:87",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 27730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27720,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27621,
                                        "src": "13179:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                          "typeString": "struct ANNTerms memory"
                                        }
                                      },
                                      "id": 27721,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "contractRole",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22679,
                                      "src": "13179:18:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ContractRole_$22539",
                                        "typeString": "enum ContractRole"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_ContractRole_$22539",
                                        "typeString": "enum ContractRole"
                                      }
                                    ],
                                    "id": 27719,
                                    "name": "roleSign",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23339,
                                    "src": "13170:8:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                                      "typeString": "function (enum ContractRole) pure returns (int8)"
                                    }
                                  },
                                  "id": 27722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13170:28:87",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27726,
                                            "name": "state",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27623,
                                            "src": "13301:5:87",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                              "typeString": "struct State memory"
                                            }
                                          },
                                          "id": 27727,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accruedInterest",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22650,
                                          "src": "13301:21:87",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27723,
                                            "name": "state",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27623,
                                            "src": "13239:5:87",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                              "typeString": "struct State memory"
                                            }
                                          },
                                          "id": 27724,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "nextPrincipalRedemptionPayment",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22660,
                                          "src": "13239:36:87",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "id": 27725,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 38819,
                                        "src": "13239:61:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                          "typeString": "function (int256,int256) pure returns (int256)"
                                        }
                                      },
                                      "id": 27728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13239:84:87",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 27729,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13217:124:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "13170:171:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 27716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27711,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27621,
                                            "src": "13060:5:87",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                              "typeString": "struct ANNTerms memory"
                                            }
                                          },
                                          "id": 27712,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "contractRole",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22679,
                                          "src": "13060:18:87",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ContractRole_$22539",
                                            "typeString": "enum ContractRole"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_ContractRole_$22539",
                                            "typeString": "enum ContractRole"
                                          }
                                        ],
                                        "id": 27710,
                                        "name": "roleSign",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23339,
                                        "src": "13051:8:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                                          "typeString": "function (enum ContractRole) pure returns (int8)"
                                        }
                                      },
                                      "id": 27713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13051:28:87",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27714,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27623,
                                        "src": "13098:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                          "typeString": "struct State memory"
                                        }
                                      },
                                      "id": 27715,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "notionalPrincipal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22648,
                                      "src": "13098:23:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "13051:70:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 27717,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13033:102:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 27718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "min",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24211,
                              "src": "13033:119:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 27731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13033:322:87",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12990:365:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27703,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27623,
                            "src": "12940:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27704,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "notionalPrincipal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22648,
                          "src": "12940:23:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38819,
                        "src": "12940:36:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12940:425:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "12914:451:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27735,
                  "nodeType": "ExpressionStatement",
                  "src": "12914:451:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27736,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "13376:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27738,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "13376:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27739,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27625,
                      "src": "13395:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13376:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27741,
                  "nodeType": "ExpressionStatement",
                  "src": "13376:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27742,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27623,
                    "src": "13425:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27631,
                  "id": 27743,
                  "nodeType": "Return",
                  "src": "13418:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_PR",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27621,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11909:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27620,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "11909:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27623,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11940:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27622,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11940:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27625,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11968:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27624,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11968:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27627,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11998:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27626,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11998:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11899:131:87"
            },
            "returnParameters": {
              "id": 27631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27630,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "12078:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27629,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "12078:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12077:14:87"
            },
            "scope": 28167,
            "src": "11879:1558:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27847,
              "nodeType": "Block",
              "src": "13660:978:87",
              "statements": [
                {
                  "assignments": [
                    27759
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27759,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27847,
                      "src": "13670:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27758,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13670:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27760,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13670:24:87"
                },
                {
                  "id": 27789,
                  "nodeType": "Block",
                  "src": "13704:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27761,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27759,
                          "src": "13718:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27764,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "13782:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27765,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "13782:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27766,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13800:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27767,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "13800:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27768,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13829:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27769,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "13829:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27770,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13845:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27771,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "13845:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27763,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "13768:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13768:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27774,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27751,
                                  "src": "13896:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27775,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13910:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27776,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "13910:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27777,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13939:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27778,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "13939:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27779,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13955:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27780,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "13955:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27773,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "13882:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13882:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27782,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27747,
                                "src": "13992:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27783,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "13992:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27784,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27747,
                                "src": "14034:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "14034:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27762,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "13738:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13738:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "13718:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27788,
                      "nodeType": "ExpressionStatement",
                      "src": "13718:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27790,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14086:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27792,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "14086:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27803,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27759,
                              "src": "14255:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27799,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "14207:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27800,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "14207:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27796,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "14158:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27797,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "14158:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "14158:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14158:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "14158:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14158:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27793,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27749,
                            "src": "14110:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27794,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "14110:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "14110:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14110:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "14086:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27807,
                  "nodeType": "ExpressionStatement",
                  "src": "14086:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27808,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14293:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27810,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "14293:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27821,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27759,
                              "src": "14440:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27817,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "14392:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27818,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "14392:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27814,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "14355:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27815,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "14355:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "14355:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14355:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "14355:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14355:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27811,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27749,
                            "src": "14312:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27812,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "14312:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "14312:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14312:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "14293:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27825,
                  "nodeType": "ExpressionStatement",
                  "src": "14293:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27826,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14478:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27828,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "14478:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "302e30",
                      "id": 27829,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14504:3:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0.0"
                    },
                    "src": "14478:29:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27831,
                  "nodeType": "ExpressionStatement",
                  "src": "14478:29:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27832,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14517:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27834,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "14517:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27835,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "14545:19:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 27836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14545:22:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "14517:50:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 27838,
                  "nodeType": "ExpressionStatement",
                  "src": "14517:50:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27839,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14577:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27841,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "14577:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27842,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27751,
                      "src": "14596:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14577:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27844,
                  "nodeType": "ExpressionStatement",
                  "src": "14577:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27845,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27749,
                    "src": "14626:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27757,
                  "id": 27846,
                  "nodeType": "Return",
                  "src": "14619:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27848,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_MD",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27747,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13473:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27746,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "13473:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27749,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13504:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27748,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "13504:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27751,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13532:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27750,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13532:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27753,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13562:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27752,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13562:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13463:131:87"
            },
            "returnParameters": {
              "id": 27757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27756,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13642:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27755,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "13642:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13641:14:87"
            },
            "scope": 28167,
            "src": "13443:1195:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 28033,
              "nodeType": "Block",
              "src": "14855:1583:87",
              "statements": [
                {
                  "assignments": [
                    27862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27862,
                      "mutability": "mutable",
                      "name": "rate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28033,
                      "src": "14901:11:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27861,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14901:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27873,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 27872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 27865,
                            "name": "externalData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27856,
                            "src": "14922:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 27864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14915:6:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 27863,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14915:6:87",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 27866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14915:20:87",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27867,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "14938:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27868,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "rateMultiplier",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22727,
                        "src": "14938:20:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "14915:43:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27870,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27850,
                        "src": "14961:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27871,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "rateSpread",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22729,
                      "src": "14961:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "14915:62:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14901:76:87"
                },
                {
                  "assignments": [
                    27875
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27875,
                      "mutability": "mutable",
                      "name": "deltaRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28033,
                      "src": "14987:16:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27874,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14987:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27881,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27878,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27852,
                          "src": "15015:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        "id": 27879,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nominalInterestRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22654,
                        "src": "15015:25:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 27876,
                        "name": "rate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27862,
                        "src": "15006:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 38819,
                      "src": "15006:8:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 27880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15006:35:87",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14987:54:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 27898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 27885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27882,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15091:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27883,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15091:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27884,
                            "name": "deltaRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27875,
                            "src": "15107:9:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15091:25:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 27886,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "15090:27:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 27896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27887,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15122:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27888,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15122:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 27894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27890,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "15140:2:87",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 27889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15141:1:87",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_minus_1_by_1",
                                        "typeString": "int_const -1"
                                      }
                                    }
                                  ],
                                  "id": 27891,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15139:4:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27892,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15146:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27893,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "periodFloor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22753,
                                  "src": "15146:17:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "15139:24:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 27895,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15138:26:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15122:42:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 27897,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "15121:44:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15090:75:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 27905,
                        "name": "deltaRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27875,
                        "src": "15227:9:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 27911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 27907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "15241:2:87",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 27906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15242:1:87",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "id": 27908,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15240:4:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27909,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15247:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27910,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "periodFloor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22753,
                              "src": "15247:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "15240:24:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "id": 27912,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "15239:26:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15227:38:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 27925,
                    "nodeType": "IfStatement",
                    "src": "15223:107:87",
                    "trueBody": {
                      "id": 27924,
                      "nodeType": "Block",
                      "src": "15267:63:87",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 27922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 27914,
                              "name": "deltaRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27875,
                              "src": "15281:9:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 27920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 27916,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "15295:2:87",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 27915,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15296:1:87",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "id": 27917,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15294:4:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27918,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27850,
                                      "src": "15301:5:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                        "typeString": "struct ANNTerms memory"
                                      }
                                    },
                                    "id": 27919,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "periodFloor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22753,
                                    "src": "15301:17:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "15294:24:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 27921,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15293:26:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "15281:38:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 27923,
                          "nodeType": "ExpressionStatement",
                          "src": "15281:38:87"
                        }
                      ]
                    }
                  },
                  "id": 27926,
                  "nodeType": "IfStatement",
                  "src": "15086:244:87",
                  "trueBody": {
                    "id": 27904,
                    "nodeType": "Block",
                    "src": "15167:50:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27899,
                            "name": "deltaRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27875,
                            "src": "15181:9:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27900,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15193:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27901,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15193:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15181:25:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27903,
                        "nodeType": "ExpressionStatement",
                        "src": "15181:25:87"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 27927,
                      "name": "rate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27862,
                      "src": "15339:4:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 27931,
                          "name": "deltaRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27875,
                          "src": "15376:9:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27928,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27852,
                            "src": "15346:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27929,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nominalInterestRate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22654,
                          "src": "15346:25:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "15346:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15346:40:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "15339:47:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27934,
                  "nodeType": "ExpressionStatement",
                  "src": "15339:47:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 27944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27935,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15433:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27936,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeCap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22747,
                        "src": "15433:13:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 27937,
                        "name": "rate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27862,
                        "src": "15449:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15433:20:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27939,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15457:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27940,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeCap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22747,
                        "src": "15457:13:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27941,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15473:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27942,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeFloor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22749,
                        "src": "15473:15:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15457:31:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15433:55:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27954,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 27951,
                        "name": "rate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27862,
                        "src": "15545:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27952,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15552:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27953,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeFloor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22749,
                        "src": "15552:15:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15545:22:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 27961,
                    "nodeType": "IfStatement",
                    "src": "15541:75:87",
                    "trueBody": {
                      "id": 27960,
                      "nodeType": "Block",
                      "src": "15569:47:87",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 27958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 27955,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27862,
                              "src": "15583:4:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27956,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15590:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27957,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lifeFloor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22749,
                              "src": "15590:15:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "15583:22:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 27959,
                          "nodeType": "ExpressionStatement",
                          "src": "15583:22:87"
                        }
                      ]
                    }
                  },
                  "id": 27962,
                  "nodeType": "IfStatement",
                  "src": "15429:187:87",
                  "trueBody": {
                    "id": 27950,
                    "nodeType": "Block",
                    "src": "15490:45:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27945,
                            "name": "rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27862,
                            "src": "15504:4:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27946,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15511:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27947,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15511:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15504:20:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27949,
                        "nodeType": "ExpressionStatement",
                        "src": "15504:20:87"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    27964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27964,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28033,
                      "src": "15626:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27963,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15626:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27965,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15626:24:87"
                },
                {
                  "id": 27994,
                  "nodeType": "Block",
                  "src": "15660:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27966,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27964,
                          "src": "15674:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27969,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27852,
                                    "src": "15738:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27970,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "15738:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27971,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15756:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27972,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "15756:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27973,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15785:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27974,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "15785:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27975,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15801:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27976,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "15801:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27968,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "15724:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15724:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27979,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27854,
                                  "src": "15852:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27980,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15866:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27981,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "15866:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27982,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15895:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27983,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "15895:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27984,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15911:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27985,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "15911:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27978,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "15838:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15838:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27987,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15948:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27988,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "15948:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27989,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15990:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27990,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "15990:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27967,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "15694:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15694:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "15674:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27993,
                      "nodeType": "ExpressionStatement",
                      "src": "15674:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27995,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16042:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27997,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "16042:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28008,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27964,
                              "src": "16211:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28004,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27852,
                                    "src": "16163:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28005,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "16163:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28001,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27852,
                                    "src": "16114:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28002,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "16114:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 28003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "16114:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 28006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16114:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 28007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "16114:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 28009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16114:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27998,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27852,
                            "src": "16066:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27999,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "16066:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "16066:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 28010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16066:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "16042:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28012,
                  "nodeType": "ExpressionStatement",
                  "src": "16042:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28013,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16249:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28015,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "16249:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 28016,
                      "name": "rate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27862,
                      "src": "16277:4:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "16249:32:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28018,
                  "nodeType": "ExpressionStatement",
                  "src": "16249:32:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28019,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16291:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28021,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextPrincipalRedemptionPayment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22660,
                      "src": "16291:36:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 28022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16330:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "16291:40:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28024,
                  "nodeType": "ExpressionStatement",
                  "src": "16291:40:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28025,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16377:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28027,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "16377:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 28028,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27854,
                      "src": "16396:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16377:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 28030,
                  "nodeType": "ExpressionStatement",
                  "src": "16377:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28031,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27852,
                    "src": "16426:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27860,
                  "id": 28032,
                  "nodeType": "Return",
                  "src": "16419:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 28034,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_RR",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27850,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14674:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27849,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "14674:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27852,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14705:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27851,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14705:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27854,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14733:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14733:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27856,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14763:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27855,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14763:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14664:125:87"
            },
            "returnParameters": {
              "id": 27860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27859,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14837:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27858,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14837:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14836:14:87"
            },
            "scope": 28167,
            "src": "14644:1794:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 28165,
              "nodeType": "Block",
              "src": "16661:1264:87",
              "statements": [
                {
                  "assignments": [
                    28048
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 28048,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28165,
                      "src": "16671:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 28047,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16671:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 28049,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16671:24:87"
                },
                {
                  "id": 28078,
                  "nodeType": "Block",
                  "src": "16705:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 28076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 28050,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28048,
                          "src": "16719:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28053,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "16783:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28054,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "16783:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28055,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16801:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28056,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "16801:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28057,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16830:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28058,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "16830:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28059,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16846:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28060,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "16846:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 28052,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "16769:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 28061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16769:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28063,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28040,
                                  "src": "16897:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28064,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16911:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28065,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "16911:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28066,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16940:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28067,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "16940:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28068,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16956:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28069,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "16956:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 28062,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "16883:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 28070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16883:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28071,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28036,
                                "src": "16993:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 28072,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "16993:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28073,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28036,
                                "src": "17035:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 28074,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "17035:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28051,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "16739:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 28075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16739:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "16719:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 28077,
                      "nodeType": "ExpressionStatement",
                      "src": "16719:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28079,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28038,
                        "src": "17087:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28081,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "17087:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28092,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28048,
                              "src": "17256:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28088,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "17208:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28089,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "17208:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28085,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "17159:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28086,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "17159:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 28087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "17159:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 28090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17159:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 28091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "17159:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 28093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17159:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 28082,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28038,
                            "src": "17111:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 28083,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "17111:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "17111:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 28094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17111:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "17087:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28096,
                  "nodeType": "ExpressionStatement",
                  "src": "17087:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28097,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28038,
                        "src": "17294:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28099,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "17294:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28110,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28048,
                              "src": "17441:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28106,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "17393:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28107,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "17393:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28103,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "17356:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28104,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "17356:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 28105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "17356:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 28108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17356:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 28109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "17356:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 28111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17356:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 28100,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28038,
                            "src": "17313:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 28101,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "17313:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "17313:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 28112,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17313:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "17294:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28114,
                  "nodeType": "ExpressionStatement",
                  "src": "17294:175:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 28127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28115,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17485:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28116,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17485:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28117,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17508:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "I00",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17508:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17485:40:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28120,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17484:42:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28121,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17531:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28122,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17531:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28123,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17554:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "IN0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17554:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17531:40:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28126,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17530:42:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17484:88:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 28135,
                  "nodeType": "IfStatement",
                  "src": "17480:182:87",
                  "trueBody": {
                    "id": 28134,
                    "nodeType": "Block",
                    "src": "17574:88:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28128,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28038,
                              "src": "17588:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 28130,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "interestScalingMultiplier",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22656,
                            "src": "17588:31:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17622:1:87",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17588:35:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28133,
                        "nodeType": "ExpressionStatement",
                        "src": "17588:35:87"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 28148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28136,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17676:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28137,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17676:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28138,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17699:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "_0N0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17699:18:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17676:41:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28141,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17675:43:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28142,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17723:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17723:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28144,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17746:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "IN0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17746:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17723:40:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28147,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17722:42:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17675:89:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 28156,
                  "nodeType": "IfStatement",
                  "src": "17671:183:87",
                  "trueBody": {
                    "id": 28155,
                    "nodeType": "Block",
                    "src": "17766:88:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28149,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28038,
                              "src": "17780:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 28151,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "notionalScalingMultiplier",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22658,
                            "src": "17780:31:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17814:1:87",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17780:35:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28154,
                        "nodeType": "ExpressionStatement",
                        "src": "17780:35:87"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28157,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28038,
                        "src": "17864:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28159,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "17864:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 28160,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28040,
                      "src": "17883:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17864:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 28162,
                  "nodeType": "ExpressionStatement",
                  "src": "17864:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28163,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 28038,
                    "src": "17913:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 28046,
                  "id": 28164,
                  "nodeType": "Return",
                  "src": "17906:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 28166,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_SC",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 28043,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28036,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16474:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28035,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "16474:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28038,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16505:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28037,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16505:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28040,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16533:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 28039,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16533:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28042,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16563:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 28041,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16563:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16464:131:87"
            },
            "returnParameters": {
              "id": 28046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28045,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16643:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28044,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16643:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16642:14:87"
            },
            "scope": 28167,
            "src": "16444:1481:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 28168,
        "src": "243:17684:87"
      }
    ],
    "src": "41:17887:87"
  },
  "legacyAST": {
    "absolutePath": "@atpar/actus-solidity/contracts/Engines/ANN/ANNSTF.sol",
    "exportedSymbols": {
      "ANNSTF": [
        28167
      ]
    },
    "id": 28168,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 26734,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:87"
      },
      {
        "id": 26735,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:87"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Core.sol",
        "file": "../../Core/Core.sol",
        "id": 26736,
        "nodeType": "ImportDirective",
        "scope": 28168,
        "sourceUnit": 24036,
        "src": "101:29:87",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 26738,
              "name": "Core",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24035,
              "src": "262:4:87",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Core_$24035",
                "typeString": "contract Core"
              }
            },
            "id": 26739,
            "nodeType": "InheritanceSpecifier",
            "src": "262:4:87"
          }
        ],
        "contractDependencies": [
          22465,
          23277,
          23340,
          23895,
          24013,
          24035,
          24668,
          24758,
          24885,
          24931
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 26737,
          "nodeType": "StructuredDocumentation",
          "src": "133:109:87",
          "text": " @title STF\n @notice Contains all state transition functions (STFs) currently used by all Engines"
        },
        "fullyImplemented": true,
        "id": 28167,
        "linearizedBaseContracts": [
          28167,
          24035,
          24931,
          24668,
          24885,
          24013,
          23895,
          23340,
          22465,
          24758,
          23277
        ],
        "name": "ANNSTF",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 26755,
              "nodeType": "Block",
              "src": "630:29:87",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26753,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26744,
                    "src": "647:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26752,
                  "id": 26754,
                  "nodeType": "Return",
                  "src": "640:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26740,
              "nodeType": "StructuredDocumentation",
              "src": "274:122:87",
              "text": " State transition for PAM analysis events\n @param state the old state\n @return the new state"
            },
            "id": 26756,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_NE",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26742,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "431:15:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26741,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "431:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26744,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "468:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26743,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "468:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26746,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "496:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26745,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "496:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26748,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "532:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26747,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "532:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "421:143:87"
            },
            "returnParameters": {
              "id": 26752,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26751,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26756,
                  "src": "612:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26750,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "612:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "611:14:87"
            },
            "scope": 28167,
            "src": "401:258:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26846,
              "nodeType": "Block",
              "src": "1009:879:87",
              "statements": [
                {
                  "assignments": [
                    26771
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26771,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26846,
                      "src": "1019:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 26770,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1019:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26772,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1019:24:87"
                },
                {
                  "id": 26801,
                  "nodeType": "Block",
                  "src": "1053:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 26799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 26773,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26771,
                          "src": "1067:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26776,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1131:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26777,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "1131:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26778,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1149:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26779,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "1149:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26780,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1178:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26781,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "1178:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26782,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1194:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26783,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "1194:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26775,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "1117:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1117:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26786,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26763,
                                  "src": "1245:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26787,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1259:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26788,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "1259:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26789,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1288:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26790,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "1288:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26791,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1304:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26792,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "1304:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26785,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "1231:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1231:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26794,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26759,
                                "src": "1341:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26795,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "1341:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26796,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26759,
                                "src": "1383:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26797,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "1383:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26774,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "1087:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 26798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1087:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "1067:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 26800,
                      "nodeType": "ExpressionStatement",
                      "src": "1067:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26802,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26761,
                        "src": "1435:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26804,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "1435:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26815,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26771,
                              "src": "1604:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26811,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1556:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26812,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "1556:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26808,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1507:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26809,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "1507:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "1507:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1507:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "1507:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1507:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26805,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26761,
                            "src": "1459:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26806,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "1459:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "1459:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1459:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1435:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26819,
                  "nodeType": "ExpressionStatement",
                  "src": "1435:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26820,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26761,
                        "src": "1642:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26822,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "1642:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26833,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26771,
                              "src": "1789:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26829,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26761,
                                    "src": "1741:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26830,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "1741:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26826,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26759,
                                    "src": "1704:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26827,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "1704:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "1704:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1704:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26832,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "1704:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1704:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26823,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26761,
                            "src": "1661:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26824,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "1661:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "1661:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1661:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "1642:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26837,
                  "nodeType": "ExpressionStatement",
                  "src": "1642:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26842,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26838,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26761,
                        "src": "1827:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26840,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "1827:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 26841,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26763,
                      "src": "1846:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1827:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 26843,
                  "nodeType": "ExpressionStatement",
                  "src": "1827:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26844,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26761,
                    "src": "1876:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26769,
                  "id": 26845,
                  "nodeType": "Return",
                  "src": "1869:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26757,
              "nodeType": "StructuredDocumentation",
              "src": "665:122:87",
              "text": " State transition for PAM analysis events\n @param state the old state\n @return the new state"
            },
            "id": 26847,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_AD",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26759,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "822:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26758,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "822:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26761,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "853:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26760,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "853:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26763,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "881:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26762,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "881:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26765,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "911:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26764,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "911:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "812:131:87"
            },
            "returnParameters": {
              "id": 26769,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26768,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26847,
                  "src": "991:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26767,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "991:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "990:14:87"
            },
            "scope": 28167,
            "src": "792:1096:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 26925,
              "nodeType": "Block",
              "src": "2241:724:87",
              "statements": [
                {
                  "assignments": [
                    26862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26862,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 26925,
                      "src": "2251:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 26861,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2251:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26863,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2251:24:87"
                },
                {
                  "id": 26892,
                  "nodeType": "Block",
                  "src": "2285:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 26890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 26864,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26862,
                          "src": "2299:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26867,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26852,
                                    "src": "2363:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26868,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "2363:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26869,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2381:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26870,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "2381:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26871,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2410:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26872,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "2410:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26873,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2426:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26874,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "2426:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26866,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "2349:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2349:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26877,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26854,
                                  "src": "2477:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26878,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2491:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26879,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "2491:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26880,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2520:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26881,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "2520:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26882,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26850,
                                    "src": "2536:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26883,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "2536:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26876,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "2463:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2463:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26885,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26850,
                                "src": "2573:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26886,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "2573:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26887,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26850,
                                "src": "2615:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26888,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "2615:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26865,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "2319:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 26889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2319:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "2299:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 26891,
                      "nodeType": "ExpressionStatement",
                      "src": "2299:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26909,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26893,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26852,
                        "src": "2667:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26895,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "2667:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26906,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26862,
                              "src": "2836:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26902,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26852,
                                    "src": "2788:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26903,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "2788:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26899,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26852,
                                    "src": "2739:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26900,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "2739:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "2739:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2739:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26905,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "2739:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2739:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26896,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26852,
                            "src": "2691:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26897,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "2691:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26898,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "2691:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2691:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "2667:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26910,
                  "nodeType": "ExpressionStatement",
                  "src": "2667:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26915,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26911,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26852,
                        "src": "2874:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26913,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "2874:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 26914,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2893:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2874:20:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26916,
                  "nodeType": "ExpressionStatement",
                  "src": "2874:20:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26917,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26852,
                        "src": "2904:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26919,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "2904:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 26920,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26854,
                      "src": "2923:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2904:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 26922,
                  "nodeType": "ExpressionStatement",
                  "src": "2904:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26923,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26852,
                    "src": "2953:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26860,
                  "id": 26924,
                  "nodeType": "Return",
                  "src": "2946:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26848,
              "nodeType": "StructuredDocumentation",
              "src": "1894:125:87",
              "text": " State transition for PAM fee payment events\n @param state the old state\n @return the new state"
            },
            "id": 26926,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_FP",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26850,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2054:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26849,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "2054:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26852,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2085:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26851,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2085:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26854,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2113:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2113:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26856,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2143:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26855,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2143:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2044:131:87"
            },
            "returnParameters": {
              "id": 26860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26859,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 26926,
                  "src": "2223:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26858,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2223:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2222:14:87"
            },
            "scope": 28167,
            "src": "2024:941:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27016,
              "nodeType": "Block",
              "src": "3320:948:87",
              "statements": [
                {
                  "assignments": [
                    26941
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 26941,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27016,
                      "src": "3330:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 26940,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3330:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 26942,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3330:24:87"
                },
                {
                  "id": 26971,
                  "nodeType": "Block",
                  "src": "3364:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 26969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 26943,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26941,
                          "src": "3378:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26946,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "3442:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26947,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "3442:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26948,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3460:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26949,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "3460:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26950,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3489:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26951,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "3489:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26952,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3505:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26953,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "3505:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26945,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3428:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3428:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 26956,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26933,
                                  "src": "3556:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26957,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3570:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26958,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "3570:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26959,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3599:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26960,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "3599:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26961,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "3615:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26962,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "3615:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 26955,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "3542:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 26963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3542:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26964,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26929,
                                "src": "3652:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26965,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "3652:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 26966,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26929,
                                "src": "3694:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 26967,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "3694:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 26944,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "3398:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 26968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3398:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "3378:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 26970,
                      "nodeType": "ExpressionStatement",
                      "src": "3378:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 26988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26972,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26931,
                        "src": "3746:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26974,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "3746:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 26985,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26941,
                              "src": "3915:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26981,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "3867:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26982,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "3867:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26978,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "3818:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 26979,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "3818:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "3818:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 26983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3818:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 26984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "3818:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 26986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3818:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26975,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26931,
                            "src": "3770:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26976,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "3770:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26977,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "3770:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 26987,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3770:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3746:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 26989,
                  "nodeType": "ExpressionStatement",
                  "src": "3746:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 26990,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26931,
                        "src": "3953:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 26992,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "3953:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27003,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 26941,
                              "src": "4100:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26999,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26931,
                                    "src": "4052:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27000,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "4052:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 26996,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 26929,
                                    "src": "4015:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 26997,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "4015:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 26998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "4015:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27001,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4015:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "4015:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4015:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 26993,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26931,
                            "src": "3972:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 26994,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "3972:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 26995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "3972:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3972:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "3953:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27007,
                  "nodeType": "ExpressionStatement",
                  "src": "3953:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27008,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 26931,
                        "src": "4207:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27010,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "4207:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27011,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26933,
                      "src": "4226:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4207:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27013,
                  "nodeType": "ExpressionStatement",
                  "src": "4207:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27014,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 26931,
                    "src": "4256:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 26939,
                  "id": 27015,
                  "nodeType": "Return",
                  "src": "4249:12:87"
                }
              ]
            },
            "documentation": {
              "id": 26927,
              "nodeType": "StructuredDocumentation",
              "src": "2971:127:87",
              "text": " State transition for PAM principal prepayment\n @param state the old state\n @return the new state"
            },
            "id": 27017,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_PP",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 26936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26929,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3133:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26928,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "3133:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26931,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3164:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26930,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "3164:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26933,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3192:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 26932,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3192:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26935,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3222:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 26934,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3123:131:87"
            },
            "returnParameters": {
              "id": 26939,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 26938,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27017,
                  "src": "3302:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 26937,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "3302:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3301:14:87"
            },
            "scope": 28167,
            "src": "3103:1165:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27107,
              "nodeType": "Block",
              "src": "4619:879:87",
              "statements": [
                {
                  "assignments": [
                    27032
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27032,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27107,
                      "src": "4629:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27031,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4629:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27033,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4629:24:87"
                },
                {
                  "id": 27062,
                  "nodeType": "Block",
                  "src": "4663:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27034,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27032,
                          "src": "4677:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27037,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "4741:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27038,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "4741:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27039,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4759:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27040,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "4759:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27041,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4788:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27042,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "4788:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27043,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4804:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27044,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "4804:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27036,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "4727:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4727:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27047,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27024,
                                  "src": "4855:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27048,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4869:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27049,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "4869:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27050,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4898:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27051,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "4898:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27052,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "4914:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27053,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "4914:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27046,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "4841:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4841:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27055,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27020,
                                "src": "4951:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27056,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "4951:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27057,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27020,
                                "src": "4993:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27058,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "4993:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27035,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "4697:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4697:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "4677:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27061,
                      "nodeType": "ExpressionStatement",
                      "src": "4677:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27063,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "5045:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27065,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "5045:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27076,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27032,
                              "src": "5214:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27072,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "5166:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27073,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "5166:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27069,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "5117:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27070,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "5117:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "5117:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5117:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "5117:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5117:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27066,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "5069:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27067,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "5069:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "5069:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5069:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "5045:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27080,
                  "nodeType": "ExpressionStatement",
                  "src": "5045:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27081,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "5252:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27083,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "5252:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27094,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27032,
                              "src": "5399:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27090,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27022,
                                    "src": "5351:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27091,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "5351:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27087,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27020,
                                    "src": "5314:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27088,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "5314:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "5314:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5314:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "5314:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5314:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27084,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27022,
                            "src": "5271:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27085,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "5271:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "5271:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27096,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5271:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "5252:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27098,
                  "nodeType": "ExpressionStatement",
                  "src": "5252:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27099,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27022,
                        "src": "5437:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27101,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "5437:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27102,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27024,
                      "src": "5456:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5437:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27104,
                  "nodeType": "ExpressionStatement",
                  "src": "5437:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27105,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27022,
                    "src": "5486:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27030,
                  "id": 27106,
                  "nodeType": "Return",
                  "src": "5479:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27018,
              "nodeType": "StructuredDocumentation",
              "src": "4274:123:87",
              "text": " State transition for PAM penalty payments\n @param state the old state\n @return the new state"
            },
            "id": 27108,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_PY",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27020,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4432:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27019,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "4432:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27022,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4463:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27021,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4463:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27024,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4491:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27023,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27026,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4521:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27025,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4521:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4422:131:87"
            },
            "returnParameters": {
              "id": 27030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27029,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27108,
                  "src": "4601:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27028,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "4601:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4600:14:87"
            },
            "scope": 28167,
            "src": "4402:1096:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27205,
              "nodeType": "Block",
              "src": "5851:936:87",
              "statements": [
                {
                  "assignments": [
                    27123
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27123,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27205,
                      "src": "5861:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27122,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5861:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27124,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5861:24:87"
                },
                {
                  "id": 27153,
                  "nodeType": "Block",
                  "src": "5895:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27125,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27123,
                          "src": "5909:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27128,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "5973:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27129,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "5973:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27130,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "5991:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27131,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "5991:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27132,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6020:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27133,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "6020:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27134,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6036:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27135,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "6036:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27127,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "5959:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5959:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27138,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27115,
                                  "src": "6087:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27139,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6101:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27140,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "6101:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27141,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6130:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27142,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "6130:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27143,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6146:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27144,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "6146:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27137,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "6073:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6073:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27146,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27111,
                                "src": "6183:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27147,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "6183:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27148,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27111,
                                "src": "6225:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27149,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "6225:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27126,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "5929:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5929:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "5909:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27152,
                      "nodeType": "ExpressionStatement",
                      "src": "5909:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27170,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27154,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6277:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27156,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "6277:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27167,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27123,
                              "src": "6446:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27163,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "6398:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27164,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "6398:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27160,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "6349:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27161,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "6349:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "6349:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6349:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "6349:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6349:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27157,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27113,
                            "src": "6301:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27158,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "6301:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "6301:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27169,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6301:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6277:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27171,
                  "nodeType": "ExpressionStatement",
                  "src": "6277:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27172,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6484:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27174,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "6484:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27185,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27123,
                              "src": "6631:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27181,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27113,
                                    "src": "6583:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27182,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "6583:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27178,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27111,
                                    "src": "6546:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27179,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "6546:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "6546:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6546:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "6546:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27186,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6546:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27175,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27113,
                            "src": "6503:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27176,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "6503:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "6503:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6503:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6484:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27189,
                  "nodeType": "ExpressionStatement",
                  "src": "6484:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27190,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6669:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27192,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "6669:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27193,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27111,
                        "src": "6697:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27194,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nextResetRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22731,
                      "src": "6697:19:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "6669:47:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27196,
                  "nodeType": "ExpressionStatement",
                  "src": "6669:47:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27197,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27113,
                        "src": "6726:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27199,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "6726:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27200,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27115,
                      "src": "6745:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6726:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27202,
                  "nodeType": "ExpressionStatement",
                  "src": "6726:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27203,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27113,
                    "src": "6775:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27121,
                  "id": 27204,
                  "nodeType": "Return",
                  "src": "6768:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27109,
              "nodeType": "StructuredDocumentation",
              "src": "5504:124:87",
              "text": " State transition for PAM fixed rate resets\n @param state the old state\n @return the new state"
            },
            "id": 27206,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_RRF",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27111,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5664:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27110,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "5664:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27113,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5695:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27112,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "5695:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27115,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5723:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5723:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27117,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5753:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5753:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5654:131:87"
            },
            "returnParameters": {
              "id": 27121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27120,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27206,
                  "src": "5833:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27119,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "5833:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5832:14:87"
            },
            "scope": 28167,
            "src": "5633:1154:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27259,
              "nodeType": "Block",
              "src": "7146:272:87",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27220,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7156:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27222,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "7156:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27223,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7182:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7156:27:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27225,
                  "nodeType": "ExpressionStatement",
                  "src": "7156:27:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27226,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7193:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27228,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "7193:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7221:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7193:29:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27231,
                  "nodeType": "ExpressionStatement",
                  "src": "7193:29:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27232,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7232:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "7232:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7256:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7232:25:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27237,
                  "nodeType": "ExpressionStatement",
                  "src": "7232:25:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27238,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7267:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27240,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "7267:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7286:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7267:20:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27243,
                  "nodeType": "ExpressionStatement",
                  "src": "7267:20:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27244,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7297:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27246,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "7297:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27247,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "7325:19:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 27248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "TD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7325:22:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "7297:50:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 27250,
                  "nodeType": "ExpressionStatement",
                  "src": "7297:50:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27251,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27211,
                        "src": "7357:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27253,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "7357:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27254,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27213,
                      "src": "7376:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7357:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27256,
                  "nodeType": "ExpressionStatement",
                  "src": "7357:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27257,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27211,
                    "src": "7406:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27219,
                  "id": 27258,
                  "nodeType": "Return",
                  "src": "7399:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27207,
              "nodeType": "StructuredDocumentation",
              "src": "6793:125:87",
              "text": " State transition for PAM termination events\n @param state the old state\n @return the new state"
            },
            "id": 27260,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_TD",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27209,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "6953:15:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27208,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "6953:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27211,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "6990:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27210,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "6990:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27213,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "7018:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27212,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7018:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27215,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "7048:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27214,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7048:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6943:137:87"
            },
            "returnParameters": {
              "id": 27219,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27218,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27260,
                  "src": "7128:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27217,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "7128:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7127:14:87"
            },
            "scope": 28167,
            "src": "6923:495:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27392,
              "nodeType": "Block",
              "src": "7759:1464:87",
              "statements": [
                {
                  "assignments": [
                    27275
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27275,
                      "mutability": "mutable",
                      "name": "nonPerformingDate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27392,
                      "src": "7801:25:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27274,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "7801:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27293,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27276,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27265,
                              "src": "7830:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 27277,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nonPerformingDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22638,
                            "src": "7830:23:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 27278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7857:1:87",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7830:28:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 27280,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7829:30:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27290,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27265,
                        "src": "8048:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27291,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nonPerformingDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22638,
                      "src": "8048:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 27292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "7829:242:87",
                    "trueExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 27282,
                          "name": "scheduleTime",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27267,
                          "src": "7906:12:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27283,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27263,
                            "src": "7936:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                              "typeString": "struct ANNTerms memory"
                            }
                          },
                          "id": 27284,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "businessDayConvention",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22683,
                          "src": "7936:27:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27285,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27263,
                            "src": "7981:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                              "typeString": "struct ANNTerms memory"
                            }
                          },
                          "id": 27286,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "calendar",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22677,
                          "src": "7981:14:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Calendar_$22506",
                            "typeString": "enum Calendar"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27287,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27263,
                            "src": "8013:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                              "typeString": "struct ANNTerms memory"
                            }
                          },
                          "id": 27288,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "maturityDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22705,
                          "src": "8013:18:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                            "typeString": "enum BusinessDayConvention"
                          },
                          {
                            "typeIdentifier": "t_enum$_Calendar_$22506",
                            "typeString": "enum Calendar"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 27281,
                        "name": "shiftEventTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23182,
                        "src": "7874:14:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 27289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7874:171:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7801:270:87"
                },
                {
                  "assignments": [
                    27295
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27295,
                      "mutability": "mutable",
                      "name": "currentTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27392,
                      "src": "8082:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 27294,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8082:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27300,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 27298,
                        "name": "externalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27269,
                        "src": "8117:12:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 27297,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8109:7:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 27296,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8109:7:87",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 27299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8109:21:87",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8082:48:87"
                },
                {
                  "assignments": [
                    27302
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27302,
                      "mutability": "mutable",
                      "name": "isInGracePeriod",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27392,
                      "src": "8141:20:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 27301,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "8141:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27304,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 27303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8164:5:87",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8141:28:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27305,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27263,
                        "src": "8183:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27306,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "gracePeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22755,
                      "src": "8183:17:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                        "typeString": "struct IP memory"
                      }
                    },
                    "id": 27307,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "isSet",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 22492,
                    "src": "8183:23:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 27333,
                  "nodeType": "IfStatement",
                  "src": "8179:305:87",
                  "trueBody": {
                    "id": 27332,
                    "nodeType": "Block",
                    "src": "8208:276:87",
                    "statements": [
                      {
                        "assignments": [
                          27309
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27309,
                            "mutability": "mutable",
                            "name": "graceDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 27332,
                            "src": "8222:17:87",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27308,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8222:7:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27315,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27311,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27263,
                                "src": "8265:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27312,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gracePeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22755,
                              "src": "8265:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27313,
                              "name": "nonPerformingDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27275,
                              "src": "8284:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27310,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "8242:22:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8242:60:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8222:80:87"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27316,
                            "name": "currentTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27295,
                            "src": "8320:16:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27317,
                            "name": "graceDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27309,
                            "src": "8340:9:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8320:29:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 27331,
                        "nodeType": "IfStatement",
                        "src": "8316:158:87",
                        "trueBody": {
                          "id": 27330,
                          "nodeType": "Block",
                          "src": "8351:123:87",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27324,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27319,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27265,
                                    "src": "8369:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27321,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "contractPerformance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22634,
                                  "src": "8369:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27322,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "8397:19:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 27323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DL",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8397:22:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "8369:50:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                }
                              },
                              "id": 27325,
                              "nodeType": "ExpressionStatement",
                              "src": "8369:50:87"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 27326,
                                  "name": "isInGracePeriod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27302,
                                  "src": "8437:15:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "74727565",
                                  "id": 27327,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8455:4:87",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "8437:22:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 27329,
                              "nodeType": "ExpressionStatement",
                              "src": "8437:22:87"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 27339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27334,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27263,
                          "src": "8498:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27335,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "delinquencyPeriod",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22757,
                        "src": "8498:23:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                          "typeString": "struct IP memory"
                        }
                      },
                      "id": 27336,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isSet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22492,
                      "src": "8498:29:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 27338,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "8531:16:87",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 27337,
                        "name": "isInGracePeriod",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27302,
                        "src": "8532:15:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8498:49:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 27369,
                  "nodeType": "IfStatement",
                  "src": "8494:398:87",
                  "trueBody": {
                    "id": 27368,
                    "nodeType": "Block",
                    "src": "8549:343:87",
                    "statements": [
                      {
                        "assignments": [
                          27341
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 27341,
                            "mutability": "mutable",
                            "name": "delinquencyDate",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 27368,
                            "src": "8563:23:87",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 27340,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8563:7:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 27347,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27343,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27263,
                                "src": "8612:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27344,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "delinquencyPeriod",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22757,
                              "src": "8612:23:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 27345,
                              "name": "nonPerformingDate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27275,
                              "src": "8637:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27342,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "8589:22:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 27346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8589:66:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8563:92:87"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 27350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 27348,
                            "name": "currentTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27295,
                            "src": "8673:16:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27349,
                            "name": "delinquencyDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27341,
                            "src": "8693:15:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8673:35:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 27366,
                          "nodeType": "Block",
                          "src": "8799:83:87",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27359,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27265,
                                    "src": "8817:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27361,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "contractPerformance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22634,
                                  "src": "8817:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27362,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "8845:19:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 27363,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DF",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8845:22:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "8817:50:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                }
                              },
                              "id": 27365,
                              "nodeType": "ExpressionStatement",
                              "src": "8817:50:87"
                            }
                          ]
                        },
                        "id": 27367,
                        "nodeType": "IfStatement",
                        "src": "8669:213:87",
                        "trueBody": {
                          "id": 27358,
                          "nodeType": "Block",
                          "src": "8710:83:87",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 27356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27351,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27265,
                                    "src": "8728:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27353,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "contractPerformance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22634,
                                  "src": "8728:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27354,
                                    "name": "ContractPerformance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22513,
                                    "src": "8756:19:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                                      "typeString": "type(enum ContractPerformance)"
                                    }
                                  },
                                  "id": 27355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "DQ",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8756:22:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                    "typeString": "enum ContractPerformance"
                                  }
                                },
                                "src": "8728:50:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                                  "typeString": "enum ContractPerformance"
                                }
                              },
                              "id": 27357,
                              "nodeType": "ExpressionStatement",
                              "src": "8728:50:87"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 27373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27370,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27265,
                        "src": "8906:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27371,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nonPerformingDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22638,
                      "src": "8906:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8933:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8906:28:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 27389,
                  "nodeType": "IfStatement",
                  "src": "8902:292:87",
                  "trueBody": {
                    "id": 27388,
                    "nodeType": "Block",
                    "src": "8936:258:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27374,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27265,
                              "src": "8986:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 27376,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "nonPerformingDate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22638,
                            "src": "8986:23:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 27378,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27267,
                                "src": "9044:12:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27379,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "9074:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27380,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22683,
                                "src": "9074:27:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27381,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "9119:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27382,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22677,
                                "src": "9119:14:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27383,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "9151:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27384,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22705,
                                "src": "9151:18:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 27377,
                              "name": "shiftEventTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23182,
                              "src": "9012:14:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 27385,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9012:171:87",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8986:197:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 27387,
                        "nodeType": "ExpressionStatement",
                        "src": "8986:197:87"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27390,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27265,
                    "src": "9211:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27273,
                  "id": 27391,
                  "nodeType": "Return",
                  "src": "9204:12:87"
                }
              ]
            },
            "documentation": {
              "id": 27261,
              "nodeType": "StructuredDocumentation",
              "src": "7424:120:87",
              "text": " State transition for PAM credit events\n @param state the old state\n @return the new state"
            },
            "id": 27393,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_CE",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27263,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7579:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27262,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "7579:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27265,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7610:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27264,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "7610:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27267,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7638:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7638:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27269,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7668:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27268,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7668:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7569:125:87"
            },
            "returnParameters": {
              "id": 27273,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27272,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27393,
                  "src": "7741:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27271,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "7741:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7740:14:87"
            },
            "scope": 28167,
            "src": "7549:1674:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27440,
              "nodeType": "Block",
              "src": "9447:279:87",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27406,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9457:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27408,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "9457:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27410,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27395,
                              "src": "9492:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27411,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "contractRole",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22679,
                            "src": "9492:18:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_enum$_ContractRole_$22539",
                              "typeString": "enum ContractRole"
                            }
                          ],
                          "id": 27409,
                          "name": "roleSign",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23339,
                          "src": "9483:8:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                            "typeString": "function (enum ContractRole) pure returns (int8)"
                          }
                        },
                        "id": 27412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9483:28:87",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27413,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27395,
                          "src": "9514:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27414,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "notionalPrincipal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22721,
                        "src": "9514:23:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "9483:54:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "9457:80:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27417,
                  "nodeType": "ExpressionStatement",
                  "src": "9457:80:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27418,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9547:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "9547:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27421,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27395,
                        "src": "9575:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27422,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22723,
                      "src": "9575:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "9547:53:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27424,
                  "nodeType": "ExpressionStatement",
                  "src": "9547:53:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27425,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9610:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27427,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "9610:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27428,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27399,
                      "src": "9629:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9610:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27430,
                  "nodeType": "ExpressionStatement",
                  "src": "9610:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27431,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27397,
                        "src": "9651:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27433,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "9651:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27434,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27395,
                        "src": "9675:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27435,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22725,
                      "src": "9675:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "9651:45:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27437,
                  "nodeType": "ExpressionStatement",
                  "src": "9651:45:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27438,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27397,
                    "src": "9714:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27405,
                  "id": 27439,
                  "nodeType": "Return",
                  "src": "9707:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27441,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_IED",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27395,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9260:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27394,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "9260:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27397,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9291:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27396,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9291:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27399,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9319:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9319:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27401,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9349:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27400,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9349:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9250:131:87"
            },
            "returnParameters": {
              "id": 27405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27404,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27441,
                  "src": "9429:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27403,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9429:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9428:14:87"
            },
            "scope": 28167,
            "src": "9229:497:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27540,
              "nodeType": "Block",
              "src": "9951:992:87",
              "statements": [
                {
                  "assignments": [
                    27455
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27455,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27540,
                      "src": "9961:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27454,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9961:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27456,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9961:24:87"
                },
                {
                  "id": 27485,
                  "nodeType": "Block",
                  "src": "9995:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27457,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27455,
                          "src": "10009:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27460,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27445,
                                    "src": "10073:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27461,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "10073:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27462,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10091:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27463,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "10091:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27464,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10120:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27465,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "10120:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27466,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10136:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27467,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "10136:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27459,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "10059:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10059:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27470,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27447,
                                  "src": "10187:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27471,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10201:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27472,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "10201:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27473,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10230:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27474,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "10230:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27475,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10246:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27476,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "10246:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27469,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "10173:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10173:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27478,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27443,
                                "src": "10283:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27479,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "10283:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27480,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27443,
                                "src": "10325:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27481,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "10325:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27458,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "10029:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10029:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "10009:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27484,
                      "nodeType": "ExpressionStatement",
                      "src": "10009:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27486,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10377:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27488,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "10377:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27502,
                                  "name": "timeFromLastEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27455,
                                  "src": "10610:17:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27498,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27445,
                                        "src": "10558:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                          "typeString": "struct State memory"
                                        }
                                      },
                                      "id": 27499,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "notionalPrincipal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22648,
                                      "src": "10558:23:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27495,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27445,
                                        "src": "10505:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                          "typeString": "struct State memory"
                                        }
                                      },
                                      "id": 27496,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "nominalInterestRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22654,
                                      "src": "10505:25:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 27497,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "floatMult",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24120,
                                    "src": "10505:52:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                      "typeString": "function (int256,int256) pure returns (int256)"
                                    }
                                  },
                                  "id": 27500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10505:77:87",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "10505:104:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10505:123:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27492,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27445,
                                "src": "10449:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                  "typeString": "struct State memory"
                                }
                              },
                              "id": 27493,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "accruedInterest",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22650,
                              "src": "10449:21:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 38859,
                            "src": "10449:38:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10449:193:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27489,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27445,
                            "src": "10401:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27490,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "10401:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "10401:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10401:251:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "10377:275:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27507,
                  "nodeType": "ExpressionStatement",
                  "src": "10377:275:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27508,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10662:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27510,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "10662:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10686:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10662:25:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27513,
                  "nodeType": "ExpressionStatement",
                  "src": "10662:25:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27514,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10697:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27516,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "10697:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27527,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27455,
                              "src": "10844:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27523,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27445,
                                    "src": "10796:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27524,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "10796:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27520,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27443,
                                    "src": "10759:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27521,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "10759:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "10759:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10759:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "10759:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10759:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27517,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27445,
                            "src": "10716:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27518,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "10716:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "10716:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27529,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10716:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "10697:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27531,
                  "nodeType": "ExpressionStatement",
                  "src": "10697:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27532,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27445,
                        "src": "10882:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27534,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "10882:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27535,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27447,
                      "src": "10901:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10882:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27537,
                  "nodeType": "ExpressionStatement",
                  "src": "10882:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27538,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27445,
                    "src": "10931:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27453,
                  "id": 27539,
                  "nodeType": "Return",
                  "src": "10924:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27541,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_IPCI",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27443,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9764:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27442,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "9764:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27445,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9795:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27444,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9795:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27447,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9823:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27446,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9823:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27449,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9853:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27448,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9853:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9754:131:87"
            },
            "returnParameters": {
              "id": 27453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27452,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27541,
                  "src": "9933:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27451,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "9933:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9932:14:87"
            },
            "scope": 28167,
            "src": "9732:1211:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27618,
              "nodeType": "Block",
              "src": "11166:707:87",
              "statements": [
                {
                  "assignments": [
                    27555
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27555,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27618,
                      "src": "11176:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27554,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11176:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27556,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11176:24:87"
                },
                {
                  "id": 27585,
                  "nodeType": "Block",
                  "src": "11210:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27557,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27555,
                          "src": "11224:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27560,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27545,
                                    "src": "11288:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27561,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "11288:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27562,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11306:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27563,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "11306:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27564,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11335:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27565,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "11335:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27566,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11351:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27567,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "11351:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27559,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "11274:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11274:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27570,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27547,
                                  "src": "11402:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27571,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11416:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27572,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "11416:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27573,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11445:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27574,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "11445:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27575,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11461:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27576,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "11461:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27569,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "11388:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27577,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11388:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27578,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27543,
                                "src": "11498:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27579,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "11498:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27580,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27543,
                                "src": "11540:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27581,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "11540:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27558,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "11244:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11244:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "11224:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27584,
                      "nodeType": "ExpressionStatement",
                      "src": "11224:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27586,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27545,
                        "src": "11592:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "11592:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 27589,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11616:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11592:25:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27591,
                  "nodeType": "ExpressionStatement",
                  "src": "11592:25:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27592,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27545,
                        "src": "11627:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27594,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "11627:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27605,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27555,
                              "src": "11774:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27601,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27545,
                                    "src": "11726:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27602,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "11726:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27598,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27543,
                                    "src": "11689:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27599,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "11689:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "11689:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11689:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "11689:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11689:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27595,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27545,
                            "src": "11646:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27596,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "11646:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "11646:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27607,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11646:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "11627:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27609,
                  "nodeType": "ExpressionStatement",
                  "src": "11627:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27610,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27545,
                        "src": "11812:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27612,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "11812:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27613,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27547,
                      "src": "11831:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11812:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27615,
                  "nodeType": "ExpressionStatement",
                  "src": "11812:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27616,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27545,
                    "src": "11861:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27553,
                  "id": 27617,
                  "nodeType": "Return",
                  "src": "11854:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27619,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_IP",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27543,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "10979:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27542,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "10979:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27545,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11010:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27544,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11010:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27547,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11038:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27546,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11038:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27549,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11068:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27548,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11068:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10969:131:87"
            },
            "returnParameters": {
              "id": 27553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27552,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27619,
                  "src": "11148:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27551,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11148:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11147:14:87"
            },
            "scope": 28167,
            "src": "10949:924:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27744,
              "nodeType": "Block",
              "src": "12096:1341:87",
              "statements": [
                {
                  "assignments": [
                    27633
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27633,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27744,
                      "src": "12106:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27632,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "12106:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27634,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12106:24:87"
                },
                {
                  "id": 27663,
                  "nodeType": "Block",
                  "src": "12140:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27635,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27633,
                          "src": "12154:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27638,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12218:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27639,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "12218:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27640,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12236:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27641,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "12236:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27642,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12265:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27643,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "12265:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27644,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12281:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27645,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "12281:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27637,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "12204:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12204:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27648,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27625,
                                  "src": "12332:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27649,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12346:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27650,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "12346:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27651,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12375:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27652,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "12375:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27653,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12391:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27654,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "12391:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27647,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "12318:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12318:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27656,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27621,
                                "src": "12428:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27657,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "12428:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27658,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27621,
                                "src": "12470:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27659,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "12470:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27636,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "12174:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12174:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "12154:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27662,
                      "nodeType": "ExpressionStatement",
                      "src": "12154:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27664,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "12522:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27666,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "12522:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27677,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27633,
                              "src": "12691:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27673,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12643:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27674,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "12643:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27670,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12594:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27671,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "12594:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "12594:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12594:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "12594:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27678,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12594:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27667,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27623,
                            "src": "12546:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27668,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "12546:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "12546:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12546:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "12522:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27681,
                  "nodeType": "ExpressionStatement",
                  "src": "12522:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27682,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "12729:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27684,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "12729:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27695,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27633,
                              "src": "12876:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27691,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27623,
                                    "src": "12828:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27692,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "12828:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27688,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27621,
                                    "src": "12791:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27689,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "12791:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "12791:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12791:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "12791:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12791:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27685,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27623,
                            "src": "12748:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27686,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "12748:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "12748:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27697,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12748:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "12729:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27699,
                  "nodeType": "ExpressionStatement",
                  "src": "12729:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27700,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "12914:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27702,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "12914:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 27732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 27707,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27621,
                                  "src": "12999:5:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                    "typeString": "struct ANNTerms memory"
                                  }
                                },
                                "id": 27708,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "contractRole",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22679,
                                "src": "12999:18:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_ContractRole_$22539",
                                  "typeString": "enum ContractRole"
                                }
                              ],
                              "id": 27706,
                              "name": "roleSign",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23339,
                              "src": "12990:8:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                                "typeString": "function (enum ContractRole) pure returns (int8)"
                              }
                            },
                            "id": 27709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12990:28:87",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 27730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27720,
                                        "name": "terms",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27621,
                                        "src": "13179:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                          "typeString": "struct ANNTerms memory"
                                        }
                                      },
                                      "id": 27721,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "contractRole",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22679,
                                      "src": "13179:18:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ContractRole_$22539",
                                        "typeString": "enum ContractRole"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_ContractRole_$22539",
                                        "typeString": "enum ContractRole"
                                      }
                                    ],
                                    "id": 27719,
                                    "name": "roleSign",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23339,
                                    "src": "13170:8:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                                      "typeString": "function (enum ContractRole) pure returns (int8)"
                                    }
                                  },
                                  "id": 27722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13170:28:87",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int8",
                                    "typeString": "int8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27726,
                                            "name": "state",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27623,
                                            "src": "13301:5:87",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                              "typeString": "struct State memory"
                                            }
                                          },
                                          "id": 27727,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "accruedInterest",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22650,
                                          "src": "13301:21:87",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27723,
                                            "name": "state",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27623,
                                            "src": "13239:5:87",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                              "typeString": "struct State memory"
                                            }
                                          },
                                          "id": 27724,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "nextPrincipalRedemptionPayment",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22660,
                                          "src": "13239:36:87",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "id": 27725,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 38819,
                                        "src": "13239:61:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                          "typeString": "function (int256,int256) pure returns (int256)"
                                        }
                                      },
                                      "id": 27728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13239:84:87",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 27729,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13217:124:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "13170:171:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 27716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 27711,
                                            "name": "terms",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 27621,
                                            "src": "13060:5:87",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                              "typeString": "struct ANNTerms memory"
                                            }
                                          },
                                          "id": 27712,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "contractRole",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 22679,
                                          "src": "13060:18:87",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ContractRole_$22539",
                                            "typeString": "enum ContractRole"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_ContractRole_$22539",
                                            "typeString": "enum ContractRole"
                                          }
                                        ],
                                        "id": 27710,
                                        "name": "roleSign",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23339,
                                        "src": "13051:8:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_ContractRole_$22539_$returns$_t_int8_$",
                                          "typeString": "function (enum ContractRole) pure returns (int8)"
                                        }
                                      },
                                      "id": 27713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13051:28:87",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int8",
                                        "typeString": "int8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 27714,
                                        "name": "state",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 27623,
                                        "src": "13098:5:87",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                          "typeString": "struct State memory"
                                        }
                                      },
                                      "id": 27715,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "notionalPrincipal",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 22648,
                                      "src": "13098:23:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "13051:70:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 27717,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13033:102:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "id": 27718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "min",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24211,
                              "src": "13033:119:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                "typeString": "function (int256,int256) pure returns (int256)"
                              }
                            },
                            "id": 27731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13033:322:87",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "12990:365:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27703,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27623,
                            "src": "12940:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27704,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "notionalPrincipal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22648,
                          "src": "12940:23:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38819,
                        "src": "12940:36:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12940:425:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "12914:451:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27735,
                  "nodeType": "ExpressionStatement",
                  "src": "12914:451:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27736,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27623,
                        "src": "13376:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27738,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "13376:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27739,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27625,
                      "src": "13395:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13376:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27741,
                  "nodeType": "ExpressionStatement",
                  "src": "13376:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27742,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27623,
                    "src": "13425:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27631,
                  "id": 27743,
                  "nodeType": "Return",
                  "src": "13418:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_PR",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27621,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11909:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27620,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "11909:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27623,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11940:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27622,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "11940:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27625,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11968:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27624,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11968:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27627,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "11998:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27626,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11998:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11899:131:87"
            },
            "returnParameters": {
              "id": 27631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27630,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27745,
                  "src": "12078:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27629,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "12078:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12077:14:87"
            },
            "scope": 28167,
            "src": "11879:1558:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 27847,
              "nodeType": "Block",
              "src": "13660:978:87",
              "statements": [
                {
                  "assignments": [
                    27759
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27759,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 27847,
                      "src": "13670:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27758,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13670:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27760,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13670:24:87"
                },
                {
                  "id": 27789,
                  "nodeType": "Block",
                  "src": "13704:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27761,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27759,
                          "src": "13718:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27764,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "13782:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27765,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "13782:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27766,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13800:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27767,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "13800:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27768,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13829:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27769,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "13829:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27770,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13845:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27771,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "13845:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27763,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "13768:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13768:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27774,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27751,
                                  "src": "13896:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27775,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13910:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27776,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "13910:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27777,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13939:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27778,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "13939:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27779,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "13955:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27780,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "13955:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27773,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "13882:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13882:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27782,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27747,
                                "src": "13992:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27783,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "13992:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27784,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27747,
                                "src": "14034:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "14034:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27762,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "13738:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13738:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "13718:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27788,
                      "nodeType": "ExpressionStatement",
                      "src": "13718:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27790,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14086:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27792,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "14086:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27803,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27759,
                              "src": "14255:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27799,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "14207:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27800,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "14207:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27796,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "14158:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27797,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "14158:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "14158:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14158:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "14158:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14158:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27793,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27749,
                            "src": "14110:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27794,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "14110:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "14110:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14110:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "14086:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27807,
                  "nodeType": "ExpressionStatement",
                  "src": "14086:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27808,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14293:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27810,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "14293:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 27821,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27759,
                              "src": "14440:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27817,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27749,
                                    "src": "14392:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27818,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "14392:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27814,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27747,
                                    "src": "14355:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27815,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "14355:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 27816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "14355:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 27819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14355:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 27820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "14355:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 27822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14355:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27811,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27749,
                            "src": "14312:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27812,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "14312:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "14312:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27823,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14312:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "14293:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27825,
                  "nodeType": "ExpressionStatement",
                  "src": "14293:175:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27826,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14478:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27828,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "notionalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22648,
                      "src": "14478:23:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "302e30",
                      "id": 27829,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14504:3:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0.0"
                    },
                    "src": "14478:29:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27831,
                  "nodeType": "ExpressionStatement",
                  "src": "14478:29:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27832,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14517:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27834,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "contractPerformance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22634,
                      "src": "14517:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27835,
                        "name": "ContractPerformance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 22513,
                        "src": "14545:19:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ContractPerformance_$22513_$",
                          "typeString": "type(enum ContractPerformance)"
                        }
                      },
                      "id": 27836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "MD",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "14545:22:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                        "typeString": "enum ContractPerformance"
                      }
                    },
                    "src": "14517:50:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ContractPerformance_$22513",
                      "typeString": "enum ContractPerformance"
                    }
                  },
                  "id": 27838,
                  "nodeType": "ExpressionStatement",
                  "src": "14517:50:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27839,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27749,
                        "src": "14577:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27841,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "14577:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 27842,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27751,
                      "src": "14596:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14577:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 27844,
                  "nodeType": "ExpressionStatement",
                  "src": "14577:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27845,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27749,
                    "src": "14626:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27757,
                  "id": 27846,
                  "nodeType": "Return",
                  "src": "14619:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 27848,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_MD",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27747,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13473:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27746,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "13473:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27749,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13504:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27748,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "13504:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27751,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13532:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27750,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13532:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27753,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13562:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27752,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13562:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13463:131:87"
            },
            "returnParameters": {
              "id": 27757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27756,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 27848,
                  "src": "13642:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27755,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "13642:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13641:14:87"
            },
            "scope": 28167,
            "src": "13443:1195:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 28033,
              "nodeType": "Block",
              "src": "14855:1583:87",
              "statements": [
                {
                  "assignments": [
                    27862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27862,
                      "mutability": "mutable",
                      "name": "rate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28033,
                      "src": "14901:11:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27861,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14901:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27873,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 27872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27869,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 27865,
                            "name": "externalData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27856,
                            "src": "14922:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 27864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "14915:6:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 27863,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14915:6:87",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 27866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14915:20:87",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27867,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "14938:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27868,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "rateMultiplier",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22727,
                        "src": "14938:20:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "14915:43:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27870,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27850,
                        "src": "14961:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                          "typeString": "struct ANNTerms memory"
                        }
                      },
                      "id": 27871,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "rateSpread",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22729,
                      "src": "14961:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "14915:62:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14901:76:87"
                },
                {
                  "assignments": [
                    27875
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27875,
                      "mutability": "mutable",
                      "name": "deltaRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28033,
                      "src": "14987:16:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27874,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "14987:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27881,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27878,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27852,
                          "src": "15015:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        "id": 27879,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nominalInterestRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22654,
                        "src": "15015:25:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 27876,
                        "name": "rate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27862,
                        "src": "15006:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 38819,
                      "src": "15006:8:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 27880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15006:35:87",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14987:54:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 27898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 27885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27882,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15091:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27883,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15091:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 27884,
                            "name": "deltaRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27875,
                            "src": "15107:9:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15091:25:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 27886,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "15090:27:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 27896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27887,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15122:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27888,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15122:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 27894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 27890,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "15140:2:87",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 27889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15141:1:87",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_minus_1_by_1",
                                        "typeString": "int_const -1"
                                      }
                                    }
                                  ],
                                  "id": 27891,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15139:4:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27892,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15146:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27893,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "periodFloor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22753,
                                  "src": "15146:17:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "15139:24:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 27895,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15138:26:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15122:42:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 27897,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "15121:44:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15090:75:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27913,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 27905,
                        "name": "deltaRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27875,
                        "src": "15227:9:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 27911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 27907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "15241:2:87",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 27906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15242:1:87",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "id": 27908,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15240:4:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27909,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15247:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27910,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "periodFloor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22753,
                              "src": "15247:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "15240:24:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "id": 27912,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "15239:26:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15227:38:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 27925,
                    "nodeType": "IfStatement",
                    "src": "15223:107:87",
                    "trueBody": {
                      "id": 27924,
                      "nodeType": "Block",
                      "src": "15267:63:87",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 27922,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 27914,
                              "name": "deltaRate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27875,
                              "src": "15281:9:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 27920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "id": 27916,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "15295:2:87",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 27915,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15296:1:87",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      }
                                    ],
                                    "id": 27917,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15294:4:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 27918,
                                      "name": "terms",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 27850,
                                      "src": "15301:5:87",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                        "typeString": "struct ANNTerms memory"
                                      }
                                    },
                                    "id": 27919,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "periodFloor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22753,
                                    "src": "15301:17:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "15294:24:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 27921,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15293:26:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "15281:38:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 27923,
                          "nodeType": "ExpressionStatement",
                          "src": "15281:38:87"
                        }
                      ]
                    }
                  },
                  "id": 27926,
                  "nodeType": "IfStatement",
                  "src": "15086:244:87",
                  "trueBody": {
                    "id": 27904,
                    "nodeType": "Block",
                    "src": "15167:50:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27899,
                            "name": "deltaRate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27875,
                            "src": "15181:9:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27900,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15193:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27901,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15193:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15181:25:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27903,
                        "nodeType": "ExpressionStatement",
                        "src": "15181:25:87"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 27933,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 27927,
                      "name": "rate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27862,
                      "src": "15339:4:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 27931,
                          "name": "deltaRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27875,
                          "src": "15376:9:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27928,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27852,
                            "src": "15346:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27929,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "nominalInterestRate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22654,
                          "src": "15346:25:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "15346:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 27932,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15346:40:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "15339:47:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 27934,
                  "nodeType": "ExpressionStatement",
                  "src": "15339:47:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 27944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27935,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15433:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27936,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeCap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22747,
                        "src": "15433:13:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 27937,
                        "name": "rate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27862,
                        "src": "15449:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15433:20:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27939,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15457:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27940,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeCap",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22747,
                        "src": "15457:13:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27941,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15473:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27942,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeFloor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22749,
                        "src": "15473:15:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15457:31:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "15433:55:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 27954,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 27951,
                        "name": "rate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27862,
                        "src": "15545:4:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 27952,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27850,
                          "src": "15552:5:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                            "typeString": "struct ANNTerms memory"
                          }
                        },
                        "id": 27953,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "lifeFloor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22749,
                        "src": "15552:15:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "src": "15545:22:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 27961,
                    "nodeType": "IfStatement",
                    "src": "15541:75:87",
                    "trueBody": {
                      "id": 27960,
                      "nodeType": "Block",
                      "src": "15569:47:87",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 27958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 27955,
                              "name": "rate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27862,
                              "src": "15583:4:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27956,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15590:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27957,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lifeFloor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22749,
                              "src": "15590:15:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "src": "15583:22:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "id": 27959,
                          "nodeType": "ExpressionStatement",
                          "src": "15583:22:87"
                        }
                      ]
                    }
                  },
                  "id": 27962,
                  "nodeType": "IfStatement",
                  "src": "15429:187:87",
                  "trueBody": {
                    "id": 27950,
                    "nodeType": "Block",
                    "src": "15490:45:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 27948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 27945,
                            "name": "rate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27862,
                            "src": "15504:4:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 27946,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27850,
                              "src": "15511:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 27947,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "lifeCap",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22747,
                            "src": "15511:13:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "15504:20:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 27949,
                        "nodeType": "ExpressionStatement",
                        "src": "15504:20:87"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    27964
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 27964,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28033,
                      "src": "15626:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 27963,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "15626:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 27965,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15626:24:87"
                },
                {
                  "id": 27994,
                  "nodeType": "Block",
                  "src": "15660:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 27992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 27966,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27964,
                          "src": "15674:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27969,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27852,
                                    "src": "15738:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 27970,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "15738:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27971,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15756:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27972,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "15756:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27973,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15785:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27974,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "15785:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27975,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15801:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27976,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "15801:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27968,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "15724:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15724:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 27979,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27854,
                                  "src": "15852:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27980,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15866:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27981,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "15866:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27982,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15895:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27983,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "15895:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 27984,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27850,
                                    "src": "15911:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 27985,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "15911:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 27978,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "15838:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 27986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15838:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27987,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15948:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27988,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "15948:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 27989,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 27850,
                                "src": "15990:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 27990,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "15990:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 27967,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "15694:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 27991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15694:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "15674:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 27993,
                      "nodeType": "ExpressionStatement",
                      "src": "15674:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 27995,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16042:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 27997,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "16042:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28008,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27964,
                              "src": "16211:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28004,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27852,
                                    "src": "16163:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28005,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "16163:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28001,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 27852,
                                    "src": "16114:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28002,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "16114:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 28003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "16114:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 28006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16114:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 28007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "16114:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 28009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16114:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 27998,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27852,
                            "src": "16066:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 27999,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "16066:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "16066:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 28010,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16066:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "16042:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28012,
                  "nodeType": "ExpressionStatement",
                  "src": "16042:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28013,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16249:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28015,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nominalInterestRate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22654,
                      "src": "16249:25:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 28016,
                      "name": "rate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27862,
                      "src": "16277:4:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "16249:32:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28018,
                  "nodeType": "ExpressionStatement",
                  "src": "16249:32:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28019,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16291:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28021,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nextPrincipalRedemptionPayment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22660,
                      "src": "16291:36:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 28022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16330:1:87",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "16291:40:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28024,
                  "nodeType": "ExpressionStatement",
                  "src": "16291:40:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28025,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27852,
                        "src": "16377:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28027,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "16377:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 28028,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27854,
                      "src": "16396:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16377:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 28030,
                  "nodeType": "ExpressionStatement",
                  "src": "16377:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28031,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27852,
                    "src": "16426:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 27860,
                  "id": 28032,
                  "nodeType": "Return",
                  "src": "16419:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 28034,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_RR",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 27857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27850,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14674:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27849,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "14674:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27852,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14705:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27851,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14705:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27854,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14733:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27853,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14733:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27856,
                  "mutability": "mutable",
                  "name": "externalData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14763:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 27855,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14763:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14664:125:87"
            },
            "returnParameters": {
              "id": 27860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 27859,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28034,
                  "src": "14837:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 27858,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "14837:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14836:14:87"
            },
            "scope": 28167,
            "src": "14644:1794:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 28165,
              "nodeType": "Block",
              "src": "16661:1264:87",
              "statements": [
                {
                  "assignments": [
                    28048
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 28048,
                      "mutability": "mutable",
                      "name": "timeFromLastEvent",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 28165,
                      "src": "16671:24:87",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 28047,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "16671:6:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 28049,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16671:24:87"
                },
                {
                  "id": 28078,
                  "nodeType": "Block",
                  "src": "16705:373:87",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 28076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 28050,
                          "name": "timeFromLastEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28048,
                          "src": "16719:17:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28053,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "16783:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28054,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "statusDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22636,
                                  "src": "16783:16:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28055,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16801:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28056,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "16801:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28057,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16830:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28058,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "16830:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28059,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16846:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28060,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "16846:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 28052,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "16769:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 28061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16769:96:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 28063,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28040,
                                  "src": "16897:12:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28064,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16911:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28065,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22683,
                                  "src": "16911:27:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28066,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16940:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28067,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22677,
                                  "src": "16940:14:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28068,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "16956:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28069,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22705,
                                  "src": "16956:18:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 28062,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "16883:13:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 28070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16883:92:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28071,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28036,
                                "src": "16993:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 28072,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "dayCountConvention",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22681,
                              "src": "16993:24:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 28073,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28036,
                                "src": "17035:5:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                  "typeString": "struct ANNTerms memory"
                                }
                              },
                              "id": 28074,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "maturityDate",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22705,
                              "src": "17035:18:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_DayCountConvention_$22577",
                                "typeString": "enum DayCountConvention"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 28051,
                            "name": "yearFraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23450,
                            "src": "16739:12:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_enum$_DayCountConvention_$22577_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (uint256,uint256,enum DayCountConvention,uint256) pure returns (int256)"
                            }
                          },
                          "id": 28075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16739:328:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "src": "16719:348:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 28077,
                      "nodeType": "ExpressionStatement",
                      "src": "16719:348:87"
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28079,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28038,
                        "src": "17087:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28081,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "accruedInterest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22650,
                      "src": "17087:21:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28092,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28048,
                              "src": "17256:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28088,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "17208:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28089,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "17208:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28085,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "17159:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28086,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nominalInterestRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22654,
                                  "src": "17159:25:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 28087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "17159:48:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 28090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17159:73:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 28091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "17159:96:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 28093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17159:115:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 28082,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28038,
                            "src": "17111:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 28083,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "accruedInterest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22650,
                          "src": "17111:21:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "17111:34:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 28094,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17111:173:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "17087:197:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28096,
                  "nodeType": "ExpressionStatement",
                  "src": "17087:197:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28097,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28038,
                        "src": "17294:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28099,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "feeAccrued",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22652,
                      "src": "17294:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 28110,
                              "name": "timeFromLastEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28048,
                              "src": "17441:17:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28106,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28038,
                                    "src": "17393:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                      "typeString": "struct State memory"
                                    }
                                  },
                                  "id": 28107,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "notionalPrincipal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22648,
                                  "src": "17393:23:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 28103,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28036,
                                    "src": "17356:5:87",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                      "typeString": "struct ANNTerms memory"
                                    }
                                  },
                                  "id": 28104,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeRate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22733,
                                  "src": "17356:13:87",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "id": 28105,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "floatMult",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24120,
                                "src": "17356:36:87",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                  "typeString": "function (int256,int256) pure returns (int256)"
                                }
                              },
                              "id": 28108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17356:61:87",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "id": 28109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "floatMult",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24120,
                            "src": "17356:84:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                              "typeString": "function (int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 28111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17356:103:87",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 28100,
                            "name": "state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28038,
                            "src": "17313:5:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                              "typeString": "struct State memory"
                            }
                          },
                          "id": 28101,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "feeAccrued",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 22652,
                          "src": "17313:16:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 38859,
                        "src": "17313:29:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                          "typeString": "function (int256,int256) pure returns (int256)"
                        }
                      },
                      "id": 28112,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17313:156:87",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "src": "17294:175:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "id": 28114,
                  "nodeType": "ExpressionStatement",
                  "src": "17294:175:87"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 28127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28115,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17485:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28116,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17485:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28117,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17508:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28118,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "I00",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17508:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17485:40:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28120,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17484:42:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28121,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17531:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28122,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17531:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28123,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17554:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "IN0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17554:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17531:40:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28126,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17530:42:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17484:88:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 28135,
                  "nodeType": "IfStatement",
                  "src": "17480:182:87",
                  "trueBody": {
                    "id": 28134,
                    "nodeType": "Block",
                    "src": "17574:88:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28128,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28038,
                              "src": "17588:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 28130,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "interestScalingMultiplier",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22656,
                            "src": "17588:31:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17622:1:87",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17588:35:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28133,
                        "nodeType": "ExpressionStatement",
                        "src": "17588:35:87"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 28148,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28136,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17676:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28137,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17676:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28138,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17699:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "_0N0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17699:18:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17676:41:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28141,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17675:43:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                            "typeString": "enum ScalingEffect"
                          },
                          "id": 28146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28142,
                              "name": "terms",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28036,
                              "src": "17723:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                                "typeString": "struct ANNTerms memory"
                              }
                            },
                            "id": 28143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scalingEffect",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22687,
                            "src": "17723:19:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28144,
                              "name": "ScalingEffect",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22623,
                              "src": "17746:13:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ScalingEffect_$22623_$",
                                "typeString": "type(enum ScalingEffect)"
                              }
                            },
                            "id": 28145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "IN0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "17746:17:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ScalingEffect_$22623",
                              "typeString": "enum ScalingEffect"
                            }
                          },
                          "src": "17723:40:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 28147,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17722:42:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "17675:89:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 28156,
                  "nodeType": "IfStatement",
                  "src": "17671:183:87",
                  "trueBody": {
                    "id": 28155,
                    "nodeType": "Block",
                    "src": "17766:88:87",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 28153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 28149,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28038,
                              "src": "17780:5:87",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                                "typeString": "struct State memory"
                              }
                            },
                            "id": 28151,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "notionalScalingMultiplier",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 22658,
                            "src": "17780:31:87",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 28152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17814:1:87",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17780:35:87",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 28154,
                        "nodeType": "ExpressionStatement",
                        "src": "17780:35:87"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 28157,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28038,
                        "src": "17864:5:87",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      "id": 28159,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "statusDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22636,
                      "src": "17864:16:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 28160,
                      "name": "scheduleTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 28040,
                      "src": "17883:12:87",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "17864:31:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 28162,
                  "nodeType": "ExpressionStatement",
                  "src": "17864:31:87"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 28163,
                    "name": "state",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 28038,
                    "src": "17913:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "functionReturnParameters": 28046,
                  "id": 28164,
                  "nodeType": "Return",
                  "src": "17906:12:87"
                }
              ]
            },
            "documentation": null,
            "id": 28166,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "STF_ANN_SC",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 28043,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28036,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16474:21:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ANNTerms_$22768_memory_ptr",
                    "typeString": "struct ANNTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28035,
                    "name": "ANNTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22768,
                    "src": "16474:8:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ANNTerms_$22768_storage_ptr",
                      "typeString": "struct ANNTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28038,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16505:18:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28037,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16505:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28040,
                  "mutability": "mutable",
                  "name": "scheduleTime",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16533:20:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 28039,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16533:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28042,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16563:7:87",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 28041,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "16563:7:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16464:131:87"
            },
            "returnParameters": {
              "id": 28046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28045,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 28166,
                  "src": "16643:12:87",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 28044,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "16643:5:87",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "16642:14:87"
            },
            "scope": 28167,
            "src": "16444:1481:87",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 28168,
        "src": "243:17684:87"
      }
    ],
    "src": "41:17887:87"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.341Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))": {
        "details": "The following is considered to dertermine if schedule dates are shifted to the end of month: - The convention SD (same day) means not adjusting, EM (end of month) means adjusting - Dates are only shifted if the schedule start date is an end-of-month date - Dates are only shifted if the schedule cycle is based on an \"M\" period unit or multiple thereof",
        "params": {
          "cycle": "the cycle struct",
          "eomc": "the end of month convention to adjust",
          "startTime": "timestamp of the cycle start"
        },
        "returns": {
          "_0": "the adjusted end of month convention"
        }
      },
      "computeEventTimeForEvent(bytes32,uint8,uint8,uint256)": {
        "details": "For optimization reasons not located in EventUtil by applying the BDC specified in the terms"
      }
    },
    "title": "STF",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "adjustEndOfMonthConvention(uint8,uint256,(uint256,uint8,uint8,bool))": {
        "notice": "This function makes an adjustment on the end of month convention."
      },
      "computeEventTimeForEvent(bytes32,uint8,uint8,uint256)": {
        "notice": "Returns the event time for a given schedule time"
      },
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "Contains all state transition functions (STFs) currently used by all Engines",
    "version": 1
  }
}